본문 바로가기

전체 글199

06. 메시지와 인터페이스 06. 메시지와 인터페이스태그비어 있음날짜2024년 4월 15일협력과 메시지객체는 협력에 참여하는 동안 클라이언트와 서버 역할을 동시에 수행하는 것이 일반적이다. 객체가 독립적으로 수행할 수 있는 것보다 더 큰 책임을 수행하기 위해서는 다른 객체와 협력해야 한다.메시지 : 오퍼레이션명 + 인자전통적인 방식의 함수 호출과 프로시저 호출은 다르다.전통적인 방식 : 어떤 코드가 실행될지를 정확하게 알고 있는 상황에서 함수 호출이나 프로시저 호출 구문을 작성한다. 코드의 의미가 컴파일 시점과 실행 시점에 동일하다는 것객체는 메시지와 메서드라는 두 가지 서로 다른 개념을 실행 시점에 연결해야 하기 때문에 컴파일 시점과 실행 시점의 의미가 달라질 수 있다.실행 시점에 메시지와 메서드를 바인딩하는 메커니즘은 두 객.. 2025. 3. 17.
05. 책임 할당하기 05. 책임 할당하기태그비어 있음날짜2024년 4월 5일책임 할당 과정은 일종의 트레이드오프 활동이다. 올바른 책임을 할당하기 위해서는 다양한 관점에서 설계를 평가할 수 있어야 한다.책임 주도 설계를 향해협력이라는 문맥 안에서 책임을 결정하라책임 주도 설계책임 할당을 위한 GRASP 패턴도메인 개념에서 출발하기정보 전문가에게 책임을 할당하라높은 응집도와 낮은 결합도 LOW COUPLING 패턴HIGH COHESION 패턴창조자에게 객체 생성 책임을 할당하라CREATOR 패턴구현을 통한 검증변경의 이유가 하나 이상인 클래스에 나타나는 위험 징후를 드러내는 패턴타입 분리하기 - 다형성을 통해 분리하기변경으로부터 보호하기Movie 클래스 개선하기 변경과 유연성책임 주도 설계의 대안느낀점책임 주도 설계를 향해두.. 2025. 3. 17.
04. 설계 품질과 트레이드 오프 04. 설계 품질과 트레이드 오프태그비어 있음날짜2024년 4월 4일책임이 객체지향 애플리케이션 전체의 품질을 결정한다.책임을 할당하는 작업이 응집도와 결합도 같은 설계 품질과 깊이 연관되어 있다.훌륭한 설계란 합리적인 비용 안에서 변경을 수용할 수 있는 구조를 만드는 것이다.객체를 단순한 데이터의 집합으로 바라보는 시각은 설계가 변경에 취약해진다.이번 장에서는 데이터 중심 설계와 객체지향적으로 설계한 구조의 차이를 통해, 훌륭한 객체 지향 설계의 다양한 특징과 책임 할당 원칙을 알아보자.데이터 중심의 영화 예매 시스템데이터 중심의 설계란 객체 내부에 저장되는 데이터를 기반으로 시스템을 분할하는 방법이다.‘데이터가 무엇인가’를 묻는 것으로 시작한다.Movie, DiscountCondition, Scree.. 2025. 3. 17.
03. 역할, 책임, 협력 03. 역할, 책임, 협력태그비어 있음객체지향 패러다임의 관점에서 핵심은 역할, 책임, 협력이다.애플리케이션의 기능을 구현하기 위해 어떤 협력이 필요하고 협력을 위해 어떤 역할과 책임이 필요한 지를 고민하지 않은 채 너무 이른 시기에 구현에 초점을 맞추는 것은 변경하기 어렵고 유연하지 못한 코드를 낳는 원인이 된다. 협력협력은 객체지향의 세계에서 가능을 구현할 수 있는 유일한 방법이다. 두 객체 사이의 협력은 하나의 객체가 다른 객체에게 도움을 요청할 때 시작된다. 객체의 행동을 결정하는 것은 객체가 참여하고 있는 협력이다.객체의 협력이 행동을 결정하고, 행동이 상태를 결정한다. 책임책임이란 객체에 의해 정의되는 응집도 있는 행위의 집합으로, 객체가 유지해야 하는 정보와 수행할 수 있는 행동에 대해 개략.. 2025. 3. 17.