C++/C++ CS 개념

객체지향 (Object-Oriented)

CE : 하랑 2023. 11. 8. 17:05

 

 

객체지향 : 소프트웨어의 각 요소들을 객체로 만든 후, 객체들을 조립해서 소프트웨어를 개발하는 기법

 

- 소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉽다

 

 

1. 객체지향의 구성 요소

 

(1) 객체 (Object)

- 데이터와 이를 처리하기 위한 함수를 묶어 놓은 소프트웨어 모듈

- 데이터 : 객체가 가지고 있는 정보로, 속성이나 상태, 분류 등

 

(2) 클래스 (Class)

- 공통된 속성과 연산을 갖는 객체의 집합

- 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀

- 클래스에 속한 각각의 객체를 인스턴스라고 한다.

 

(3) 메시지 (Message)

- 객체들 간의 상호작용을 하는데 사용되는 수단으로, 객체에게 어떤 행위를 하도록 지시하는 명령 또는 요구사항

- 메시지를 받은 객체는 대응하는 연산을 수행하여 예상된 결과를 반환

 

 

 

2. 객체지향의 특징

(1) 캡슐화 (Encapsulation)

- 외부에서의 접근을 제한하기 위해 인터페이스를 제외한 세부 내용을 은닉하는 것

- 캡슐화된 객체는 외부 모듈을 변경으로 인한 파급 효과가 적다

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

 

 

(2) 상속 (Inheritance)

- 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것

- 하위 클래스는 물려받는 속성과 연산을 다시 정의하지 않아도 즉시 자신의 속성으로 사용할 수 있다.

- 하위 클래스는 상속받는 속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있다.

 

(3) 다형성 (Polymorphism)

- 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

- 객체들은 동일한 메소드명을 사용하며 같은 의미의 응답을 한다.

 


 

메소드 : 어떠한 특정 작업을 수행하기 위한 명령문의 집합


(4) 연관성 (Relationship)

- 두 개 이상의 객체들이 상호 참조하는 관계를 의미

 

 


 

 

객체지향 분석 (OOA : Object Oriented Analysis)

 

- 사용자의 요구사항과 관련된 객체, 속성, 연산, 관계 등을 정의하여 모델링하는 작업

- 개발을 위한 업무를 객체와 속성, 클래스와 멤버, 전체와 부분 등으로 나누어서 분석한다.

- 클래스를 식별하는 것이 객체지향 분석의 주요 목적

 

 

 

1. 객체지향 분석의 방법론

(1) Rumbaugh(럼바우) 방법

- 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법

- 객체 모델링 기법

 

객체 모델링 (Object Modeling)

- 정보 모델링

- 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링

 

동적 모델링 (Dynamic Modeling)

- 상태 다이어그램을 이용하여 시간의 흐름에 따른 객체들 간의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현하는 모델링

 

기능 모델링 (Functional Modeling)

- 자료 흐름도 (DFD)를 이용하여 다수의 프로세스들 간의 자료 흐름을 중심으로 처리 과정을 표현한 모델링

 


 

자료 흐름도 (DFD) : 시스템 구성요소인 프로세스와 프로세스 간 데이터 흐름을 표현하는 주요 도구


 

2. 객체지향 설계 원칙

- 변경이나 확장에 유연한 시스템을 설계하기 위해 지켜져야 할 원칙

- SOLID 원칙

 

- 종류

(1) 단일 책임 원칙 (SRP) : 객체는 단 하나의 책임만 가져야 한다는 원칙

(2) 개방-폐쇄 원칙 (OCP) : 기존의 코드를 변경하지 않고 기능을 추가할 수 있도록 설계해야 한다는 원칙

(3) 리스코프 치환 원칙 (LSP) : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다는 원칙

(4) 인터페이스 분리 원칙 (ISP) : 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다는 원칙

(5) 의존 역전 원칙 (DIP) : 의존 관계 성립 시 추상성이 높은 클래스와 의존 관계를 맺어야 한다는 원칙

 

 

 

 

 

 

'C++ > C++ CS 개념' 카테고리의 다른 글

디자인 패턴  (0) 2023.11.09
생성자, 소멸자, 대입 연산자  (0) 2023.11.08
아키텍처 패턴  (3) 2023.11.08
소프트웨어 생명 주기 (Software Life Cycle)  (0) 2023.11.07
const  (0) 2023.10.30