정보처리기사/필기

[1과목-3장-022] 객체지향 (Object-Oriented)

여니두 2020. 4. 10.

현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯 SW를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법

 

* 특징

1) 구조적 기법의 문제점으로 인한 SW 위기의 해결책으로 채택

2) SW의 재사용, 확장 용이 / 고품질의 SW를 빠르게 개발 가능 / 유지보수 쉬움

3) 복잡한 구조를 단계적, 계층적으로 표현 / 멀티미디어 데이터 및 병렬 처리를 지원

4) 현실 세계를 모형화 > 쉽게 이해 가능

 

* 주요 구성 요소

1. 객체 (Object)

: 데이터와 함수를 묶어 놓은 (캡슐화한) 하나의 소프트웨어 모듈

1) 데이터

- 객체가 가지고 있는 정보

= 속성, 상태, 변수, 상수, 자료구조

2) 함수

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

- 객체의 상태를 참조하거나 변경하는 수단이 되는 것.

= 메소드, 서비스, 동작, 연산

 

** 객체 특성

1) 독립적으로 식별 가능한 이름을 가짐

2) 상태: 객체가 가질 수 있는 조건

- 시간에 따라 변한다.

3) 객체와 객체는 상호 연관성에 의한 관계가 형성됨

4) 행위: 객체가 반응할 수 있는 메시지의 집합

- 객체는 행위의 특징을 나타낼 수 있다.

5) 일정한 기억장소를 가지고 있음

 

- 객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행

 

2. 클래스 (Class)

: 공통된 속성과 연산(행위)을 갖는 객체의 집합. 객체의 일반적인 타입을 의미.

 

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

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

- 인스턴스화: 클래스로부터 새 객체를 생성하는 것

- 동일 클래스에 속한 각각의 객체들은 공통된 속성, 행위를 가지고 있음 / 그 속성에 대한 정보가 서로 달라 동일 기능을 하는 여러 가지 객체를 나타내게 됨

- 최상위 클래스: 상위 클래스를 갖지 않는 클래스

- 슈퍼 클래스: 특정 클래스의 상위(부모) 클래스

- 서브 클래스: 특정 클래스의 하위(자식) 클래스

 

3. 캡슐화 (Encapsulation)

: 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것

 

- 세부 내용이 은폐(정보 은닉)되어 외부에서의 접근이 제한적 > 외부 모듈의 변경으로 인한 파급 효과가 적다.

- 재사용 용이, 인터페이스 단순, 객체 간 결합도가 낮아진다 (객체 내 응집도는 높아짐)

 

4. 상속 (Inheritance)

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

- 하위 클래스는 상위 클래스의 모든 속성, 연산을 자신의 클래스 내에서 재정의 않고서도 즉시 자신의 속성으로 사용 가능

- 하위 클래스는 상속받은 속성, 연산 외에 새 속성과 연산을 첨가하여 사용 가능

- SW의 재사용을 높이는 중요 개념

- 다중 상속: 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성, 연산을 상속받는 것

 

5. 다형성 (Polymorphism)

: 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력

 

- 객체들은 동일 메소드명을 사용, 같은 의미의 응답을 함

- 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것

댓글