테코톡

드디어! 테코톡을 끝냈다.

기존에 알고 있던 내용도 꽤 있어서 깊은 내용을 공부하고 싶었다.

하지만 다른 것도 바빴기 때문에 많이 준비하지는 못했다.

그래서 듣는 대상을 JCF에 대해 잘 모르는 사람으로 설정하기를 잘한 것 같다.

하나의 큰 산을 넘은듯 싶다. 앞으로 미션과 다른 공부에 집중하자!

사진 찍어준 주노, 헙크 고마워요!


블랙잭 미션을 진행하면서 상속을 사용했는데 요구사항이 추가되니 바로 구조가 깨지기 시작했다.

무작정 갈아 엎기 보다는 상속과 그 주변 개념들을 공부하고 어떻게 문제를 해결할지 생각하기로 했다.

상속

  • 상속은 Is-a 관계에서 사용한다.
  • 캡슐화를 깨뜨린다.
  • 상위 클래스의 구현이 달라지면 하위 클래스가 깨진다.
  • 같은 프로그래머가 통제하는 패키지 안에서라면 상속도 괜찮다.
  • 확장할 목적으로 설계되고 문서화가 잘 된 클래스라면 괜찮다.

하지만, 나는 내가 짠 코드도 내일이 되면 기억도 잘 안 나고 문서화는 코드 계약의 세부 조건이라 읽는 사람이 없을 거라고 생각한다. 따라서 상속을 그냥 안 쓰기로 했다.

JCF의 Stack은 push와 pop만 제공하는게 맞지만, Vector를 상속했기 때문에 add와 같은 메서드를 제공하여 스택의 구조가 안정적이지 않다.

컴포지션

기존 클래스를 확장하는 대신, 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조한다.

새 클래스의 인스턴스 메서드들은 기존 클래스에 대응하는 메서드를 호출해 그 결과를 반환한다. (전달, forwarding)

새 클래스의 메서드들을 전달 메서드(forwarding method)라고 부른다.

추상 골격 구현(skeletal implementation)

인터페이스로는 타입을 정의하고, 필요하면 디폴트 메서드 몇 개도 함께 제공한다.

골격 구현 클래스는 나머지 메서드들까지 구현한다.

템플릿 메서드 패턴

네이밍을 Abstract*** 와 같이 한다. ex) AbstractList


좀 더 자세히 알아볼 필요가 있을것 같다.

'회고 > 우아한테크코스' 카테고리의 다른 글

2023.03.14 일일 회고  (0) 2023.03.15
2023.03.13 일일 회고  (0) 2023.03.14
2023.03.08 일일 회고  (0) 2023.03.09
2023.03.07 일일 회고  (1) 2023.03.07
2023.03.02 일일 회고  (0) 2023.03.03

+ Recent posts