객체지향
태그 :
- 개념
- 실 세계의 개체(Entity)를 속성(Attribute)와 메소드(Method)가 결합된 형태의 객체(Object)로 표현하는 개념 실 세계의 문제영역에 대한 표현을 소프트웨어 해결 영역으로 mapping 하는 방법으로 객체간에 메시지를 주고받는 형태로 시스템 구성
1. 객체지향의 특징
가. 모형의 적합성
- 객체중심 모형은 우리의 사고 방식과 유사
- 뚜렷하게 구별되는 객체로 나누고 객체들의 메시지 패싱이 모여 프로그램이 됨
나. 재사용 용이
- openness, closeness를 다 갖춘 재사용 단위
- 상속(inheritance), 다형성(polymorphism)
다. Time – to – market
- 종래의 폭포수모형은 단계가 길고 문서 작업이 많음
- 클래스의 재사용과 확장에 의한 빠른 개발이 가능
라. 설계와 프로그램의 매핑
- 개발 각 단계의 전환이 자연스럽고 신속
라. 객체지향 시스템의 구조
2. 재사용성과 객체표현기법, 객체지향의 정의
가. 객체지향(Object Oriented)의 정의
- 실 세계의 개체(Entity)를 속성(Attribute)와 메소드(Method)가 결합된 형태의 객체(Object)로 표현하는 개념
- 실 세계의 문제영역에 대한 표현을 소프트웨어 해결 영역으로 mapping 하는 방법으로 객체간에 메시지를 주고받는 형태로 시스템 구성
나. 객체지향의 등장배경
- 소프트웨어 위기 해결을 위한 대안 필요성 증대
- 컴퓨팅 환경에 대한 보다 많은 기능(Functionality), 단순성, 사용편의성에 대한 사용자 요구 증대
3. 객체지향의 개념도 및 구성요소
가. 객체지향의 개념도
- 클래스 간의 릴레이션, 객체간의 상호작용은 메시지를 통해서 이루어 짐.
나. 객체지향(Object Oriented)의 구성요소
구성요소 |
상 세 내 용 |
|||||
객체 (Object) |
데이터(실체)와 그 데이터에 관련되는 동작(절차, 방법, 기능)을 모두 포함한 개념 |
|||||
메시지(Message) |
객체들 간의 통신은 메시지를 통해 이루어지고 메시지는 수신받을 객체(Receiver)와 수행 메소드명, Argument로 구성 됨 |
|||||
클래스 (Class) |
동일 성격의 객체 그룹을 구현 객체는 클래스의 한 인스턴스(instance)가 됨 |
|||||
캡슐화 (Encapsulation) |
속성(데이터)과 메소드(연산)을 하나로 묶어서 객체로 구성하는 것 |
|||||
개념도 |
||||||
특징 |
클래스를 선언하고 그 클래스를 구성하는 객체에 대하여 “public” 선언 시 외부에서 사용가능, “private” 선언 시 불가 |
|||||
장점 |
-Readability향상: 유지보수 용이 -재사용성이 높은 소프트웨어 개발 -정보은닉(Information Hiding)으로 내부자료에 대한 일괄성 유지 -객체간 인터페이스(메시지)를 이용하여 종속성 최소화 |
|||||
추상화 (Abstraction) |
공통 성질을 추출하여 슈퍼클래스를 설정하는 것 1) 기능추상화 - 클래스 내 메소드를 정의(obj.getName()) 2) 데이터추상화 - 객체 클래스 자체를 데이터 타입으로 사용(String, Class) 3) 제어추상화 - 제어행위에 대한 개념화, 명령 및 이벤트(if, for, while) |
|||||
개념도 |
|
|||||
특징 |
객체지향 언어에서는 클래스를 이용함으로써 데이터와 프로세스를 함께 추상화의 구조에 넣어 보다 완벽한 추상화 실현 |
|||||
장점 |
객체중심의 안정된 모델 구축 실세계를 자연스럽게 표현 분석의 초점이 명확 |
|||||
다형성 (Polymorphism) |
동일한 이름의 오퍼레이션(메소드)이 각 클래스마다 다른 사양으로 정의될 수 있다는 것을 말함 |
|||||
종류 |
Overloading |
메소드의 이름은 같으나 argument나 retrun type이 다른 경우 |
||||
Overriding |
Argument와 return type 같은 경우 |
|||||
정보은닉 (Information Hiding) |
캡슐화된 항목들이 다른객체(Object)에게 보이지 않게 하는것 메시지 전달에 의해 다른 클래스내의 메소드가 호출됨 |
|||||
상속성 (Inheritance) |
하위 클래스에게 자신의 속성과 메소드를 사용할 수 있도록 허용하는 것 |
|||||
종 류 |
단일 |
부모와 자식 클래스 간의 관계가 수퍼클래스와 서브클래스로 유지 |
||||
다중 |
하나의 클래스가 하나 이상의 클래스로부터 상속 받음 |
|||||
반복 |
같은 조부모 클래스로부터 상속 받은 두 부모 클래스로부터 상속 받는 것 |