객체지향의 사실과 오해 - 역할,책임,협력 관점에서 본 객체지향

최태선·2022년 3월 8일

책정리

목록 보기
2/2

책임의 분류

하는것 : 자신이나 다른객체의 활동을 제어하고 조절하는 등의 행위
아는것 : 알고있는 정보, 관련된 객체에 대해 아는 정보

추상화

동일역할을 개체들이 동일하게 진행할 때 이것을 추상화하여 간단하게 만들 수 있다.
ex ) 지우 피카츄 롱스톤 싸운다 -> 플레이어 플레이어포켓몬 적 포켓몬 싸운다 (추상화)

객체지향은 협력이다

객체가 존재하는 이유는 협력에 참여하기 위해서이다. 즉 데이터가 중요한 것이 아니라 객체의 행동이 중요하다.

객체지향에서 중요한 것은 정적인 클래스가 아니라 협력에 참여하는 동적인 객체이다.

'왕'클래스를 설계할때 근엄한 수염을 기른 왕을 떠올리고 설계하지 말아라. '왕'을 설계하려면 왕이 참여하는 협력을 우선으로 고려해야한다. ex 판사의 역할

객체지향 설계기법

책임 - 주도 설계 : 협력에 필요한 책임을 식별하고 적합한 객체에 할당하는 방식

디자인패턴 : 전문가들이 이미 필요한 방법을 정의해놓은 템플릿모음

테스트-주도 개발 : 책임을 수행할 객체의 역할이 메시지를 수신할때 어떤 결과를 반환하고 그 과정에서 어떤 객체와 협력할것인지에 대한 기대를 코드의 형태로 작성하며 테스트 하는 방법

적절한 자율적인 책임

객체지향에서 적절히 자율적인 책임이 중요하다.
ex "증언하라" 라는 것은 그 형식을 제한하지 않기 때문에 여러 방향으로 이벤트를 전달가능 하다. -> 서면보고, 말로 보고 등
"생각해서 말로 보고하라"는 그 범위를 제한한다. -> 자율을 제한 -> 좁은범위
"설명하라"는 그 범위를 넓힌다 -> 추상적 -> 넓은범위

인터페이스 설계원칙

메세지를 따라라.. 그러면 최소 인터페이스를 찾을 수 있을 것이다. 인터페이스는 불필요한 메서드 없이 최소한의 필요정보, 메소드를 포함하는 것이 좋다.

송신자와 수신자가 구체적인 구현부분이 아니라 느슨한 인터페이스에 대해서만 결합되도록 만드는 것이 중요하다.

0개의 댓글