캡슐화: 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것
ㄴ 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐되어 외부에서 접근이 제한적이기 때문에 외부 묘듈의 변경으로 인한 파급효과가 적다
캡슐화된 객체들은 재사용이 용이하다
객체들 간의 메시지를 주고받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도가 낮아진다.
상속: 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것
솝트의 재사용률을 높임
다중 상속: 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것
=> 안되는 언어 많음. 클래스 계층 복잡하게 만들어서.
다형성: 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 클래스/객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
= 하나의 함수/연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행함.
클래스/객체는 동일 메소드명을 사용하며 같은 의미의 응답을 한다.
ex) +: 숫자 클래스에서는 덧셈, 문자 클래스에서는 문자열의 연결 기능..
‘+’ 메시지에 대해 더한다는 의미의 응답을 다른 클래스에서 동일하게 함
모듈에서 나간다= fan out, 모듈로 들어온다=fan in.
팬아웃은 어떤 모듈에 의해 호출/제어되는 모듈의 수 => 불필요하게 다른 모듈들 호출하고 있는지 검토. 단순화시킬 수 있는지 검토
팬인은 어떤 모듈을 제어/호출하는 모듈의 수. 이게 높으면 재사용측면에서 설계 잘 되어있는 것. but 단일 장애 발생 가능=> 중점적 관리&테스트 필요
=> 복잡도 최적화 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 함
모듈 사이의 상호 의존도 / 연관관계 => 결합도 coupling 자쓰제외공내
약할수록 좋음: 자료(데이터)<스탬프<제어<외부<공통<내용 : 강
하나의 모듈 안에서 구성 요소 간의 관련 정도 => 응집도 cohesion 기순교절시논우
강할수록 좋음: 기능>순차>교환>절차>시간>논리>우연 :약
'언어 > JAVA' 카테고리의 다른 글
구조적 기법과 객체 지향 기법. 클래스 간의 관계 (0) | 2020.08.16 |
---|---|
JAVA 캐스팅, 업캐스팅, 다운캐스팅 (0) | 2020.08.15 |
자바 프로그램의 구조, 문법 (0) | 2020.08.05 |
댓글