상속객체지향 프로그래밍의 장점 중 하나는 코드를 재사용하기가 용이하다는 점이다.전통적인 패러다임에서는 코드를 복사 후 붙여넣기 하고 수정하여 코드를 재사용하였다.객체지향에서는 코드를 재사용하기 위해 새로운 코드를 추가한다.재사용 관점에서 상속이란 클래스 안에 정의된 인 ...
서론잘 설계된 객체지향 어플리케이션은 작고 응집도 높은 객체들로 구성된다.작고 응집성 높은 객체란 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미한다.따라서 객체 간 협력을 통해 다른 객체에게 도움을 요청하여 여러가지 일을 수행할 수 있다.협력은 객체가 다른 ...
추상화와 분해불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만을 남기는 작업을 추상화 라고 부른다.가장 일반적인 추상화 방법은 한 번에 다뤄야 하는 문제의 크기를 줄이는 것이다.
이처럼 큰 문제를 해결 가능한 작은 문제로 나누는 작업을 분해(decomposi ...
협력과 메세지
협력은 어떤 객체가 다른 객체에게 무언가를 요청할 때 시작된다.
메세지는 객체 사이의 협력을 가능하게 하는 매개체다
객체가 다른 객체에게 접근할 수 있는 유일한 방법은 메세지를 전송하는 것뿐이다.
메세지는 매개로 하는 요청과 응답의 조합이 두 객체 사이의 ...
책임 주도 설계를 향해책임에 초점을 맞춰서 설계할 때 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기가 쉽지 않다는 것이다.책임 할당 과정은 일종의 트레이드오프 활동이다.동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며, 어떤 방 ...
데이터 중심의 설계객체지향 설계에는 두 가지 방법을 이용해 시스템을 객체로 분할할 수 있다.
데이터를 분할의 중심축으로 삼는 방법 (Entity를 먼저 정의하고 비지니스 로직 구현)
데이터 중심의 관점에서는 객체는 자신이 포함하고 있는 데이터를 조작하는 데 필요한 ...
역할, 책임, 협력객체지향 패러다임의 관점에서의 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다.애플리케이션의 기능을 구현하기 위해 어떤 협력이 필요하고 협력을 위해 어떤 역할과 책임이 필요한지 고민하지 않은 채 너무 이 ...
객체지향을 설계하는 방법
클래스가 아닌 실제 working하는 instance(객체)에 초점을 둔다.
클래스는 객체들의 특징을 추상화 한 것
클래스 -> 객체가 아닌 객체들을 정의하고 객체들의 특징을 기반으로 클래스를 정의한다.
객체를 중심에 두는 접근 방법은 설 ...
소프트웨어의 목적Robert C. Martin은 클린 소프트웨어: 애자일 원칙과 패턴, 그리고 실천방법에서 소프트웨어 모듈이 가져야 하는 세 가지 기능에 관해 설명한다.(모듈이란, 크기와 상관 없이 클래스나 패키지, 라이브러리와 같은 프로그램을 구성하는 임의의 요소를 ...