Back-end/Spring

객체 지향 프로그래밍과 SOLID

poppy 2022. 1. 8. 19:01
반응형

이 포스팅은 스프링 핵심 원리 - 기본편 강의를 듣고 정리한 것입니다.

 

객체 지향 프로그래밍이란?

- 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체메시지 를 주고받고, 데이터를 처리할 수 있다.

- 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.

 

이 때, 유연하고 변경이 용이하게 해주는 것이 다형성입니다.

 

다형성이란?

- 하나의 클래스나 메소드가 다양한 방식으로 동작이 가능한 것을 의미

- 부모클래스가 자식클래스의 값으로 대체되는 오버라이딩

- 같은 메소드의 매개변수(parameter)에 따라 다르게 동작하는 오버로딩

 

다형성은 실세계를 역할(인터페이스)과 구현(구현 객체)으로 분리합니다. 따라서 유연해지며 변경이 편해집니다 = 클라이언트를 변경하지 않고 서버의 구현 기능을 유연하게 변경할 수 있습니다

 

장점은 다음과 같습니다.

- 클라이언트는 대상의 역할(인터페이스)만 알면 된다.

- 클라이언트는 구현 대상의 내부 구조를 몰라도 된다.

- 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.

- 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않는다.

 

객체 지향 설계 원칙 (SOLID)

1. 단일 책임 원칙 (SRP)

- 한 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 파급효과가 적어야 원칙을 잘 따른 것.

 

2. 개방 폐쇄 원칙 (OCP)

- 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.

 

3. 리스코프 치환 원칙 (LSP)

- 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다.

 

4. 인터페이스 분리 원칙 (ISP)

- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

 

5. 의존관계 역전 원칙 (DIP)

- 클라이언트가 구현 클래스에 의존하면 안되고 인터페이스에 의존해야 한다.

 

 

반응형