안녕하세요. Brad입니다. 그럼 어제에 이어서 Pobi의 소스에 대해서 마저 분석해보도록 하겠습니다.
그럼 Pobi의 구조는 어떻게 설계되어 있을까?
그럼 다시 LadderLine
으로 돌아가 어제는 initFirst() 메서드를 살펴보았으므로 initBody부터 살펴보도록 하겠습니다.
LadderLine
클래스- initBody()에서 맨 처음 인덱스, 마지막 인덱스를 제외하고 사람의 수 많큼 포인트를 만드네요. 매개변수론 (사람의 수,
Point
List, 맨 처음Point
객체)를 전달합니다. - init() 메서드에서 point객체 하나를 initFirst에서 받고 이것을 또 다시 initBody에서 받고, 마지막에 initLast에 넘겨주는데요. 이것의 역할은 initBody(), initLast()에서 바로 이전의
Point
객체 정보를 이용하기 위하여 사용합니다. - initBody()에서 호출되는 point.next()에 대해 알아봐야겠습니다.
- initBody()에서 맨 처음 인덱스, 마지막 인덱스를 제외하고 사람의 수 많큼 포인트를 만드네요. 매개변수론 (사람의 수,
Point
클래스- 여기에서 각각의
Point
객체를 새로 만들 때 바로 이전의Point
객체를 참조합니다. 이 객체를 이용하여 새로운Point
객체를 만드는데요. - 아래에선 두번째 인자인
Direction
객체를 어떻게 만들 것인가를 살펴보도록 하겠습니다.
- 여기에서 각각의
Direction
클래스- 이전
Point
객체의Direction
객체값을 토대로 사다리가 연이어 만들어지지 않게 제한할 수 있습니다. 이전Direction
객체에서 left, right 값 유무를 알 수 있기 때문입니다. - 이를 토대로 새로운
Point
내의Direction
객체도 만들어냅니다.
- 이전
move() 메서드
LadderLine
에서는 move()의 인자로 position값을 주면Point
List를 이용하여 꺼낸다음Point
의 move() 메서드를 호출합니다.Point
에서 move에서는 해당Point
객체의Direction
객체를 이용하여 객체 속성인 left, right를 getter를 이용해 값을 조사하고 이를 바탕으로 이동한 후 index값을 return합니다.
이렇게 하여 Ladder 5단계에서 Pobi hint의 구조를 전체적으로 살펴볼 수 있었습니다. 지금 당장은 어려울 수 있겠지만 이렇게 객체지향적으로 설계하기 위해 노력해봐야겠습니다.
오늘 추가적으로 공부한 부분
'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-09-30) (0) | 2018.10.01 |
Today's Dev Notes(2018-09-29) (0) | 2018.09.29 |