[1과목-3장-022] 객체지향 (Object-Oriented)
현실 세계의 개체를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯 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)
: 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법(특성)으로 응답할 수 있는 능력
- 객체들은 동일 메소드명을 사용, 같은 의미의 응답을 함
- 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것
'정보처리기사 > 필기' 카테고리의 다른 글
[1과목-3장-024] 공통 모듈 (0) | 2020.04.10 |
---|---|
[1과목-3장-023] 모듈 (0) | 2020.04.10 |
[1과목-3장-021] 아키텍처 패턴 (0) | 2020.04.09 |
[1과목-3장-020] 소프트웨어 아키텍처 (0) | 2020.04.06 |
[1과목-2장-019] HCI/UX/감성 공학 (0) | 2020.04.05 |
댓글