본문 바로가기
자격증/정보처리기사(필기)

객체지향

by 훈영 2023. 5. 10.

객체지향(Object-Oriented)이란?

- 현실 세계를 그대로 모형화

- 소프트웨어 개발 시 객체들을 조립해 작성 가능

- 소프트웨어 재사용 및 확장이 용이, 유지보수가 쉬움

- 주요 요소와 개념에는 객체, 클래스, 캡슐화, 상속, 다형성이 존재함

 

1. 객체

- 객체란, 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 모듈이다.

- 함수는 객체가 수행하는 기능, 객체가 갖는 데이터를 처리하는 알고리즘

- 함수는 객체가 메시지를 받아 실행해야 할 객체의 구체적 연산을 정의

- 함수를 메소드, 서비스, 동작, 연산이라고도 함

 

2. 클래스

- 클래스란, 유사한 객체를 정의한 집합으로 속성+행위를 정의한 것으로 일반적인 Type을 의미한다.

- 인스턴스: 클래스에 속한 각 객체를 의미

- 메시지: 객체들 간에 상호작용을 하는데 사용되는 수단으로 객체에 어떤 행위를 하도록 지시하는 명령을 말한다.

 

3. 객체지향의 주요 개념

1) 캡슐화(Encapsulation)

- 데이터와 데이터를 처리하는 함수를 하나로 묶은 것

- 캡슐화된 객체의 세부 내용이 은폐되어 변경이 발생해도 오류의 파급 효과가 적음

- 캡슐화된 객체들은 재사용이 용이함

- 인터페이스가 단순해지고 객체간의 결합도가 낮아짐

 

2) 상속성(Inheritance)

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

- 하위 클래스는 상위 클래스로부터 받은 속성과 연산 외에도 새로운 것을 첨가할 수 있음

- 클래스의 재사용, 소프트웨어의 재사용을 높이는 중요한 개념

* 다중상속성: 한 개의 클래스가 2개 이상의 클래스로부터 속서오가 연산을 상속받는 것

 

3) 다형성(Polymorphism)

- 하나의 메시지에 대해 각 객체가 갖고 있는 고유한 방법대로 응답하는 것을 의미

- 하나의 클래스나 메서드가 다양한 방식으로 동작이 가능한 것을 의미

- 오버로딩과 오버라이딩이 존재

 

4) 정보 은닉(Information Hiding)

- 캡슐화에서 가장 중요한 개념으로 다른 객체에 자신의 정보를 숨기는 것

- 연산만을 통해 접근을 허용함

- 각 객체의 수정이 다른 객체에 주는 Side Efrrect를 최소화하는 기술

 

5) 추상화(Abstraction)

- 불필요한 부분을 생략, 객체 속성 중 가장 중요한 것에 중점을 두어 모델화하는 것

- 완전한 시스템 구축 전, 그 시스템과 유사한 모델을 만들어 여러 요인들을 테스트할 수 있음

 

4. 객체지향 설계 원칙(SOLID)

1) 단일 책임 원칙

- 모든 클래스는 단일 목적으로 생성되고, 하나의 책임만 가져야 한다.

2) 개방-폐쇄의 원칙

- 소프트웨어 구성 요소는 확장에 대해서는 개방되어야 하나 수정에 대해서는 폐쇄적이어야 한다.

3) 리스코프치환 원칙

- 부모 클래스가 들어갈 자리에 자식 클래스를 대체하여도 계획대로 작동해야 한다.

4) 인터페이스 분리 원칙

- 한 인터페이스는 자신이 사용하지 않는 인터페이스를 클라이언트에 특화되도록 분리해야 한다.

5) 의존 역전 원칙

- 의존관계를 맺으면 변하기 쉽고 변화 빈도가 높은 것보다 변하기 어렵고 변화 빈도가 낮은 것에 의존한다.

 

5. 럼바우(Rumbaugh) 객체지향 분석 기법

- 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 객체지향 분석 기법

 

1) 럼바우(Rumbaugh) 객체지향 분석 절차

(1) 객체 모델링(Object Modeling): 객체를 다이어그램으로 표시
(2) 동적 모델링(Dynamic Modeling): 상태를 시간 흐름에 다라 다이어그램으로 표시

(3) 기능 모델링(Functional Modeling): 자료흐름도(DFD)를 이용하여 여러 프로세스 간의 자료 흐름을 표시

 

체 모델링 -> 적 모델링 -> 능 모델링

# 객동기

 

6. Coad와 Yourdon 방법

- E-R 다이어그램을 사용하여 객체의 행위를 모델링하는 객체지향 분석 방법

'자격증 > 정보처리기사(필기)' 카테고리의 다른 글

아키텍처 설계  (0) 2023.05.11
미들웨어(Middleware)  (0) 2023.05.11
UI(User Interface, 사용자 인터페이스)  (0) 2023.05.10
요구사항 분석  (0) 2023.05.10
UML(Unifield Modeling Language)  (0) 2023.05.09

댓글