학습목표
객체지향 언어의 특징에 대해 학습한다.
- 객체지향 언어에서 객체란 무엇인지 학습한다.
- 객체지향 언어의 특징에 대해 이해한다.
- 객체들의 “책임”에 대해 이해한다.
- 객체들간의 “의존”에 대해 이해한다.
- “캡슐화”를 통한 정보은닉에 대해 이해한다.
- 객체지향의 설계과정에 대해 이해한다.
객체지향
- 소프트웨어는 데이터와 데이터를 조작하는 코드(프로시저)로 구성되어 있다.
- 객체지향 언어 에서는 데이터 및 프로시저를 객체(Object) 라는 단위로 묶는다.
- 객체는 자신만의 기능을 제공하며, 각 객체들은 서로 연결되어 메세지를 주고 받으며 소프트웨어를 구성한다.
객체
- 객체는 데이터와 데이터를 조작하는 프로시저(메소드)로 구성된다.
- 객체는 객체마다 자신만의 책임(Responsibility)이 있다.
- 객체는 서로의 책임을 하며 다른 객체와 의존(Dependency)하며 소프트웨어를 구성한다.
객체 책임
- 객체가 가지는 책임을 결정하는 것이 객체 지향 설계의 출발점이다.
- 매출 데이터 정산에 대한 기능 목록 정리
- 업주의 매출 데이터를 읽는다.
- 매출 데이터를 업주별로 집계한다.
- 매출 데이터를 업주에게 정산한다.
- 전체 흐름을 제어한다.
- 각 책임을 아래와 같이 분리할 수 있다.
- 객체가 갖는 책임의 크기는 작을수록 좋다.
- 하나의 객체가 많은 기능을 포함하면, 그 기능관 관련된 데이터들도 한객체에 포함된다.
- 객체의 책임이 커질수로 유지보수가 어려워진다.
객체 의존
- 객체지향 프로그램에서는, 객체가 다른 객체의 기능을 이용해서 자신의 기능을 완성 한다.
- 객체에서 다른 객체를 생성 하거나 다른 객체의 메서드를 호출할 때, 해당 객체에 의존 한다고 한다.
- 의존성 전이
- 객체의 변화로 인해 다른 객체에 영향이 가게 된다.
- 변경이 많은 객체는 의존이 많이 되지 않도록 해야 한다.
캡슐화
- 객체가 내부적으로 기능을 어떻게 구현 했는지 감추는 것을 말한다.
- 캡슐화를 통해 내부구현의 변경이 그 기능을 사용하는 코드에 영향을 받지 않게한다.
- 주민등록번호 첫째자리를 구하는 로직이 2000년대생 이후로 남자는 ‘3’ 여자는 ‘4’로 변경 되었다면 Customer 의 데이터를 사용하는 Bank 와 Company 코드는 코드 수정이 발생한다.
- 캡슐화를 통해서 Customer의 구현이 변경되어도 이를 사용하는 외부 구현에는 영향을 미치지 않는다.
객체지향 설계 과정
- 소프트웨어 구현에 필요한 기능을 찾고 이를 세분화한다.
- 세분화된 기능을 알맞은 객체에 할당한다.
- 객체간에 어떻게 메시지를 주고받을 지 결정한다.
- 2, 3번 과정을 지속적으로 반복한다.