반응형
객체지향 프로그래밍이란?
- 현실 속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업
- 객체지향의 목표는 실세계를 모방하는 것이 아니라, 오히려 새로운 세계를 창조하는 것
- 소프트웨어 객체와 실세계 사물 사이에 존재하는 연관성은 희미하다.
(ex. 현실 세계에서는 사람이 TV를 켜지만, 소프트웨어 세계에서는 TV 객체가 TV를 켠다.
- 소프트웨어 객체와 실세계 사물 사이에 존재하는 연관성은 희미하다.
객체지향에서 가장 중요한 개념 3가지 : 역할, 책임, 협력
- 역할 : 관련성 높은 책임의 집합으로, 재사용 가능한 협력관계를 구축하는 데 중요
- 여러 객체가 동일한 역할을 수행할 수 있다. (대체가능성) ⇒ 다형성과 관련
- 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다. (자율성)
- 하나의 객체가 동시에 여러 역할을 수행할 수 있다.
- 책임
- 협력 : 메시지를 전송하는 객체(송신자)와 메시지를 수신하는 객체(수신자) 사이의 관계
객체란?
- 현실 세계에 존재하는 사물에 대한 추상화로, 상태(state)와 행동(behavior)을 함께 지닌 실체
- 시스템의 행위를 구현하기 위해 다른 객체와 협력하며, 협력 내에서 정해진 역할 수행
- 객체는 다른 객체가 무엇(what)을 수행하는지는 알 수 있지만, 어떻게(how) 수행하는지에 대해서는 알 수 없다. (자율성)
- 무엇(what)을 수행하는지 = 메시지
- 어떻게(how) 수행하는지 = 메서드
객체의 덕목
- 객체는 충분히 협력적이어야 한다.
(다른 객체의 요청에 응답하고, 다른 객체에게 도움을 요청할 줄 알아야 함) - 객체는 충분히 자율적이어야 한다.
(협력에 참여하는 방법을 스스로 결정할 수 있어야 함)
객체지향 프로그래밍 언어 vs 절차지향 프로그래밍 언어
- 객체지향 프로그래밍언어
: 메시지와 메서드 분리 ⇒ 객체 간 자율성 보장 (캡슐화) - 절차지향 프로그래밍 언어
: 프로시저 호출에 대한 실행코드를 컴파일 시간에 결정
객체지향 ≠ 클래스지향
- 객체지향
- 시스템을 협력하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법
- 중요도 : 클래스들의 정적인 관계 < 메시지를 주고받는 객체들의 동적인 관계
(어떤 객체들이 어떤 메시지를 주고받으며 협력하는가가 중요)
- 클래스 : 객체들의 협력 관계를 코드로 옮기기 위한 구현 메커니즘일 뿐
- 클래스지향 설계의 문제점
- 객체의 캡슐화 ↓ ⇒ 클래스의 결합도 ↑ ⇒ 유연하고 확장 가능한 애플리케이션 X
반응형
'개발 도서 > 객체지향의 사실과 오해' 카테고리의 다른 글
[객체지향의 사실과 오해] 06장 : 객체 지도 (0) | 2023.03.31 |
---|---|
[객체지향의 사실과 오해] 05장 : 책임과 메시지 (0) | 2023.03.13 |
[객체지향의 사실과 오해] 04장 : 역할, 책임, 협력 (1) | 2023.03.13 |
[객체지향의 사실과 오해] 03장 : 타입과 추상화 (0) | 2023.03.13 |
[객체지향의 사실과 오해] 02장 : 이상한 나라의 객체 (0) | 2023.03.13 |