TIR: 객체지향의 사실과 오해 | (3~5)

Lumpen·2023년 1월 27일
0

OOP

목록 보기
3/5

프로세스 전체가 해결해야할 공동의 목표가 있고
목표를 위해 해야할 일인 책임을 적절하게 분배하여
각 객체에게 역할을 주어야 한다
역할, 책임, 협력을 고려하여 객체를 작성해야 하는데
각 객체들은 메시지를 통해 소통하고
서로 어떤 일을 하는지는 알 수 없다 (캡슐화)
어떻게 하느냐 보다는 무엇을 하는지에 초점을 맞춰 메시지를 주고 받는다
하는 일이 같다면 각 객체는 다른 객체로 대체될 수 있다 (다형성)
각 객체는 인터페이스를 통해 메시지를 주고 받는다
인터페이스는 메시지 목록으로 구성된다
메시지가 인터페이스를 결정한다
객체는 모두 메시지로만 소통하며, 자기 자신에 대해서도 마찬가지다
여러 곳에서 사용하기 위한 인터페이스를 공용 인터페이스라고 하고,
인터페이스, 공용 인터페이스 모두 메시지로만 접근할 수 있다
인터페이스는 메시지의 통로와 같다
what/who 사이클로 책임과 메시지 결정 후 객체를 결정하기 때문에
인터페이스 또한 메시지가 있어야 생성할 수 있다
인터페이스와 객체를 작성하기 이전에 어떤 메시지를 주고 받는지를 고려해야 한다
메시지를 받으면 어떤 일을 해야하는지 정의하고
가장 마지막에 해야하는 일에 필요한 데이터를 결정한다

흔히 객체지향에 대해 이야기하는
추상화, 클래스, SOLID 등도 중요하지만
그 위에 근본적으로 객체지향이 무엇을 하는 것인지
더 중요한 부분에 대해서 설명하기 때문에

단순히 현실을 추상화한다고만 표현하기에는 어려운 부분이 맞는 것 같다
하지만 현실을 추상화하는 것은 맞다

RDD (책임 주도 설계) - 디자인 패턴 - TDD (테스트 주도 설계)

RDD
협력에 필요한 책임들을 식별하고 적합한 객체에게 책임을 할당하는 방식으로
결과적으로 요청과 응답을 통한 객체들 간의 협력 관계가 구성된다

디자인 패턴
RDD 설계의 결과로, 반복적으로 사용하는 문제해결을 위한 설계 템플릿(역할, 책임, 협력)의 모음
특정 상황과 문제에 공통으로 사용할 수 있기 때문에 역할과 책임, 협력 관계를 빠르고 손쉽게 포착할 수 있다

TDD
테스트를 먼저 작성하고 테스트를 통과하는 구체적인 코드를 작성하는 방식
객체의 역할이 메시지를 수신할 때 어떤 결과를 반환하고 어떤 협력을 하는지에 대한 기대를 코드의 형태로 작성한다
객체지향에 대한 깊이 있는 지식과 RDD 설계의 원칙에 대한 종합적인 이해가 요구되는 개발 방식이다

각 키워드별 상세 설명을 정리해서 작성해놓아야 할 것이다..

profile
떠돌이 생활을 하는. 실업자는 아니지만, 부랑 생활을 하는

0개의 댓글