본문 바로가기
소년의 IT 쉽게 이해하기/개발 쉽게 이해하기

객체지향 쉽게 이야기하기

by Circlezoo 2022. 2. 9.

개발을 하다 보면 Java, Phython, C++을 비롯하여 객체지향 언어라는 표현을 많이 듣게 되는데 여기서 말하는 객체지향이라는 게 뭘까요?

 

Q. 객체란 무엇인가요?

 

 객체 지향을 이야기하기 전에 객체란 무엇인지 알아봅시다.

객체란 추상화 작업을 할 때 객체라는 개념을 사용하여 정리한다고 합니다.

이때 객체가 가지고 있는 기본적인 특성을 속성이라고 하고, 객체가 행하는 동작들을 메서드라고 합니다.

예를 들어 아이가 아이스크림을 먹습니다. 에서 아이스크림을 먹는 동작을 메서드라고 하는 것이죠.

 

 객체는 속성과 메서드로 이루어져 있고 행위에 대한 특징을 나타내며 식별성을 가지고 있습니다.

객체와 객체는 상호 연관성에 대한 관계가 생성됩니다.

 

속성: 객체가 가지고 있는 특성이나 값을 이야기함

메서드: 함수, 서비스, 동작 등 객체가 행해지는 동작을 이야기함

클래스: 공통된 속성의 객체들을 하나의 집합으로 묶은 단위를 이야기함. 객체의 일반적인 타입

인스턴스: 하나의 클래스에 속하는 각각의 객체를 인스턴스라고 함

인스턴스화: 클래스로부터 새로운 객체를 생성하는 것을 인스턴스 화한다라고 이야기함

 

Q. 객체 지향의 특징은 무엇이 있을까요?

 

객체지향이라는 것은 속성과 메서드로 이루어진 객체라는 기본단위로 나누고 이 객체들 간의 상호작용을 통해서 프로그램을 설계하고 개발하고자 하는 것을 이야기합니다.

 

1. 주체성: 다른 객체들과 식별할 수 있는 성격을 이야기

2. 다형성(polymorphism): 하나의 메시지에서도 클래스가 어떻게 처리하느냐에 따라 여러 가지의 기능을 가질 수 있는 것

3. 분류성: 동일 속성과 행위를 갖는 객체들을 하나의 클래스로 분류하는 속성

4. 상속성(inheritance): 이미 정의된 상위 클래스의 메서드를 비롯한 모든 속성을 하위 클래스가 물려받는 것

5. 추상화(abstraction): 객체들의 공통적인 특징을 도출하는 것

6. 캡슐화(encapsulatioin): 객체가 독립적인 역할을 할 수 있도록 데이터와 기능을 묶어서 관리하는 것

7. 정보 은폐: 캡슐화된 정보를 외부에 감추는 것.

 

영어도 함께 적혀있는 것이 조금 더 중요한 개념입니다.

 

Q. 럼바우(Rumbaugh) 객체 지향 분석기법이 있던데

 

 객체 모델링 기법, Object Modeling Technique(OMT)라고도 합니다.

모델링 기법 중 하나이며 그래픽으로 표현한 분석기법입니다.

 

객체 모델링 -> 동적 모델링 -> 기능 모델링의 3단계로 이루어집니다.

 

1. 객체 모델링(Object Modeling)

 

 객체를 찾아서 그 객체들 간의 연관성 집단화 일반화를 규명하는 단계를 이야기합니다.

'클래스 다이어그램'으로 나타냅니다.

 

2. 동적 모델링(Dynamic Modeling)

 

 시간의 흐름에 따라 변하는 객체들 사이의 흐름을 '상태 다이어그램'으로 나타냅니다.

 

3. 기능 모델링(Functional Modeling)

 

 다수의 프로세스들 간 데이터 흐름을 중심으로 처리과정을 '데이터 흐름도'로 나타냅니다.

 

데이터 흐름도(Data Flow Diagram)

 

시간이 흐름에 따라 자료의 처리과정이 달라집니다.

자료가 흐르는 관점에 맞게 처리되는 작업 절차를 그립니다.

분석 단계에서 등장하며 세분화가 필요합니다.

데이터 흐름을 중시하는 Diagram입니다.

 

데이터 흐름도 기호
데이터 흐름도 예시 출처: https://blog.naver.com/mgetmput/221593909596(아네모네의 세상 읽기)

 

Q. 다른 기법은 없나요?

 

 Coad와 Yourdon 기법: E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성하는 기법

 

 Booch 기법: 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용하는 분석 방법으로 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의하는 기법

 

등이 있습니다. 하지만 럼바우 기법이 가장 대표적입니다.

반응형

댓글