섹션1. 강의 소개
강의 소개라 넘어가겠습니다.
섹션2. 객체 지향 설계와 스프링
(1) 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생
(2) 스프링이란?
(3) 좋은 객체 지향 프로그래밍이란?
(4) 좋은 객체 지향 설계의 5가지 원칙(SOLID)
(5) 객체 지향 설계와 스프링
섹션2. 객체 지향 설계와 스프링
(1) 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생
이전에 사용하던 EJB는 매우 어렵고 복잡하고 느렸다고 한다. 그래서 두 명의 개발자가 스프링을 만들게 된다. 그것도 3만 줄의 코드를 책에 넣어서..? (천재다..)
(2) 스프링이란?
스프링 프레임워크 -> 이를 편리하게 사용하도록 도와주는 것이 스프링 부트이다!
Q. 그럼 스프링은 왜 만들었을까? 스프링에서의 핵심 컨셉은?
=> 스프링은 자바(객체 지향 언어) 기반의 프레임워크이다. 스프링은 좋은 객체 지향 어플리케이션을 개발할 수 있게 해준다!
(3) 좋은 객체 지향 프로그래밍이란?
- 객체 지향 프로그래밍: 컴퓨터 프로그램을 여러 객체들의 모임으로 파악하고자 하는 것이다. 각 객체는 메세지를 주고받고 데이터를 처리한다.
- 객체 지향 프로그래밍은 프로그램을 유연하고 변경하기 용이하게 만든다. => 다형성 때문! 객체지향의 핵심!
- 다형성: 설계를 역할(인터페이스)과 구현으로 구분하기 때문에 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있다.
- 스프링은 다형성을 극대화해서 이용할 수 있게 도와준다 ex) IoC, DI => 역할과 구현을 편리하게 다룰 수 있도록 한다.
이러한 특징에 SOLID 원칙까지 알아야 스프링을 완전히 이해할 수 있다고 한다!
(4) 좋은 객체 지향 설계의 5가지 원칙(SOLID)
면접 질문으로 나올 수 있다고 한다.
1. SRP 단일 책임 원칙
- 변경이 있을 때 하나의 지점만 고치는 것
2. OCP 개방-폐쇄 원칙(가장 중요!)
- 확장에는 열려 있으나 변경에는 닫혀 있어야 한다
- 다형성 이용 => 역할과 구현의 분리
- 문제점: 구현 객체를 바꾸려면 클라이언트 코드를 변경해야 한다 => OCP 원칙 지킬 수 없음
3. LSP 리스코프 치환 원칙
- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다
- 다형성에서 하위 클래스는 인터페이스의 규약을 지켜야 한다
4. ISP 인터페이스 분리 원칙
- 여러 개의 특정 클라이언트를 위한 인터페이스로 분리하는 것이 좋다
- ex) 사용자 클라이언트 -> 운전자 클라이언트, 정비사 클라이언트로 분리
5. DIP 의존관계 역전 원칙(중요!)
- 구현 클래스에 의존하지 말고 인터페이스(추상화)에 의존하라는 것
- 즉, 클라이언트 코드가 역할에 의존하도록 하라는 것 !
- 구현체에 의존하게 되면 변경이 아주 어려워진다
cf) 의존한다 = 알고 있다
=> 하지만, 다형성만으로는 OCP, DIP를 지킬 수 없다.
(5) 객체 지향 설계와 스프링
스프링 => 다형성 + OCP, DIP를 가능하게 지원해준다.
- DI
- DI 컨테이너
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2025 1학기 스프링부트 스터디] 석준환 #1주차 (0) | 2025.03.25 |
---|---|
[2025 1학기 스프링부트 스터디] 여민호 #1주차 (0) | 2025.03.25 |
[2025 겨울방학 스프링 스터디] 김재승 #4주차 (0) | 2025.02.04 |
[2025 겨울방학 스프링 스터디] 정채은 #4주차 (0) | 2025.02.03 |
[2025 겨울방학 스프링 스터디] 윤아영 #4주차 (0) | 2025.02.03 |