|객체지향의 개요
- 현실 세계의 개체(entity)를 기계의 부품처럼 하난의 객체(Object)로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때에도 객체들을 조립해서 작성할 수 있는 기법
- 특징
- 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택되어 사용
- 소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉽다.
- 복잡한 구조를 단계적, 계층적으로 표현하고, 멀티미디어 데이터 및 병렬 처리를 지원한다.
- 현실 세계를 모형화하므로 사용자와 개발자가 쉽게 이해할 수 잇다.
- 주요 구성 요소와 개념
- 객체 Object
- 클래스 Class
- 캡슐화 Encapsulation
- 상속 Inheritance
- 다형성 Polymorphism
- 연관성 Relationship 등
|객체 Object
- 데이터와 데이터를 처리하는 함수를 묶어 놓은(캡슐화한) 하나의 소프트웨어 모듈
| 데이터 | - 객체가 가지고 있는 정보로 속성이나 상태, 분류 등을 나타낸다.
- 속성, 상태, 변수, 상수, 자료 구조라고도 한다. |
| --- | --- |
| 함수 | - 객체가 수행하는 기능으로 객체가 갖는 데이터를 처리하는 알고리즘
- 개체의 상태를 참조하거나 변경하는 수단이 되는것으로 메소드(Method), 서비스, 동작(Operation), 연산이라고 한다. |
- 특성
- 객체는 독립적으로 식별 가능한 이름을 가지고 있다.
- 객체가 가질 수 있는 조건을 상태(State)라고 하는데, 일반적으로 상태는 시간에 따라 변한다.
- 객테과 객체는 상호 연관성에 의한 관계가 형성된다.
- 객체가 반응할 수 있는 메시지의 집합을 행위하고 하며, 객체는 행위의 특징을 나타낼 수 있다.
- 객체는 일정한 기억장소를 가지고 있다.
- 객체의 메소드는 다른 객체로부터 메시지를 받았을 때 정해진 기능을 수행한다.
|클래스 Class
- 공통된 속성과 연산을 갖는 객체의 집합, 객체의 일반적인 타입을 의미
- 특징
- 각각의 객체들이 갖는속성과 연산을 정의하고 있는 틀
- 객체지향 프로그램에서 데이터를 추상화하는 단위
- 클래스에 속한 각각의 객체를 인스턴스(Instacce)라 하며, 클래스로 부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 한다.
- 동일 클래스에 속한 각각의 객체(인스턴스)들은 공통된 속성과 행위를 가지고 있으면서, 그 속성에 대한정보가 서로 달라서 동일 기능을 하는 여러 가지 객체를 나타내게 된다.
- 최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미
- 슈퍼 클래스는 특정 클래스의 상위(부모) 클래스이고, 서브 클래스는 특정 클래스의 하위(자식) 클래스를 의미
|캡슐화 Encapsulation
- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
- 특징
- 캡슐화된 객체는인터페이스를 제외한 세부 내용이 은폐(정보 은닉)되어 외부에서 접근이 제한적이기 때문에 외부 모듈의 변경으로 인한 파급효과가 적다.
- 캡슐화된 객체들은 재사용이 용이
- 객체들 간의 메시지를 주고 받을 때 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체 간의 겳하도가 낮아진다.
|상속 Inheritance
- 이미 정의된 상위 클래스의 모든 속성과 연산을하위 클래스가 물려 받는 것
- 특징
- 상속을이용하면 하위 클래스는상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있다.
- 하위 클래스는 상위 클래스로부터 상속받은속성과 연산 외에 새로운 속성과 연산을 첨가하여 사용할 수 있다.
- 상위 클래스의 속성과 연산을 하위 클래스가 사용할 수 있기 때문에 객체와 클래스의 재사용, 즉 소프트웨어의 재사용을 높이는 중요한개념