1. 기본 개념 요약

유료 강의이기 때문에 아래에 가능한 한 일부만 요약하겠습니다.



객체 지향에는 추상화, 캡슐화, 상속, 다형성이라는 네 가지 특성이 있습니다.

내가 이해한 바로는 (틀릴 수 있음)

추상화 = 이름을 적고 X를 구현하기만 하면 됩니다.

캡슐화 = 개인 또는 보호로 데이터 보호

상속 = 자식은 확장 및 구현을 사용하여 부모의 기능을 상속합니다.

다형성 = 상속을 통해 가능한 기능으로 같은 이름으로 다른 기능을 구현할 수 있다.

여기서 가장 중요한 특징은 다형성(Polymorphism)인데, 다형성이라고 하면 보통 오버라이딩(overriding), 오버로딩(overloading)을 생각합니다.

가장 다형성적인 방식이지만 전부 다형성은 아니다

여기서 말하는 다형성은 주어진 역할을 구현하는 객체가 그 역할을 할 수만 있다면 주어진 역할이 존재해도 상관없다는 특징이다. 예를 들어 운전자가 차를 운전할 때 스페이서 역할만 할 수 있다면 K5를 타든 아반떼를 타든 상관없다. 이것은 다형성이다

Spring은 이러한 다형성을 구현하는 데 도움이 되는 프레임워크입니다.

Spring에 대한 이야기를 들으면 Spring = 운영 체제라고 생각합니다.

또 다른 예로 요즘 핫한 GPT-4 같은 AI와 비슷한 것 같아요.

AI로 이미지를 그리듯이 다양한 태그를 통해 내가 원하는 이미지를 선택합니다.

Spring은 다양한 설정을 통해 원하는 작업(이 경우 웹)을 쉽게 만들 수 있는 도구입니다.


객체 지향은 가장 자주 묻는 다섯 가지 원칙 중 하나입니다.

일반적으로 SOLID라고 합니다.

단일 책임 원칙(SRP)

개방/폐쇄 원칙(OCP)

LSP(리스코프 대체 원리)

ISP(Interface Segregation Principle) 인터페이스 분리 원칙

DIP(종속 역전 원리)

SRP

클래스 책임

변경 시 파급 효과가 작아야 함

즉, 클래스의 작업이 적을수록 더 좋습니다(= 좋은 분업).

OKP

확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 합니다.

기존 코드를 크게 변경하지 않고 새로운 기능을 확장할 수 있는 기능

LSP

개체는 프로그램의 정확성에 영향을 주지 않고 하위 인스턴스로 변환될 수 있어야 합니다.

즉, 자식은 유사한 콘텐츠로 부모의 모든 기능을 구현해야 합니다.

예) 자동차의 엑셀은 순방향 함수인데 자식은 역방향 함수로 구현하면 안된다.

ISP

인터페이스를 하나의 큰 인터페이스보다 여러 범용 인터페이스로 분할하는 것이 좋습니다.

인터페이스의 분할은 더 명확하고 상호 교환 가능하게 만듭니다.

잠수

구체적인 것이 아니라 추상적인 것에 집중하십시오.

구현 클래스에 의존하지 말고 인터페이스에 의존

그것이 어떤 역할(기능)을 하느냐가 중요한 것이지 그 기능이 구체적으로 어떻게 작용하는가가 아니다.

ex) 엑셀 기능이 있을 때 중요한 것은 얼마나 빨리 움직이는가가 아니라 어떻게 앞으로 나아가느냐 하는 것입니다.

그러나 다형성만으로는 OCP와 DIP를 완벽하게 보호할 수 없습니다.


여기서 더 필요한 것은 DI(Dependency Injection) 종속성 주입입니다.

Spring은 이를 자동으로 수행합니다.

아직 DI를 이해하지 못해서 더 많은 강의를 들으면서 이해할 생각입니다.

원천

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90 %EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/대시보드

Spring 핵심 원칙 – 기초 – 인프라 | 강의

Spring 초보자도 Spring의 핵심 원리를 이해하고 예제와 인프라를 통해 Spring의 기초를 강화할 수 있습니다.

www.inflearn.com