Object
-
객체지향 설계의 핵심은협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거하는 데 있다의존성 이해하기변경과 의존성의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다의존성은 함께 변경될 수 있는 가능성을 의미, 모든 경우에 의존성이 전이되는 것은 아니다의존성이 실제로 전이될지 여부는 견경의 방향과 캡슐과의 정도에 따라 달라진다. 런타임 의존성과 컴파일타임 의존성런타임 의존성 : 객체 사이의 의존성 컴파일타임 의존성 : 클래스 사이의 의존성 런타임 의존성과 컴파일타임 의존성이 다를 수 있다 컨텍스트 독립성클래스가 사용될 특정한 문맥에 대해 최소한의 가정만으로 이뤄져 있다면다른 문맥에서 재사용하기가 더 수월해진다. 의존성 해결컴파일타임 의존성을 실행 컨텍스트에 맞는 적절한 런타임 의존..
[Object] 8장 : 의존성 관리하기객체지향 설계의 핵심은협력을 위해 필요한 의존성은 유지하면서도 변경을 방해하는 의존성은 제거하는 데 있다의존성 이해하기변경과 의존성의존성은 실행 시점과 구현 시점에 서로 다른 의미를 가진다의존성은 함께 변경될 수 있는 가능성을 의미, 모든 경우에 의존성이 전이되는 것은 아니다의존성이 실제로 전이될지 여부는 견경의 방향과 캡슐과의 정도에 따라 달라진다. 런타임 의존성과 컴파일타임 의존성런타임 의존성 : 객체 사이의 의존성 컴파일타임 의존성 : 클래스 사이의 의존성 런타임 의존성과 컴파일타임 의존성이 다를 수 있다 컨텍스트 독립성클래스가 사용될 특정한 문맥에 대해 최소한의 가정만으로 이뤄져 있다면다른 문맥에서 재사용하기가 더 수월해진다. 의존성 해결컴파일타임 의존성을 실행 컨텍스트에 맞는 적절한 런타임 의존..
2024.08.21 -
문제를 해결하기 위해 사용하는 저장소는 장기 기억이 아니라 단기기억이다.문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어진다. -> 인지 과부하(cognitive overload) 인류가 복잡한 분야(소프트웨어 개발 영역)의 문제를 해결하기 위해 사용한 것추상화불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업한 번에 다뤄야 하는 문제의 크기를 줄이는 것 한 번에 단기 기억에 담을 수 있는 추상화의 수에는 한계가 있지만 추상화를 더 큰 규모의 추상화로 압축시킴으로써 단기 기억의 한계를 초월할 수 있다.분해(decomposition)큰 문제를 해결 가능한 작은 문제로 나누는 작업 프로시저 추상화와 데이터 추상화프로그래밍 언어의 발전좀 더 ..
[Object] 7장 : 객체 분해문제를 해결하기 위해 사용하는 저장소는 장기 기억이 아니라 단기기억이다.문제 해결에 필요한 요소의 수가 단기 기억의 용량을 초과하는 순간 문제 해결 능력은 급격하게 떨어진다. -> 인지 과부하(cognitive overload) 인류가 복잡한 분야(소프트웨어 개발 영역)의 문제를 해결하기 위해 사용한 것추상화불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업한 번에 다뤄야 하는 문제의 크기를 줄이는 것 한 번에 단기 기억에 담을 수 있는 추상화의 수에는 한계가 있지만 추상화를 더 큰 규모의 추상화로 압축시킴으로써 단기 기억의 한계를 초월할 수 있다.분해(decomposition)큰 문제를 해결 가능한 작은 문제로 나누는 작업 프로시저 추상화와 데이터 추상화프로그래밍 언어의 발전좀 더 ..
2024.08.13 -
훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아니라 객체를 지향해야 한다협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다책임이 객체가 수신할 수 있는 메시지의 기반이 된다애플리케이션은 클래스로 구성되지만 메시지를 통해 정의된다. 이번 장은 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 데 도움이 되는 설계 원칙과 기법을 살펴보는 것이 주제이다 협력과 메시지객체가 다른 객체에게 접근할 수 있는 유일한 방법은 메시지를 전송하는 것뿐이다.객체는 자신의 희망을 메시지로 전송하고, 이를 수신한 객체는 요청을 적절하게 처리하여 응답한다. 클라이언트-서버 모델두 객체 사이의 협력관계를 설명하기 위해 사용되는 전통적인 클라이언트-서버 모델이다.클라이언트 : 메시지를 전송하는 객체서버 : 메시지를 수신하는 객..
[Object] 6장 : 메시지와 인터페이스훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아니라 객체를 지향해야 한다협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다책임이 객체가 수신할 수 있는 메시지의 기반이 된다애플리케이션은 클래스로 구성되지만 메시지를 통해 정의된다. 이번 장은 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는 데 도움이 되는 설계 원칙과 기법을 살펴보는 것이 주제이다 협력과 메시지객체가 다른 객체에게 접근할 수 있는 유일한 방법은 메시지를 전송하는 것뿐이다.객체는 자신의 희망을 메시지로 전송하고, 이를 수신한 객체는 요청을 적절하게 처리하여 응답한다. 클라이언트-서버 모델두 객체 사이의 협력관계를 설명하기 위해 사용되는 전통적인 클라이언트-서버 모델이다.클라이언트 : 메시지를 전송하는 객체서버 : 메시지를 수신하는 객..
2024.07.09 -
책임에 초점을 맞춰 설계할 때 직면하는 가장 큰 문제는 어떤 객체에게 어떤 책임을 할당할지를 결정하기 어렵다는 점이다.책임 할당 과정은 일종의 트레이트오프 활동이다.책임 주도 설계를 향해데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위한 원칙 데이터보다 행동을 먼저 결정하라 데이터는 객체가 책임을 수행하는 데 필요한 재료를 제공할 뿐이다.객체를 설계하기 위한 질문의 순서를 바꾸자.데이터 중심의 설계 : "이 객체가 포함해야 하는 데이터가 무엇인가" -> "데이터를 처리하는 데 필요한 오퍼레이션은 무엇인가"책임 중심의 설계 : "이 객체가 수행해야 하는 책임은 무엇인가" -> "이 책임을 수행하는 데 필요한 데이터는 무엇인가"협력이라는 문맥 안에서 책임을 결정하라적합한 책임이란 메시지 수신자가 아니라..
[Object] 5장 : 책임 할당하기책임에 초점을 맞춰 설계할 때 직면하는 가장 큰 문제는 어떤 객체에게 어떤 책임을 할당할지를 결정하기 어렵다는 점이다.책임 할당 과정은 일종의 트레이트오프 활동이다.책임 주도 설계를 향해데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위한 원칙 데이터보다 행동을 먼저 결정하라 데이터는 객체가 책임을 수행하는 데 필요한 재료를 제공할 뿐이다.객체를 설계하기 위한 질문의 순서를 바꾸자.데이터 중심의 설계 : "이 객체가 포함해야 하는 데이터가 무엇인가" -> "데이터를 처리하는 데 필요한 오퍼레이션은 무엇인가"책임 중심의 설계 : "이 객체가 수행해야 하는 책임은 무엇인가" -> "이 책임을 수행하는 데 필요한 데이터는 무엇인가"협력이라는 문맥 안에서 책임을 결정하라적합한 책임이란 메시지 수신자가 아니라..
2024.06.17