Ad Block 한번만 꺼주시면 안될까요..?
게임 개발/게임 개발 이론

기록용) 객체 지향 프로그래밍 제 5원칙 (SOLID의 원래 단어, 의미)

UniCoti(유니코티) 2023. 4. 3.

이번글은 이미 많은 블로거가 이 원칙에 대하여

설명하고 있기도 하고, 경쟁력이 있을 정도로

길고, 높은 퀄리티로 적을 것도 아니라서

기록용으로 간단히 공부하는 용으로 적어보도록 하겠다

 

자. 객체 지향 프로그래밍의 원칙에는,

S, O, L, I, D로 5개가 존재한다.

이들은 각각 SRP, OCP, LSP, ISP, DIP이다.


이제부터 따로따로 설명해 보도록 하겠다.

참고로 이번글은 이미지가 없을 예정이다.

 

1. SRP (Single Responsibility Principle)

한국어로 해석하면 단일 책임 원칙으로,

객체는 오직 하나의 책임을 가져야 한다는 원칙이다.

 

수학을 계산하는 함수를 가진 클래스가 있다면 수학만 해야 되고,

프로그램의 다른 기능까지 관여하면 유지보수가 힘들어진다.

그러므로, 한 객체의 한 기능만 넣는 것을 권장한다.


2. OCP (Open - Closed Principle)

한국어로 해석하면 개방-폐쇄 원칙으로,

객체는 확장에 대해서는 개방적이고,

수정에 대해서는 폐쇄적이어야 한다는 원칙이다.

 

예를 들어 한 몹의 움직임을 계산하는 클래스를 짰다면,

다른 몹의 움직임을 계산하는 것은 개방적이지만(확장)

 

다른 몹 때문에 다른 몹의 클래스를 변경하는 것은

폐쇄적이어야 한다.(수정)


3. LSP (Liskov Substitution Principle)

한국어로 해석하면 리스코프 치환 원칙으로,

자식 클래스는 언제나 부모 클래스를 대체할 수 있다는 원칙이다.

이것은 클래스 상속과 깊은 연관이 있으며,

 

이를 지키지 않는다면 부모 클래스의 의미가 달라지기에

클래스를 상속받은 자식 클래스는 부모 클래스의 역할에 맞아야만 한다.


4. ISP (Interface Segregation Principle)

한국어로 해석하면 인터페이스 분리 원칙으로,

범용적인 인터페이스보다는 클라이언트가

실사용하는 인터페이스를 만들어야 한다는 원칙이다.

 

자신이 필요한 기능만 가짐으로써 재 컴파일, 재 배포과정을

생략하고 효율적으로 작업할 수 있게 된다.

 

클래스에서 인터페이스를 쪼개어서

클라이언트에게 필요한 기능만 전달하게 한다.


5. DIP (Dependency Inversion Principle)

한국어로 해석하면 의존성 역전 원칙으로,

추상성이 높고 안정적인 상위 클래스는 

구체적이고 불안정한 하위 클래스에 의존해서는 안된다는 원칙으로서,

객체 지향 인터페이스를 통해 이 원칙을  준수할 수 있다고 한다.


여기까지 SOLID의 다섯 가지 객체지향

프로그래밍 원칙에 대해 알아보았다.

솔직히 이 모든 것을 지키며 작업하는 일은 거의

봐도 무방할 정도로 모든 걸 지키며 작업하긴 힘들다.

 

이러한 규칙을 알아두고, 이건 고칠 수 있겠다 싶을 때

리펙토링 하는 용으로 사용해 주면 유지보수를 쉽게 할 수 있겠다.


이상으로 도움이 되었길 바라며,

 

끝.

댓글

💲 추천 글