Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발여행일지~

코틀린 3일차 공부! (OCP, 객체의 결합도&응집도 정리) 본문

코틀린 공부정리

코틀린 3일차 공부! (OCP, 객체의 결합도&응집도 정리)

야생돌고래 2023. 7. 19. 21:45
개방 폐쇄 원칙 - ocp (Open Closed Principle)이란?

 

기존의 코드를 변경하지 않으면서, 기능을 추가할 수 있도록 설계가 되어야 한다는 원칙이다.

 

이해한 바로는 기능을 (Open) 확장시키고 변하게하는건 가능하지만,

기능을 수정하는건 (Closed) 닫아버린다는 뜻이다.

 

 

개방 폐쇄 원칙을 지키는법!

첫 번째, 개방 폐쇄 원칙의 핵심은 변화하는 부분을 추상화하는 것!

여기서 추상화란? 다른 모든 종류의 객체로부터 식별될 수 있는 객체의 본질적인 특징이다.

 

두 번째, 상속을 이용하여 것!

처음에 OCP 설계 원칙에 따라 적절한 추상화 클래스를 구성하고 이를 상속하여 확장시키는 관계로 구성하면 변경에는 닫히고(closed) 추가에는 열려있는(open) 프로그램을 만들수 있다.

 

개방 폐쇄 원칙 주의점

추상화를 잘설계하고 정의할때 여러 경우의 수를 고려하고 예측하는 것이 필요하다.

 

추상화에 따른 상속 구조를 처음부터 이상하게 구성하게 되면, LSP(리스코프 치환 원칙) 과 ISP(인터페이스 분리 원칙) 위반으로 이어지게 된다. 

 

 

결합도와 응집도

 

결합도 (의존도)

  • 모듈이 다른 모듈에 의존하는 정도 척도
  • 모듈간의 상호  결합 정도
  • 결합도는 낮을수록 좋다.

이미지와 같이 a모듈은 다른 모듈과 이어지는 부분이없어서 의존도가 낮은상황이라 유지와 보수가 편할텐데

반면 b모듈은 다른 모듈들과 서로 상호작용을 하고있어 수정하려면 유지보수가 매우 어려울것이다.

 

결론은 결합도가 낮을수록 검토해야하는 소스가 적어지고 코드를 수정하기 쉽다.

 

응집도

  • 모듈에 포함된 내부 요소들이 하나의 책임을 위해 연결되어있는 연관된 정도
  • 모듈이 하나의 목적을 수행하는 요소들간의 연관성 척도
  • 모듈 내부의 기능적인 응집 정도를 나타낸다.
  • 높을 수록 좋다.

사진A
사진B

사진 A를 먼저 보면 a라는 기능들이 A모듈에 모여있기때문에 a기능을 수정하려면 찾기도 편하고 좋다.

그런데 사진 B와 같이 a라는 기능들이 서로 다른 A,B,C,D모듈에 서로 흩어져있을때는 복잡하고 수정하기 힘들다.

사진A처럼 모여있다면 응집도가 높다고 말할수있고 사진B처럼 흩어져있다면 응집도가 낮다고 할수있다.

 

결론은 응집도가 높으면 대상의 범위가 명확해지고 코드를 수정하기 수월하다는 것이다.

 

마지막으로 응집도와 결합도 공부를 하였을때 느낀점은

프로그램을 짤때는 결합도는 낮게 응집도는 높게 짜는것이 이상적이고 팀프로젝트를 하였을때 더 수월하게 작용할것같다.

'코틀린 공부정리' 카테고리의 다른 글

지연초기화  (0) 2023.07.24
예외 처리 (try-catch, throw의 구조)  (0) 2023.07.24
코틀린 4일차~! (메소드와 클래스, 생성자)  (0) 2023.07.20
코틀린 2일차!  (0) 2023.07.18
코틀린 1일차!  (0) 2023.07.17