우아한테크코스 5기/학습 로그

우아한테크코스 5기/학습 로그

함수형 인터페이스의 정의 & 사용 예제

🎯 1. 함수형 인터페이스의 정의 추상 메소드를 단 하나만 가지고 있는 인터페이스 default 메소드 & static 메소드를 여러개 가지고 있더라도 추상 메소드가 하나면 함수형 인터페이스이다. @FunctionalInterface public interface Predicate { boolean test(T t); } ※ @FunctionalInterface 해당 인터페이스가 함수형 인터페이스임을 선언하는 어노테이션 해당 어노테이션이 없더라도, 추상 메소드가 하나이면 함수형 인터페이스로 동작한다. 👉 그렇다면, 왜 @FunctionalInterface를 사용할까? @FunctionalInterface 어노테이션이 있으면, 추상 메소드가 2개 이상이면 컴파일 오류를 발생시킨다. 따라서, 검증 및 유지 ..

우아한테크코스 5기/학습 로그

instanceof 사용을 지양하기 - Why? Solution?

🎯 0. 주제 선정 이유 이전 블랙잭 미션에서 간간히 캠퍼스에서 ‘instanceof를 지양해야한다!’라는 소리가 들려왔는데, 블랙잭 미션에서는 instanceof를 사용할 경우가 없었어서 공감하지 못했다. 하지만 이번 체스 미션에서 2번 instanceof를 사용하게 되었다. ‘instanceof를 지양해야한다!’라는 소리를 들어서 지양하고 싶었지만, instanceof 대신 어떤 방법을 사용해야할지 몰라서 instanceof를 사용하게 됐었다. 따라서 이번에 instanceof를 왜 지양해야하는지를 알아보고, instanceof를 쓰지 않고 어떻게 해결할 수 있는지를 알아보자. 🎯 1. instanceof가 뭐지? 다들 클래스의 인스턴스(instance) 라는 말은 적어도 한번은 들어봤을 것이다. 객..

우아한테크코스 5기/학습 로그

VO(Value Object)는 무엇일까? 왜 사용할까?

1. VO(Value Object)란? VO의 의미를 보면 다음과 같다. * VO란 도메인에서 한 개 또는 그 이상의 속성들을 묶어서 특정 값을 나타내는 객체를 의미한다. * 해당 속성들을 primitive 타입이다! (int, boolean, ...) 여기서는 의미만 간단하게 살펴보고, 아래에서 VO의 예시를 살펴보면서 이해해보자. 2. VO, 그래서 왜 쓰는건데? VO가 필요한 이유는, primitive 타입이 도메인 객체를 모델링하기 위해 충분하지 않기 때문이다. primitive 타입으로는 도메인에서 의미 있는 값으로 인식하기 힘들다. 지금부터 VO가 필요한 이유를 살펴보자. 🎯 2-1. primitive 타입의 기능들을 객체가 전부 사용하지 않는다. '사다리 타기 게임'을 예시로 들어보자. 사다..

우아한테크코스 5기/학습 로그

도메인에 처음 접근하기 - Out -> In / In -> Out 접근 방식

우테코 강의에서 처음 보는 도메인에 접근할 때의 방식 2가지를 소개해줬다. 1. Out -> In 접근 방식 2. In -> Out 접근 방식 1. Out → In 접근 방식 VS In → Out 접근 방식 * Out -> In 접근 방식 - 큰 관점에서 접근하는 방식 ex : 사다리 한 개의 의미가 뭘까? 사다리 한 라인은 뭘까? 사다리 전체가 있고, 사다리 한 라인이 있네! * In -> Out 접근 방식 - 가장 작은 단위를 찾아서 접근하는 방식 ex : 이게 가장 작은 단위인 것 같으니, 여기부터 시작해보자. 작은 것부터 하고, 이걸 합치다보니 완성되어 있다. 이 접근 방식은 취향의 차이지만 좀 더 적합한 것은 존재한다. Out → In 방식은 도메인 지식이 없거나 요구사항을 객체로 도출할 수 없..

우아한테크코스 5기/학습 로그

포장 값을 View로 전달하는 방식으로 무엇을 사용할까?

들어가기 전 해당 내용은 지극히 주관적이어서, 사람마다 생각이 다를 수 있는 부분이다. 그래서 이게 정답이라고 생각하기 보다, 이 사람은 이렇게 생각하는구나! 정도로 이해하면 될 것 같다! 0. 고민 상황 우선, 현재 미션 구조에서 MVC 패턴을 사용하고 있다. 또한, 원시 값을 포장하라는 요구사항을 받아서 여러 포장 클래스들이 존재한다. Player 객체는 이름을 가지고 있고, 해당 이름은 문자열 String이 아닌 포장 클래스인 Name을 가진다. 고민 상황은, Player의 Name을 View에 전달하고자 한다. 이때, 어떻게 Player의 Name을 View에게 전달해야할까? 1. 포장 값을 View로 전달하는 방식 MVC패턴에서 포장 값을 View로 전달하는 방식으로는 다음과 같이 2가지 방식이..

우아한테크코스 5기/학습 로그

[Java] ArrayList, LinkedList를 직접 구현해보며 이해한 것

0. 들어가기 전 우테코에서 미니 미션으로 '리스트 구현하기'를 시켰다. ArrayList, LinkedList 두 개를 직접 구현해보는 것이었는데, 처음 해보는 것이라서 신선했다. 가끔씩 모르는 메소드, 클래스들이 나오면 그 클래스를 들어가서 직접 코드를 뜯어보기 때문에 코드를 들어가보는 것에는 익숙했지만, 그래도 단순히 사용하기만 했었던 ArrayList, LinkedList를 직접 구현해야한다니 막막했다. 게다가 LinkedList는 어떤 원리인지도 자세히 알지 못했고 많이 사용해본 적도 없어서 더 막막했던 것 같다. 직접 구현한 코드들은 거의 ArrayList, LinkedList를 복붙한 내용이라서 자세하게는 기록하지 않고 미션을 진행하면서 내가 이해한 점들을 기록해보고자 한다. (내가 코드를 ..

BE_성하
'우아한테크코스 5기/학습 로그' 카테고리의 글 목록