정보처리기사

★ 009 애플리케이션 설계[객체지향(Object-Oriented)]

로춘남 2020. 5. 30. 23:50
728x90

1. 객체지향의 개요

- SW를 개발 할때 객체들을 조립해서 작성 할 수 있는 기법을 말함

- 객체지향 기법은 구조적 기법의 문제점으로 인한 SW 위기 해결책으로 사용

※ 구조적 기법: 절차에 근간을 두고, 하나의 커다란 작업을 여러 작은 작업으로 분할하고, 분할된 각 소작업을 수행하는 모듈을 작성. 그 다음 하나로 통합해 최종 작업을 수행하는 하나의 완벽한 프로그램을 작성하는 방법.

단, 구조적 기법은 유지보수를 고려하지 않고 개발 공정에 집중하기 때문에 추가 요구사항을 반영하기 어렵고, 재사용이 어렵다는 문제점이 있음.

- 객체지향은 SW의 재사용 및 확장이 용이하고, 고품질의 SW를 빠르게 개발 할 수 있고 유지보수가 쉽다.

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

- 현실 세계를 모형화하므로 사용자와 개발자가 쉽게 이해 가능

- 구성 요소와 개념: 객체/클래스/캡슐화/상속/다형성

 

2. 객체(Object)

- 데이터와 데이터를 처리하는 함수를 캡슐화한 하나의 SW 모듈

※ 데이터: 객체가 가지고 있는 정보로 속성, 상태, 분류, 변수, 상수 등을 나타냄

※ 함수: 객체가 수행하는 기능으로 데이터를 처리하는 알고리즘

- 객체는 독립적으로 식별 가능한 이름을 가짐

- 객체가 가질 수 있는 조건을 상태라고 하는데, 상태는 시간에 따라 변함.

- 객체와 객체는 상호 연관성에 의한 관계를 형성

- 객체가 반응 할 수 있는 메시지의 집합을 행위라고 하며, 객체는 행위의 특징을 나타냄

- 객체는 일정한 기억장소를 가지고 있음

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

 

3. 클래스(Class)

- 공통된 속성과 연산 행위를 갖는 객체의 집합으로, 객체의 일반적인 타입을 뜻함

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

- 클래스에 속한 각각의 객체를 인스턴스(Instance)라고 하며, 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantitation)라고함.

- 같은 클래스에 속한 객체들은 공통된 속성과 행위를 갖고 있으며, 그 속성에 대한 정보가 다르기 때문에 동일한 기능을 하는 객체가 여러가지됨.

- 슈퍼 클래스는 특정 클래스의 상위(부모) 클래스/ 서브 클래스는 하위(자식) 클래스를 의미

 

4. 캡슐화(Encapsulation)

- 데이터와 함수를 하나로 묶는 것을 의미. 캡슐화 된 객체는 재사용이 용이

- 캡슐화 된 객체는 인터페이스를 제외한 세부 내용이 정보 은닉되어 외부에서의 접근이 제한되며, 외부 모듈을 변경으로 인한 파급효과가 적다.

- 객체들 간의 상호작용에서 상대 객체의 세부 내용은 알 필요가 없으므로 인터페이스가 단순해지고, 객체간 결합도가 낮아짐.

 

5. 상속(Inheritance)

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

- 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스에서 다시 정의하지 않고서도 사용 할 수 있음

- 상위 클래스로부터 상속받은 송석과 연산에 추가적으로 새로운 속성과 연산을 첨가하여 사용 할 수도 있음

- 상위 클래스의 속성과 연산을 사용하기 때문에 객체와 클래스의 재사용을 높임

- 다중 상속(Multiple Inheritance): 한개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속 받는 것을 의미.

 

6. 다형성(Polymorphism)

- 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각각의 객체가 가지고 있는 고유한 방법으로 응답 할 수 있는 능력을 의미. 즉, 하나의 메시지에 대해 여러 가지 형태의 응답이 있다는 것을 의미

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

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

 

 

728x90