Ladder 5단계 다시 구현하기
안녕하세요. Brad입니다. Ladder 5단계를 기존에 제가 생각하던 로직으로 구현하였는데요. 좀 더 객체지향적으로 짜보고 싶다는 생각이 들었습니다. 그래서 5단계에서 Pobi 힌트의 구조를 참고하여 다시 짜보려고 합니다.
그럼 Pobi의 구조는 어떻게 설계되어 있을까?
사다리 한
Line
추상화 →LadderLine
한
LadderLine
의 모든Point
의 초기화와 이동 담당근데 init() 메서드에서 initFirst(), initBody(), initLast()가 의미하는 것은 뭘까?
- 우선 init() 메서드는 저기 3가지 메서드를 모두 총괄하는 메서드이네요.
- initFirst()안에
Point
의 first()메서드의 return값을Point
가 받고 있는데요. 이것은 무엇을 의미하는 걸까요?
Point
클래스- Point 의 구조는 index,
Direction
클래스의 인스턴스로 구성되어 있습니다. - 처음이랑 끝은 특수한 경우이죠. 처음은 그 전의 인덱스가 없고, 끝은 그 뒤에 인덱스가 없으니까요. 이러한 처리를 해주는 메서드가 first(), last()로 따로 있네요.
- Point 의 구조는 index,
Direction
클래스Point의 first()메서드에 Point객체 생성할 때 두번째 인자로
Direction.first(right)
로 생성하는데 이것은 무엇을 의미할까요?- 아!
Direction
은 각 Point의 좌/우 정보를 가지고 현재Point
에서 다음Point
를 생성하는 역할을 한다고 하네요.(다음Point
생성한다는 부분 조금 있다가 다시 살펴보도록 하겠습니다.) Direction
의 구조는boolean
타입의 left, right 인스턴스 매서드를 가지고 있네요.Direction
에서도Point
와 마찬가지로 한LadderLine
의 처음과 끝을 처리해주는 메서드가 따로 있네요.Direction
에서 first()매서드는 of()메서드를 return하는데요. of()메서드는 여기에서 좌/우 사다리가 있는지 유무를boolean
값을 통해 나타내고, 이를 이용하여Direction
객체를 생성하여 또 다시 이것을 return을 하네요.
- 아!
우선 LadderLine
의 init()메서드의 initFirst()메서드로부터 내려가 Point
, Direction
까지 내려가 특정 호출되는 메서드만 살펴보았는데요. 여기까지 본 내용에 대해서 정리해보겠습니다.
LadderLine
의 init()에서 한 라인에 대한 초기화를 담당한다. Init()메서드에서 한 라인의 각각의Point
들을 담아 List에 넣는다.- 각
Point
에서는 각 index 번호와Direction
객체 정보를 담고있다.Point
객체 생성할 때 그 안에서 또 다시Direction
객체를 생성하는 것이다. Direction
은 전달받은 사다리 유무(랜덤값 생성하여 전달) 를 바탕으로 of() 메서드를 호출하여 완전하게 left, right 정보가 담긴Direction
객체를 리턴한다.
오늘 살펴본 내용은 사다리 정보에 관한 초기화에 대한 것이었네요. 내일은 이동하는 부분까지 조금 더 자세히 살펴보도록 하겠습니다.
'TIL' 카테고리의 다른 글
Today's Dev Notes(2018-10-04) (0) | 2018.10.05 |
---|---|
Today's Dev Notes(2018-10-03) (0) | 2018.10.03 |
Today's Dev Notes(2018-10-02) (0) | 2018.10.02 |
Today's Dev Notes(2018-10-01) (0) | 2018.10.02 |
Today's Dev Notes(2018-09-29) (0) | 2018.09.29 |