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 |