현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때 객체들을 조립해서 작성할 수 있는 기법을 말합니다.
객체지향 기법은 구조적 기법의 문제점(유지보수 고려하지 않은 개발 공정에 집중, 추가 요구사항 대응이 어려움, 재사용이 어려움)을 해결하기 위해 채택된 방식입니다. 객체지향의 주료 구성요소와 개념에는 객체, 클래스, 캡슐화, 상속, 다형성, 연관성이 있습니다.
1) 객체(Object)
객체는 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈이라고 할 수 있습니다. 데이터는 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타냅니다. 함수는 객체가 수행하는 기능으로 객체가 같은 데이터를 처리하는 알고리즘입니다. 메소드, 서비스, 동작, 연산이라고도 부릅니다.
2) 클래스(Class)
공통된 속성과 연산(행위)을 갖는 객체의 집합으로, 객체의 일반적인 타입을 의미합니다. 클래스에 속한 각각의 객체를 인스턴스라고 하며, 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화라고 합니다.
3) 캡슐화(Encapsulation)
캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은닉되어 외부에서의 접근이 제한적이기 때문에 외부 모듈 변경으로 인한 파급 효과가 적습니다. 또한 캡슐화된 객체들은 재사용이 용이하고, 객체들 간의 메세지를 주고 받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 결합도도 낮아집니다.
4) 상속(Inheritance)
상속은 이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것을 말합니다.
하위 클래스는 상위 클래스로부터 받은 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있습니다. 상위 클래스의 속성과 연산을 하위 클래스가 사용할 수 있기 때문에 객체와 클래스의 재사용이 높아집니다.
5) 다형성(Polymorphism)
메세지에 의해 객체가 연산을 수행할 때 하나의 메세지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력을 의미합니다. 오버로딩 기능의 경우 메소드의 이름은 같지만 인수를 받은 자료형과 개수를 달리하여 여러 기능을 정의할 수 있습니다. 오버라이딩 기능의 경우 상위 클래스에서 정의한 메소드와 이름은 같지만 메소드 안의 실행 코드는 달라서 자식 클래스에서 재정의해 사용할 수 있습니다.
* 객체지향 분석 및 설계
객체지향 분석은 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스, 이와 연관된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링하는 작업입니다. 분석 방법론으로 Rumbaugh, Booch, Jacobson, Coad와 Yourdon, Wrifs-Brock 방법 등이 있습니다.
- 럼바우 분석기법(객체 모델링 기법): 객체모델링 -> 동적 모델링 -> 기능 모델링 순으로 이뤄집니다.
객체 모델링 | 시스템에서 요구되는 객체를 찾아내 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표시 |
동적 모델링 | 상태 타이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링 |
기능 모델링 | 자료흐름도(DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리과정을 표현한 모델링 |
* 객체지향 설계 원칙
- 단일 책임 원칙, 개방-폐쇄 원칙, 리스코프 치환 원칙, 인터페이스 분리 원칙, 의존 역전 원칙 5가지가 있습니다.
단일책임원칙: 객체는 단 하나의 책임만 가져야 한다는 원칙, 응집도는 높고 결합도는 낮게 설계하는 것을 의미합니다.
개방-폐쇄 원칙: 기존의 코드는 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙, 공통 인터페이스를 하나의 인터페이스로 묶어 캡슐화하는 방법이 대표적입니다.
리스코프 치환 원칙: 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행할 수 있어야 한다는 설계 원칙, 자식 클래스는 확장만 수행
인터페이스 분리 원칙: 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙
의존 역전 원칙: 각 객체들 간의 의존 관계가 성립될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙,
'CS' 카테고리의 다른 글
모듈 (0) | 2024.02.05 |
---|---|
객체지향 분석 및 설계 (0) | 2024.02.05 |
아키텍처 패턴 (0) | 2024.02.02 |
소프트웨어 아키텍처 (0) | 2024.02.02 |
스크럼, XP 기법 (0) | 2024.02.02 |