본문 바로가기
언어/JAVA

캡슐화, 상속, 다형성, Fan in Fan out, 모듈 결합도와 응집도

by tovantablack 2020. 8. 16.
728x90
728x90

캡슐화: 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것

ㄴ 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐되어 외부에서 접근이 제한적이기 때문에 외부 묘듈의 변경으로 인한 파급효과가 적다

캡슐화된 객체들은 재사용이 용이하다

객체들 간의 메시지를 주고받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도가 낮아진다.

 

상속: 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것

솝트의 재사용률을 높임

다중 상속: 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것

=> 안되는 언어 많음. 클래스 계층 복잡하게 만들어서.                                                                                                                                                       

 

다형성: 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 클래스/객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

= 하나의 함수/연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행함.

클래스/객체는 동일 메소드명을 사용하며 같은 의미의 응답을 한다.

ex) +: 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능..

‘+’ 메시지에 대해 더한다는 의미의 응답을 다른 클래스에서 동일하게 함

 

 

모듈에서 나간다= fan out, 모듈로 들어온다=fan in.

팬아웃은 어떤 모듈에 의해 호출/제어되는 모듈의 수 => 불필요하게 다른 모듈들 호출하고 있는지 검토. 단순화시킬 수 있는지 검토

팬인은 어떤 모듈을 제어/호출하는 모듈의 수. 이게 높으면 재사용측면에서 설계 잘 되어있는 것. but 단일 장애 발생 가능=> 중점적 관리&테스트 필요

=> 복잡도 최적화 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 함

 

모듈 사이의 상호 의존도 / 연관관계 => 결합도 coupling      자쓰제외공내

약할수록 좋음: 자료(데이터)<스탬프<제어<외부<공통<내용 :

 

하나의 모듈 안에서 구성 요소 간의 관련 정도 => 응집도 cohesion    기순교절시논우

강할수록 좋음: 기능>순차>교환>절차>시간>논리>우연 :

728x90
728x90

댓글