1. 재사용성과 객체 표현 기법, 객체지향의 개요
가. 객체지향(Object Oriented Programming)의 정의
- 실세계 개체(Entity)를 속성(Attribute)과 메소드(Method)가 결합된 형태의
객체(Object)로 표현하는 개념
- 구현대상을 하나의 객체로 보고, 그 객체를 객체와 객체들 간의 관계로 모델링하는
방법
나. 객체지향의 등장배경
- 소프트웨어 위기(낮은 생산성) 해결을 위한 대안으로 필요성 증대
- 컴퓨팅 환경에 대한 보다 많은 기능(Functionality), 단순성, 사용편의성에
대한 사용자 요구 증대
나. 객체지향의 등장배경
구 분 | 내 용 |
---|---|
개발 측면 | - 저품질, 고위험 요소의 전통적인 개발 방법론 문제점 극복 - 소프트웨어 위기를 해결하기 위한 재사용성, 확장성 증대 필요 |
사용자 측면 | - 컴퓨팅 환경의 보다 많은 기능, 단순성, 사용편의성 등 사용자들의 욕구 증대 |
2. 객체지향의 개념도 및 구성요소
가. 객체지향의 개념도
- 클래스(Class) 간의 관계(Relation)를 이용하여 메시지를 주고 받는 것으로
상호작용 수행
나. 객체지향의 구성요소
1) 클래스(Class)
- 같은 종류의 집단에 속하는 속성(Attribute)과 행위(Behavior)를 정의한 집합
- 객체지향 프로그램의 기본적인 사용자 정의 데이터형(User Defined Date Type)
- 누구라도 사용할 수 있고, 다른 클래스 또는 외부 요소와 독립적으로 설계
클래스 | 객체(인스턴스) |
---|---|
제품 설계도 | 제품 |
TV 설계도 | TV |
붕어빵 기계 | 붕어빵 |
- 클래스의 인스턴스(실제로 메모리상에 할당된 것)
- 자신 고유의 데이터(attribute)를 가지며 클래스에서 정의한 행위(behavior)를 수행
- 객체의 행위는 클래스에 기술된 행위에 대한 정의를 공유함으로써 메모리를
경제적으로 사용
3) 속성(Attribute) : 객체의 데이터
4) 메소드(Method)
- 객체의 행위(함수, 기능)
- 클래스로부터 생성된 객체를 사용하는 방법
5) 메시지(Message) : 객체(Object) 간의 통신
3. 객체지향의 주요성질
가. 캡슐화 : Encapsulation
1) 정의 : 서로 관련성이 많은 데이터와 이를 참조하는 기능을 하나로 묶어 처리하는
객체지향의 특성
2) 개념도
3) 특징
- Readability 향상으로 유지보수 용이
- 재사용성이 높은 소프트웨어 개발
- 객체간에 인터페이스(메시지)를 이용하여 종속성 최소화
나. 추상화 : Abstraction
1) 정의 : 현실 세계의 물체에서 공통 성질을 추출하여 간결하고 명확한 모델
(수퍼클래스)로 표현하는 개념
2) 추상화의 종류
- 기능추상화 : 클래스 내 메소드를 정의. obj.getName()
- 자료추상화 : 객체 클래스 자체를 데이터 타입으로 사용. String, Class
- 제어추상화 : 제어행위에 대한 개념화, 명령 및 이벤트. if, for, while
3) 개념도
4) 특징 : 복잡한 프로그램을 간단하게 분석의 초점을 명확히 함
다. 다형성 : Polymorphism
1) 정의 : 하나의 클래스 내에 동일한 이름의 메소드가 존재하거나, 하위 클래스에서
상위 클래스에 있는 같은 이름의 메소드를 재정의할 수 있는 기법
2) 개념도
3) 다형성의 종류
- Overloading : 동일한 클래스 내에서 같은 이름(매개변수의 수와 타입이 다름)의
메소드를 정의할 수 있는 성질(수평적 다형성)
- Overriding : 상위 클래스의 같은 이름(매개변수의 수와 타입이 같음)의
메소드를 재정의할 수 있는 성질(수직적 다형성)
4) 특징 : 동일한 메소드 명으로 상이한 기능을 구현하여 하나의 메시지가 객체에
따라 다르게 응답가능
라. 정보은닉 : Information Hiding
1) 정의 : 캡슐화된 클래스 내부의 항목을 다른 객체로부터 은닉하고,
접근 제한을 단계를 두어 메시지 전달에 의해 다른 클래스 내의 자료를
접근하는 개념. 낮은 결합도
2) 개념도
마. 상속성 : Inheritance
1) 정의 : 상위클래스의 속성과 메소드를 하위클래스에서 재정의없이 물려받아
사용할 수 있는 개념
2) 개념도
- 단일 : 부모와 자식 클래스 간의 1대1 관계로 상속받는 유형
- 다중 : 하나의 클래스가 하나이상의 클래스로부터 1대N 관계로 상속받는 유형
- 복합 : 같은 조부모 클래스로부터 상속받은 두 부모클래스로 부터 상속받는 유형
4. 객체지향과 CBD방법론 비교
구분 | 객체지향 | CBD |
---|---|---|
주요관점 | 객체중심 | 컴포넌트중심 |
개발모형 | 점진적, 반복적 | 점진적, 반복적 |
장점 | - 경험없는 프로젝트에 용이 - 재사용성 증대 - 객체를 중심으로 개발하여 의사소통에 유리 | - 컴포넌트 조립으로 개발생산성 향상 - 독자적인 컴포넌트 제품계열을 구성하여 기출축적 가능 |
단점 | - 대규모 프로젝트 적용 어려움 - 성숙한 객체 기술자 필요 - 상속으로 재사용성이 떨어지는 역효과 발생 - 생산성 향상 플랫폼과 기반 아키텍처에 제약 | - 조직에 따라 적용 - 가능한 컴포넌트 기술 수준이 다름 - 업종별 특성을 지닌 컴포넌트 부족 |
"끝"
댓글 없음:
댓글 쓰기