오브젝트를 읽고 - 1일차

박세건·2023년 11월 26일
0

오브젝트

목록 보기
1/3

우테코의 프리코스를 진행하면서 객체지향에 대해 관심이 생겼고 이를 더 공부해보고 싶어서 '오브젝트' 라는 책을 공부하기로 했습니다!

알게된 것

  • 유연성을 억제하면 코드를 이해하고 디버깅하기는 쉬워지지만 재사용성과 확장 가능성은 낮아진다.

  • 자식 클래스가 부모 클래스를 대신하는 것을 '업캐스팅' 이라고 한다.

  • 하나의 객체에게 동일한 메시지를 전송하지만 실행될 메서드는 메시지를 수신하는 객체의 클래스가 무엇이냐에 따라 달라진다 -> 다형성

  • 메시지에 응답하기위한 메서드가 컴파일 시점이 아닌 실행 시점에 결정된다.

  • 예외 케이스를 최소화하고 일관성을 유지할 수 있는 방법을 선택한다.
    -> 할인 정책을 구현하고 있다면 null임을 확인해서 할인값을 0으로 설정하는 것이 아닌 NoneDiscountPolicy 클래스를 구현한다.

  • 트레이드오프 : 하나를 얻으면 하나를 잃는 관계

  • 상속의 단점 : 캡슐화가 약화된다. 부모클래스를 변경하면 자식 클래스도 변경될 확률을 높인다.

  • 다형성이 지연 바인딩이라는 메커니즘을 통해 구현된다
    -> 실행후에 연관되는 객체가 정해지는 것

  • 합성 : 재사용을 없애기 위해 상속을 사용하는 방법 보다는 합성, 즉 객체를 속성으로 가져와서 사용하는 것이 더 좋은 방법이라는 것

  • 객체지향에서 가장 중요한 것은 역할, 책임, 협력

  • 객체는 자신의 상태를 직접 관리하고 스스로 결정해서 메세지에 응답한다. 자율성!

  • 객체가 참여하는 협력이 객체를 구성하는 행동(책임)과 상태(속성) 모두를 결정한다.

  • 객체를 '하는 것' 과 '아는 것'의 두가지 범주로 세분화 해보기

    하는 것!

    객체를 생성하거나 계산을 수행하는 등의 스스로 하는 것
    다른 객체의 행동을 시작시키는 것
    다른 객체의 활동을 제어하고 조절하는 것

    아는 것!

    사적인 정보에 관해 아는 것
    관련된 객체에 관해 아는 것
    자신이 유도하거나 계산할 수 있는 것에 관해 아는 것

  • '책임'을 능숙하게 객체에게 할당하는 것은 객체지향 개발에서 가장 중요한 능력이다.

  • 협력에 필요한 지식과 방법을 '가장 잘 알고있는 전문가에게 그 책임을 할당하는 것.'

궁금한 것

  • 역할, 책임, 협력
  • 단순한 책임이라고 생각했던 것이 여러 개의 메시지로 분할되기도 하고 하나의 객체가 수행할 수 있다고 생각했던 책임이 나중에는 여러 객체들이 협력해야만 하는 커다란 책임으로 자라는 것이 일반적이다.
profile
멋있는 사람 - 일단 하자

0개의 댓글