본문 바로가기

객체지향4

오브젝트 - 역할, 책임, 협력 앞서 살펴본 상속, 인터페이스를 통한 코드 재사용 및 다형성을 구현한 것은 객체지향 프로그래밍의 구현 측면일 뿐 핵심은 아니다. 객체지향 패러다임의 관점에서 핵심은 역할, 책임, 협력 이다. 객체지향은 요구사항을 충족시키기 위하여 적절한 객체들을 정의하고 각 객체에게 적절한 역할과 책임을 부여하여, 상호간 협력하는 공동체를 구성하는 것이다. 협력 협력은 객체지향 세계에서 기능을 구현할 수 있는 유일한 방법이다. 그리고 객체 간 협력을 위한 유일한 커뮤니케이션 수단은 메시지 전송(message sending)이다. 그리고 메시지를 수신한 객체는 메서드를 실행해 요청에 응답한다. 이때 메시지를 수신한 객체는 스스로 처리할 방법을 선택한다. (객체의 자율성) 여기서 자율적인 객체란 자신의 상태를 직접 관리하고.. 2021. 4. 24.
오브젝트 - 객체지향 프로그래밍 협력, 객체, 클래스 객체지향은 말 그대로 객체를 지향하는 것이다. 진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다. 따라서, 객체지향 프로그래밍을 하기 위해선 2가지 사항에 집중해야 한다. 어떤 클래스가 필요한지를 고민하기 전에 어떤 객체들이 필요한지 고민하라 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것(객체를 구현하는 방법) 클래스 이전에 객체들이 어떤 상태와 행동을 가지는지를 먼저 결정 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 생각해라 객체를 협력하는 공동체의 일원으로 생각하는 것은 유연하고 확장 가능한 설계를 가능하게 만듬 상태와 행동을 정의 후 공통된 특성과 상태를 가진 객체들을 타입으로 분류하여.. 2021. 4. 22.
오브젝트 - 객체, 설계 로버트 마틴 - 모든 소프트웨어 모듈에는 세가지 목적이 존재 1. 실행 중에 제대로 동작하는 것 - 모든 모듈의 존재 이유 2. 변경을 위해 존재하는 것 - 간단한 작업만으로도 모듈은 변경이 가능해야 한다. 3. 코드를 읽는 사람과 의사소통하는 것 - 개발자가 쉽게 읽고 이해할 수 있어야 한다. 즉, 모든 모듈은 제대로 실행되야 하고, 변경이 용이해야 하며, 이해하기 쉬어야 한다. 변경에 취약한 코드 변경에 취약한 대부분의 코드는 객체 사이의 의존성과 관련된 문제 어떤 객체가 변경될 때 그 객체에게 의존하는 다른 객체도 함께 변경될 수 있다는 사실이 내포돼 있다. 객체지향 설계는 서로 의존하면서 협력하는 객체들의 공동체를 구축하는 것 따라서, 우리의 목표는 애플리케이션의 기능을 구현하는 데 필요한 최소한.. 2021. 4. 14.
객체 지향 설계의 5가지 원칙 SOLID 원칙 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP (Single Responsibility Principle) OCP (Open / Closed Principle) LSP (Liskov Substitution Principle) ISP (Interface Segregation Principle) DIP (Dependency Inversion Principle) SRP 단일 책임 원칙 하나의 클래스는 하나의 책임만 가져야 한다. 하나의 책임의 기준은 때론 그 역할이 클 수도, 작을 수도 있기 때문에 사실 모호할 수 있다. 책임의 범위를 구분 지을 땐 변경 범위를 생각하자 변경이 있을 때 해당 변경으로 인한 파급 효과가 적다면 단일 책임 원칙을 잘 따른 것이라.. 2020. 11. 4.