프로그래밍/객체지향 설계

프로그래밍/객체지향 설계

[오브젝트] 10장. 상속과 코드 재사용

디자인 패턴 소프트웨어에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법 다양한 변경을 다루거나 협력을 일관성 있게 만들기 위해 재사용할 수 있는 설계의 묶음 디자인 패턴의 목적 : 설계를 재사용하는 것 프레임워크 설계와 코드를 재사용하기 위한 것 어플리케이션의 아키텍쳐를 구현 코드의 형태로 제공 각 애플리케이션의 요구에 따라 적절하게 커스터마이징할 수 있는 확장 포인트를 제공 일관성 있는 협력을 제공하는 확장 가능한 코드 1. 디자인 패턴과 설계 재사용 소프트웨어 패턴 패턴의 핵심적인 특징 패턴은 반복적으로 발생하는 문제와 해법의 쌍으로 정의된다. 패턴을 사용함으로써 이미 알려진 문제와 이에 대한 해법을 문서로 정리할 수 있으며, 이 지식을 다른 사람과 의사소통할 수 있다. 패턴..

프로그래밍/객체지향 설계

[오브젝트] 10장. 상속과 코드 재사용

1. 상속과 코드 중복 중복 코드는 두 코드가 중복이긴 한지 비교하는것부터 시간을 낭비하게 만들고 동료들을 의심하게 만든다. 그 외에도 중복 코드를 제거해야 할 결정적인 이유는 따로 있다. DRY 원칙 중복 코드가 가지는 가장 큰 문제는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킨다는 것이다. 중복 여부를 판단하는 기준은 변경이다. 요구사향이 변경됐을 때 두 코드를 한번에 수정해야 한다면 이 코드는 중복이다. 중복 여부를 결정하는 기준은 코드의 모양이 아닌, 코드가 변경에 반응하는 방식이다. DRY는 '반복하지 마라'라는 뜻의 Don't Repeat Yourself의 첫 글자를 모아 만든 용어로 간단히 말해 동일한 지식을 중복하지 말라는 것이다. DRY 원칙 : 모든 지식은 시스템 내에서 단일하고..

프로그래밍/객체지향 설계

[오브젝트] 5장. 책임 할당하기

1. 책임 주도 설계를 향해 데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 다음의 두 가지 원칙을 따라야 한다. 데이터보다 행동을 먼저 결정하라 협력이라는 문맥 안에서 책임을 결정하라 데이터보다 행동을 먼저 결정하라 책임 중심의 설계에서는 객체의 행동, 즉 책임을 먼저 결정한 후에 객체의 상태를 결정한다. 협력이라는 문맥 안에서 책임을 결정하라 협력에 적합한 책임을 수확하기 위해서는 객체를 결정한 후에 메시지를 선택하는 것이 아니라 메시지를 결정한 후에 메시지 스스로 객체를 선택해야 한다. 협력이라는 문맥 안에서 메시지에 집중하는 책입 중심의 설계는 캡슐화의 원리를 지키기가 훨씬 쉬워진다. 책임 주도 설계 다음은 3장에서 설명한 책임 주도 설계의 흐름을 다시 나열한 것이다. 시스템이 사용자..

프로그래밍/객체지향 설계

[오브젝트] 3장. 역할, 책임, 협력

객체지향 패러다임의 관점에서 핵심은 협력, 책임, 역할이다. 역할, 책입, 협력이 제자리를 찾지 못한 상태라면 응집도 높은 클래스와 중복 없는 상속 계층을 구현한다고 하더라도 우리가 만든 애플리케이션이 침몰하는 것을 구원하지 못할 것이다. 그 이유를 살펴보자. 1. 협력 영화 예매 시스템 돌아보기 객체지향 원칙을 따르는 애플리케이션의 제어 흐름은 어떤 하나의 객체에 의해 통제되지 않고 다양한 객체들 사이에 균형 있게 분배되는 것이 일반적이다. 여기서 중요한 것은 다양한 객체들이 영화 예매라는 기능을 구현하기 위해 메시지를 주고받으면서 상호작용한다는 점이다. 이처럼 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고한다. 객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 한다...

프로그래밍/객체지향 설계

[오브젝트] 2장. 객체지향 프로그래밍

1. 영화 예매 시스템 요구사항 앞으로의 설명을 위해 '영화'와 '상영'이라는 용어를 구분할 필요가 있다. '영화'는 영화에 대한 기본 정보를 의미한다. 제목, 상영시간, 가격정보 등을 가지고 있다. '상영'은 실제로 관객들이 영화를 관람하는 사건을 표현한다. 상영일자, 시간, 순번 등을 말한다. 영화는 하루 중 다양한 시간대에 걸쳐 한 번 이상 상영될 수 있다. 두 용어의 차이가 중요한 이유는 사용자가 실제로 예매하는 대상은 영화가 아니라 상영이다! 사람들은 영화를 예매한다고 표현하지만 실제로는 특정 시간에 상영되는 영화를 관람할 수 있는 권리를 구매하기 위해 돈을 지불한다. 특정한 두가지 조건을 만족하는 예매자는 요금을 할인받을 수 있다. 할인 조건 (discount condition) 할인 정책 (..

프로그래밍/객체지향 설계

[오브젝트] 1장. 객체, 설계

객체지향 설계 관련 글들은 조영호 저자의 오브젝트 라는 책의 내용을 정리한 포스팅들이며, 챕터별로 포스팅할 예정입니다. 1장에서는 절자지향에 가까운 코드를 객체지향적으로 최대한 리팩토링하는 과정을 보여줌으로써 객체지향적 설계가 무엇인가에 대해 살펴 볼 것입니다. 1. 티켓 판매 애플리케이션 구현하기 여러분은 소극장의 홍보도 겸할 겸 관람객들의 발길이 이어지도록 작은 이벤트를 기획하기로 했다. 이벤트의 내용은 간단하데 추첨을 통해 선정된 관람객에게 공연을 무료로 관람할 수 있는 초대장을 발송하는 것이다. 드디어 기다리던 공연 날이 밝았다. 소극장 앞은 초대장 당첨자들과 표를 구매하려는 관람객으로 장사진을 이루고 있었다. 이제 소극장의 문을 열어 오랜 시간 공연을 기다려온 관람객들을 맞이하자. 코드 작성 거..

Giwonnnnnnn
'프로그래밍/객체지향 설계' 카테고리의 글 목록