강의
https://inf.run/tCXN
섹션 1. 객체 지향 설계와 스프링 - 3
1. 객체 지향
1) 특징
① 캡슐화
② 추상화
③ 상속
④ 다형성
2) 객체 지향 프로그래밍
컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나,
여러 개의 독립된 단위, 객체들의 모임으로 파악하고자 하는 것
- 각각의 객체는 메시지를 주고 받고, 데이터를 처리
=> 프로그램이 유연하고 변경이 용이
2. 다형성(Polymorphism)
1) 역할/구현
역할/구현으로 구분하면 단순, 유연해지고, 변경이 편리해진다.
역할 : 인터페이스
구현 : 인터페이스를 구현한 클래스, 구현 객체
-> 객체를 설계 시, 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체 생성
2) 예시
① 운전자 - 자동차
② 공연 역할 - 배우
③ 정렬 알고리즘
④ 할인 정책 로직
3) 객체의 협력
- 다형성의 본질을 이해하려면 객체 사이의 관계인 협력에서 시작해야 한다.
- 혼자 있는 객체는 없다. 수 많은 객체 클라이언트와 객체 서버는 서로 협력 관계를 가진다.
- 클라이언트 : 요청
- 서버 : 응답
4) 장점
클라이언트는
① 인터페이스(구현 대상의 역할)만 알면 된다.
② 구현 대상의 내부 구조를 몰라도 된다.
③ 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.
④ 구현 대상 자체를 변경해도 영향을 받지 않는다.
5) 본질
인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경 가능
클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경 가능
확장 가능한 설계
- 클라이언트에 영향을 주지 않는 변경 가능
-> 인터페이스를 안정적으로 잘 설계하는 것이 중요
'1. 프로그래밍 > Spring' 카테고리의 다른 글
[스프링 핵심 원리] 1-3. 객체 지향 설계 원칙(SOLID) (0) | 2022.03.02 |
---|---|
[스프링 핵심 원리] 1-1. 스프링 역사와 생태계 (0) | 2022.03.02 |
[스프링 핵심 원리] 1-0. 스프링 이전 (0) | 2022.03.01 |
[스프링 입문] 7. AOP(Aspect Oriented Programming) (0) | 2022.02.27 |
[스프링 입문] 6. 스프링 DB 접근 기술 (0) | 2022.02.27 |
댓글