객체지향
각 요소들을 객체(Object)로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법
객체지향 구성요소
객체(Object) : 데이터와 데이터를 처리하는 함수를 묶어 놓은 SW 모듈
- 데이터 : 객체의 정보, 속성, 상태, 분류
- 함수 : 객체가 수행하는 기능, 객체의 상태를 참조하거나 변경하는 수단
클래스(Class) : 공통된 속성과 연산을 갖는 객체의 집합, 각각의 객체를 인스턴스(instance)라고 한다.
메시지(Message) : 객체들 간의 상호작용으로 사용되는 수단, 객체의 동작이나 연산을 일으키는 외부 요구사항
객체지향 특징
캡슐화(Encapsulation) : 외부에서 접근을 제한하기 위해 인터페이스를 제외한 세부내용을 은닉하는 것 ( 정보의 은닉 )
상속(Inheritance) : 상위 클래스의 모든 속성과 연산을 하위클래스가 물려 받는 것
다형성 (Polymorphism) : 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답하는 능력
연관성(Relationship)
두 개 이상의 객체들이 상호 참조하는 관계
연관화(Association) (is member of) : 2개 이상의 객체가 상호 관련 있음
분류화(Classfication) (is instance of) : 동일한 형의 특성을 갖는 객체들을 모아 구성
집단화(Aggregation) (is part of) : 관련 있는 객체들을 묶어 하나의 상위 객체를 구성
일반화(Generalization) (is a) : 공통적인 성질들로 추상화한 상위 객체를 구성
특수화/ 상세화(Specialization) (is a) : 상위 객체를 구체화하여 하위 객체를 구성
객체지향 분석 ( OOA; Object Oriented Analysis )
사용자 요구사항과 관련된 객체, 속성, 연산, 관계를 정의 하여 모델링하는 작업
객체지향 분석 방법론
Rumbaugh(럼바우) 방법 : 모든 소프트웨어 구성요소를 그래픽 표기법으로 모델링하는 기법
객체 모델링 기법 (OMT, Object Modeling Technique) 객체모델링 → 동적모델링 → 기능모델링
분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행함
-객체 모델링(Object Modeling) : 객체의 속성과 연산 식별 및 객체들 간의 관계를 객체 다이어그램으로 표시
-동적 모델링(Dynamic Modeling) : 상태다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호작용, 동작 순서 등의 동적인 행위를 표현하는 모델링
-기능 모델링(Functional Modeling) : 자료 흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리과정을 표현한 모델링
Booch(부치) 방법 : 미시적(Micro) 개발 프로세스와 거시저(Macro) 개발 프로세스를 모두 사용함
Jacobson 방법 : 유스케이스를 강조하여 사용함
Coad와 Yourdon 방법 : E-R 다이어그램을 사용하여 객체의 행위를 모델
Wirfs-Brock 방법 : 분석과 설계 간의 구분이 없고 고객 명세서를 평가하여 설계 작업까지 연속적으로 수행
객체지향 설계 원칙
변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙
단일 책임 원칙(SRP) : 객체는 단 하나의 책임만 가져야 한다.
개방-폐쇄 원칙(OCP) : 기존의 코드를 변경하지 않고 기능을 추가할 수 있어야 한다.
리스코프 치환 원칙(LSP) : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다.
인터페이스 분리 원칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다.
의존 역전 원칙(DIP) : 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙
참고자료
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 코드(Code) 및 디자인 패턴 (0) | 2021.10.07 |
---|---|
[정보처리기사] 모듈(Module) (0) | 2021.10.07 |
[정보처리기사] 소프트웨어 아키텍처 (0) | 2021.10.06 |
[정보처리기사] 개발환경 구축 (0) | 2021.10.06 |
[정보처리기사] XML (eXtensible Markup Language) (0) | 2021.10.05 |