JAVA/Language(48)
-
다형성(Polymorphism)
다형성이란 무엇인가? 다형성은 역할과 구현이라는 개념을 분리한 기술이라고 생각합니다. 역할은 어떤 기능들을 수행할 수 있는 모음이고 실체가 존재하지 않는 개념입니다. 구현은 역할안에 있는 기능들을 실제로 수행하는 대상이라고 표현할 수 있습니다. 구현은 역할과는 다르게 실체를 가지고 있는 대상입니다. 즉, 정리하면 다음과 같습니다. 다형성 : 역하과 구현 개념을 분리한 기술 역할 : 어떤 기능들을 수행할 수 있는 모음 구현 : 역할안에 있는 기능들을 실제로 수행하는 대상 다형성 비유 다형성을 비유하면 자동차로 비유할 수 있습니다. 운전자가 자동차를 운전할 때 소나타를 운전하다가 아반떼로 바꾸어 운전해도 큰 어려움이 없습니다. 왜냐하면 자동차의 기능인 엑셀, 브레이크와 같은 표준 기능들이 소나타나 아반떼가 ..
2023.04.23 -
객체지향 언어 특징 (캡슐화, 상속, 추상화, 다형성)
목차 OOP 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) OOP(Object-Oriented-Programming) 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) 캡슐화(Encapsulation) 캡슐화는 외부의 접근으로부터 클래스의 자세한 정보인 필드 멤버와 메소드를 숨기는 방법입니다. 그리고 캡슐화가 적용된 클래스는 오직 public 인터페이스를 통하여 인터페이스의 메소드(메시지)를 노출합니다. 상속(Inheritance) 상속은 한 클래스가 또 다른 클래스의 필드 멤버와 메소드 기능들을 사용할 수 있도록 하는 것입니다. 자바에서 상..
2023.03.29 -
Mokito 모듈을 이용한 Random 객체 통제하기
개요 코드스쿼드 부트캠프를 하면서 사다리 게임을 구현하던 도중 Random 객체를 사용할 일이 있었습니다. 그리고 단위 테스트에서 Random 객체를 사용할 수 밖에 없었고 Random 객체의 nextBoolean() 메서드 실행시 제가 원하는 값과 순서로 반환되기를 원하였습니다. 이 글에서는 Mokito 모듈을 이용하여 Random 객체의 nextBoolean() 메서드 호출시 어떻게 하면 원하는 값(true 또는 false)을 반환하게 하고 어떤 순서로 설정할 수 있는지 알아봅니다. Random 객체를 다루면서 했던 실수 저는 보통 Random 객체를 생성할때 외부에서 생성자로 주입받는 방식이 아닌 생성자 내부에서 필드 멤버인 Random 멤버에 객체를 생성하는 방식으로 생성하였습니다. class P..
2023.03.10 -
[Java][Optional] Optional의 위험 및 사용 가이드
1. Optional 클래스가 위험한 이유 NullPointerException 대신 NoSuchElementException이 발생 할 수 있음 이전에는 없었던 문제가 발생할 수 있음 코드의 가독성 저하 시간적, 공간적 비용 증가 1.1 NullPointerException 대신 NoSuchElementException이 발생할 수 있음 @Test(expected = NoSuchElementException.class) public void testNoSuchElementException(){ //given Optional optional = Optional.ofNullable(null); //when String actual = optional.get(); //then fail("NoSuchEleme..
2022.11.28 -
[Java][Optional] Optional 클래스를 통한 Null 처리
1. Optional 클래스의 개념 1.1 NPE(NullPointerException)란 무엇인가? NPE란 null을 가리키고 있는 객체가 객체의 멤버를 참조하려고 할때 발생하는 예외입니다. 다음 예시는 null값을 가지는 문자열 객체가 메서드를 호출하려고 하는 예시입니다. public boolean isHello(String text){ return text.equals("hello"); } text는 null이기 때문에 NullPointerException 예외가 발생합니다. 위와 같은 경우를 막기 위해서 조건문을 통해서 null인지 검사를 하고 호출할 수 있습니다. public boolean isHello(String text){ if(text != null){ return text.equals..
2022.11.28 -
[java][lambda] 람다식(Lambda Expression)
1. 람다식이란 무엇인가? 람다식(Lambda Expression)이란 메서드를 하나의 '식(expression)'으로 표현한 것입니다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'이라고도 합니다. 예를 들어 1~5사이의 랜덤한 수를 반환하는 메서드를 정의한다면 다음과 같이 정의할 수 있을 것입니다. int method(){ return (in)(Math.random()*5)+1; } 위와 같은 메서드 정의를 다음과 같이 람다식으로 표현할 수 있습니다. () -> (int)(Math.random() * 5) + 1) 람다식의 특징 클래스의 생성 없이 람다식 자체만으로 메서드의 역할을 수행할 수 있음 람다식은 메서드의 매개변수..
2022.08.23