1. 객체지향 개념
- 프로그래밍에서 필요한 데이터를 추상화시켜 역할과 구현을 통해 객체들 간의 상호작용이 용이하게 하는 프로그래밍 방법
- 객체들의 모임을 통해 데이터를 파악
- 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있음
장점
- 코드 재사용이 용이
- 유지보수가 쉬움
- 마치 레고 블록을 조립하듯 컴포넌트를 쉽고 유연하게 변경하면서 개발 가능
단점
- 설계시 많은 시간과 노력 필요
- 객체가 많으면 용량이 커질 수 있음
2. 객체지향 특징
- 추상화
- 캡슐화
- 상속
- 다형성
객체지향의 특징에 대해서는 이미 좋은 글들이 많기 때문에 핵심인 다형성에 대해서만 설명할 것
3. 다형성
프로그래밍 언어를 실세계에 비유하는 것이 어색할 수 있으나 쉽게 이해할 수 있다.
역할과 구현으로 세상을 구분한다고 해보자.
사람과 자동차는 서로 상호작용을 할 때, 그들만의 역할이 존재한다.
자동차의 경우 자동차라는 큰 틀 아래에서 K3, 아반떼, 테슬라와 같은 차종이 구현된다.
다른 종류의 차량이지만 모두 자동차라는 역할을 베이스로 구현된 것이기 때문에 운전자의 경우 차종에 상관없이 운전이 가능하다.
운전자는 운전면허증(자동차의 역할에 대한 이해)만 있다면 차종에 상관없이 운전이 가능하다.
결국, 클라이언트(운전자)가 인터페이스(자동차 역할)에 대해서만 알고 있다면, 인터페이스의 구현체(다른 차종)를 몰라도 객체 인스턴스 실행(운전하기)이 가능하다.
이를 통해 클라이언트 코드는 새로운 기능(자동차)이 나와도 코드를 수정할 필요가 없다.
이것이 다형성의 예시이다.
다형성의 장점
- 클라이언트는 대상의 역할(인터페이스)만 알면 된다.
- 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
- 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
- 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.- 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.
4. 스프링과 객체지향
- 다형성의 중요성
- Spring은 다형성을 극대화
- 제어의 역전(IoC), 의존관계 주입(DI)은 다형성을 활용해서 역할과 구현을 편리하게 지원
'Spring > 객체지향' 카테고리의 다른 글
[Spring] 좋은 객체 지향 설계의 5가지 원칙 (SOLID) (0) | 2022.12.14 |
---|