자격증 따야지/정보처리기사 2024

정처기 실기 2024 하루암기 (객체 지향 설계 원칙 : solid 원칙)

jju_developer 2024. 4. 29. 12:14
728x90

2024.04.02 하루 암기

SOLD 원칙

 

객체지향 설계 문제에서 필히 나올만한 solid 

 

설명을 쓰고 분명 이게 뭔지 영어 약어로 쓰시오 할것같은 불안감에 

외워보는 solid

 

기본적으로 객체 지향이라는 개념을 알고

설계 원칙에 대해 알아야 하는데

 

객체 지향이라는 것은 데이터(객체)와 해당 데이터를 처리하는 메소드(얘도 객체) 를 하나로 묶어서 객체를 만들고, 이러한 객체들이 서로 상호작용하면서 프로그램을 구성하는 것 이 객체 지향이다.

 

내생각,,, 객체 지향 하면 딱 떠오르는게 객체는 단일책임, 클래스, 상속, 인터페이스 이 단어들이 딱 떠오른다.

 

SOLID 원칙이란 객체지향 설계에서 지켜줘야 할 

5개의 소프트웨어 개발 원칙( SRP, OCP, LSP, ISP, DIP )을 말한다.

 

하나의 클래스 객체는 단일 책임을 지어야 하고  

하나의 클래스는 하나의 기능 담당하여 하나의 책임을 수행하는데 집중되도록 

클래스를 나눠서 여러 개 설계하라는 원칙이다.

=> single responsibility principle

 

클래스 (객체) , 모듈 (객체) , 함수 (객체) 등에는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.
새로운 기능을 추가할 때는 기존의 코드를 변경하지 않고 확장할 수 있어야 한다.
인터페이스나 추상 클래스를 통해 이 원칙을 구현할 수 있다.

=> open closed principle

 

객체 하면 상속을 빼 놓을수 가 없는데,

하위 클래스(객체)는 상위 클래스(객체)를 대체할 수 있어야 하는 원칙이다.
- 상속 관계에서의 일관성을 보장하는 것.

=> liskov substitution principle

 

내생각,,, 클래스랑 상속 단일책임 다 나왔으면 이제 객체 하면 꼭 나오는 인터페이스 이야기가 나오겠지?

 

클라이언트는 자신이 사용하지 않는 인터페이스에 의존 관계를 맺으면 안 된다.
- 하나의 큰 인터페이스보다는 여러 개의 작은 인터페이스가 낫다.
- 클래스가 자신에게 필요하지 않은 메서드에 의존하지 않도록 하고, 결합도를 낮춘다.
분리된 인터페이스를 수정사항이 생겨서 또 인터페이스들을 분리하면 안 된다.

 

마지막 5번째

나는 당연히 구현하는 구현클래스를 바라보게 설계한다고 생각하는데 사실은
객체지향 원칙에서 상위 추상클래스를 참조하도록 의존성 주입을 해야함.

 

고수준 모듈은 저수준 모듈에 의존해서는 안 된다. 둘 다 추상화에 의존해야 한다.
참조해야 할 상황에는 하위 클래스가 아닌 상위 추상 클래스를 참조해야 한다.
추상화된 인터페이스나 추상 클래스를 통해 의존성을 주입받도록 설계해야 한다.
- 모듈 간의 결합도를 낮추고, 유연한 코드를 유지할 수 있게 한다.

=> dependency inversion principle

 


1) SRP(Single Responsibility Principle): 단일 책임 원칙
2) OCP(Open Closed Priciple): 개방 폐쇄 원칙
3) LSP(Liskov substitution principle): 리스코프 치환 원칙
4) ISP(Interface Segregation Principle): 인터페이스 분리 원칙
5) DIP(Dependency Inversion Principle): 의존 역전 원칙

SOLID 객체 지향 원칙을 적용하면 객체지향 소프트웨어 개발에서 유지보수성, 재사용성, 확장성 등을 강화하여 더 품질 높은 코드를 작성하는 데 도움을 준다.

 

728x90