728x90
반응형
본 포스팅은 학습용으로, 김영한님의 강의를 바탕으로 복습용도로 작성되었습니다.
✏️ 객체 지향 특징
- 추상화
- 캡슐화
- 상속
- 다형성
🧰 다형성을 실세계에 비유하면?
- 역할과 구현으로 세상을 구분한다.
- 운전자 역할 (인터페이스)
- 엄마 (구현체)
- 아빠 (구현체)
- 나 (구현체)
- 자동차 역할 (인터페이스)
- K3 (구현체)
- 아반떼 (구현체)
- 테슬라 모델 3 (구현체)
- 운전자 역할 (인터페이스)
▶️ 역할과 구현을 분리
자바 언어의 다형성을 활용하면
- 역할은 인터페이스에 해당하고 구현은 인터페이스를 구현한 클래스, 구현객체에 해당
객체를 설계할 때, 역할과 구현을 명확히 분리해야 한다.
객체 설계 시 역할(인터페이스)을 먼저 부여하고, 그 역할을 수행하는 구현 객체를 만든다.
▶️ 다형성의 한계
객체 지향의 핵심은 다형성 다형성 만으로는 쉽게 부품을 깔아 끼우듯이 개발할 수 없다. 다형성 만으로 구현 객체를 변경할 때 클라이언트 코드도 함께 변경된다. ”다형성 만으로는 OCP, DIP를 지킬 수 없다.”
🖊️ 객체지향프로그래밍(OOP) 란?
현실세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍하는 기법이다. OOP로 코드를 작성하면 재사용성과 변형가능성을 높일 수 있다.
💡 객체지향 설계 5원칙(SOLID)
- SRP ( Single Responsibility Principle ) 단일책임원칙
- OCP( Open Closed Principle ) 개방폐쇄원칙
- LSP( Liskov Substitution Principle ) 리스코프 치환원칙
- ISP ( Interface Segregation Principle ) 인터페이스 분리 원칙
- DIP ( Dependency Inversion Principle ) 의존 역전 원칙
🧑🏻💻 SRP(Single Responsibility Principle) 단일책임원칙
클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.
👨🏻💻 OCP(Open Closed Principle) 개방폐쇄원칙
클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.
👩🏻💻 LSP(Liskov Substitution Principle) 리스코프 치환원칙
상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.
🏃🏻♂️ISP(Interface Segregation Principle) 인터페이스 분리 원칙
클라이언트는 이용하지 않는 메서드에 의존하지 않도록 인터페이스를 분리해야 한다.
🏋🏻 DIP(Dependency Inversion Principle) 의존 역전 법칙
클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안된다.
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] 스프링 컨테이너 생성 (0) | 2023.02.08 |
---|---|
[Spring] Spring의 핵심 및 목적 (0) | 2023.02.07 |
[Spring] Spring MVC 란? (1) | 2023.02.04 |
[Spring] DI (의존성 주입) - 회원등록 및 수정 예제 (0) | 2022.12.21 |
Maven - pom.xml란 ? (0) | 2022.12.20 |