객체지향이란??
개체( Entity )를 기계의 부품처럼 하나의 객체( Object )로 만들어, 기계적인 부품들을 조립하여 제품을 만들듯이 소프트웨어를 개발할 때에도 객체를 조립하여 작성하는 기법을 말한다.
객체지향 기법은 구조적 기법의 문제점으로 인한 소프트웨어의 위기의 해결책으로 채택되어 사용되고 있다.
소프트웨어의 재사용 및 확장이 용이하여 고품질의 소프트웨어를 빠르게 개발할 수 있고 유지보수가 쉽다.
객체지향은 복잡한 구조를 단계적, 계층적으로 표현하고 멀티미디어 데이터 및 병렬 처리를 지원한다.
사용자와 개발자가 쉽게 이해할 수 있다.
주요 구성요소와 개념
- 객체 ( Object )
- 클래스 ( Class )
- 캡슐화 ( Encapsulation )
- 상속 ( Inheritance )
- 다형성 ( Polymorphism )
- 연관성 ( Relationship )
객체 ( Object )
데이터와 데이터를 처리하는 함수를 묶어 놓은( 캡슐화된 ) 하나의 소프트웨어 모듈을 말한다.
객체의 데이터
객체의 성보, 속성, 상태, 분류를 나타냄
속성, 상태, 변수, 상수, 자료구조라고도 한다.
객체의 함수
객체가 수행하는 기능으로 객체가 갖는 데이터( 속성, 상태 )를 처리하는 알고리즘이다.
객체의 상태를 참조하거나 변경하는 수단이 되는 것으로 메소드( Method : 행위 ), 서비스( Service ), 동작( Operation ) 연산이라고도 한다.
객체의 특성
- 객체는 독립적으로 식별 가능한 이름을 가지고 있다.
- 객체가 가질 수 있는 조건을 상태 ( State )라고 하는데, 일반적인 상태는 시간에 따라 변한다.
- 객체와 객체는 상호 연관성에 의한 관계가 형성된다.
- 객체가 반응할 수 있는 메세지( Message )의 집합을 행위라고 하며 객체는 행위의 특징을 나타낸다.
- 객체는 일정한 기억장소를 가지고 있다.
Message?
객체들 간의 상호작용을 하는데 사용되는 수단을 말한다.
객체에게 어떠한 행위를 하도록 지시하는 명령 또는 요구사항이다.
객체의 메소드는 다른 객체로부터 메세지를 받을 때 정해진 기능을 수행한다.
클래스 ( Class )
공통된 속성과 연산( 행위 )를 갖는 객체의 집합으로 객체의 일반적인 타입( Type )을 의미한다.
클래스의 특징
- 클래스는 각각의 객체들이 갖는 속성과 연산을 정의하고 있는 틀, 뼈대이다.
- 클래스는 객체지향에서 데이터를 추상화하는 단계이다.
- 클래스에 속한 각각의 객체를 인스턴스( Instance )라 하며 클래스로 부터 새로운 객체를 생성하는 것을 인스턴스화 ( Instantication )라고 한다.
- 동일 Class에 속한 각각의 Instance들은 공통된 속성과 행위를 가지고 있으며, 그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러가지 객체를 나타내게 된다.
- 최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미한다.
- Super Class는 특정 Class의 상위( 부모 )클래스이고, 서브 클래스( Sub Class )는 특정 클래스( 하위, 자식 클래스 )를 의미한다.
캡슐화 ( Encapsulation )
데이터( 속성 )와 데이터를 처리하는 함수를 하나로 묶는 것을 말한다.
캡슐화의 특징
- 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐( 정보은닉 )되어 외부의 접근이 제한적이다. 따라서 외부 모듈의 변경으로 인한 파급효과가 적다.
- 캡슐화된 객체들은 재사용이 용이하다.
- 객체들간에 메세지( Message )를 주고 받을 때, 상대 객체의 세부정보를 알 필요가 없으므로 Interface가 단순해지고, 결합도 또한 낮아진다.
상속 ( Inheritance )
이미 정의된 상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것이다.
상속의 특징
- 상속을 이용하면 상위 클래스와 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고 즉시 자신의 속성으로 사용할 수 있다.
- 하위 클래스는 상속받은 속성과 연산외에 새로운 속성과 연산을 첨가하여 사용할 수 있다.
- 객체와 클래스의 재사용, 즉 소프트웨어의 재사용을 높이는 중요한 개념이다.
- 다중 상속 ( Multiple Inheritance ) : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것을 말한다.
다형성 ( Polymorphism )
메세지( Message )에 의해 객체( 클래스 )가 연산을 수행하게 될 때 하나의 메세지에 대해 각각의 객체( 클래스 )가 가지고 있는 고유한 방법( 특성 )으로 응답할 수 있는 능력을 의미한다.
- 객체( 클래스 )들은 동일한 메소드명을 사용하며 같은 의미의 응답을 한다.
- 응용 프로그램 상에서 하나의 함수나 연산자가 두 개 이상의 서로 다른 클래스의 인스턴스들을 같은 클래스에 속한 인스턴스처럼 수행할 수 있도록 하는 것이다.
연관성 ( Relationship )
두 개 이상의 객체( 클래스 )들이 상호 참조하는 관계를 말한다.
연관성의 종류
종류 | 의미 | 특징 |
is member of | 연관화 ( Association ) | 2개 이상의 객체가 상호 관련되어 있음을 의미함 |
is instance of | 분류화 ( Classification ) | 동일한 형의 특성을 갖는 객체들을 모아 구성하는 것을 의미함 |
is part of | 집단화 ( Aggregation ) | 관련있는 객체들을 묶어 하나의 상위 객체로 구성하는 것을 의미함 |
is a | 일반화 ( Generalization ) 특수화 / 상세화 ( Specialization ) |
상위 객체를 구조화하여 하위 객체를 구성하는 것을 의미함 |
'Etc > 정보처리기사' 카테고리의 다른 글
[정처기] 소프트웨어 테스트 기법에 대해 알아보자! (0) | 2022.02.28 |
---|---|
[정처기] 디자인 패턴 ( Design Pattern )을 알아보자! (0) | 2022.02.26 |
[정처기] UML에 대해 알아보자! (0) | 2022.02.17 |
[정처기] 요구사항 정의를 알아보자! (0) | 2022.02.16 |
[정처기] Software 개발 방법론의 개요 (0) | 2022.02.16 |