객체지향 2

[Panda] 객체지향의 사실과 오해 7장

마틴 파울러가 제시한 객체지향 설계는 세 가지 상호 연관된 관점인 개념 관점, 명세 관점, 구현 관점을 통해 소프트웨어 개발을 바라보는 방식을 제공한다. 각 관점은 동일한 객체를 다른 시각에서 이해하는 방법으로, 설계의 핵심 요소가 된다. 이 글에서는 이 세 가지 관점을 커피 전문점의 예시를 통해 설명하고, 코드와 함께 이를 구체화한다. 1. 개념 관점 (Conceptual Perspective)개념 관점은 도메인에 존재하는 개념과 그 개념들 사이의 관계를 반영하는 데 중점을 둔다. 도메인이란 사용자가 관심을 갖는 특정 주제나 문제 영역을 의미하며, 소프트웨어는 이를 해결하기 위해 개발된다. 이 관점에서는 소프트웨어 객체들이 현실 세계의 개념을 얼마나 잘 반영하느냐가 중요하다.커피 전문점을 예시로 들면,..

[Panda] 객체지향의 사실과 오해 1장

실세계의 모방이라는 개념은 객체지향의 기반을 이루는 철학적인 개념을 설명하는 대는 적합하지만 실용적인 관점에서의 객체지향을 설명하기에는 적합하지 않다.애플리케이션을 개발하면서 객체에 직접적으로 대응되는 실세계의 사물을 발견할 확률 낮기 때문. 객체지향의 목표는 실세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것이다.소프트웨어 개발자의 역할이 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것처럼 말이다. 그러나 실세계의 모방이라는 개념을 사용하면 '캡슐화'와 소프트웨어 객체의 '자율성' 등 객체지향의 다양한 측면을 쉽게 설명할 수 있다.현실 세계의 사람들이 암묵적인 약속과 명시적인 계약을 기반으로 협력하며 목표를 달성해 나가는 과정은 '메..