티스토리 뷰
(1) 객체 지향 프로그래밍 등장 배경
- 소프트웨어 규모의 대형화, 복잡화로 개발비용 증가
- 소프트웨어 가격폭 상승
- 프로그램 유지보수의 어려움과 개발 적체 현상
※ 소프트웨어를 효율적으로 설계/구현하는 방법론 필요 -> Divide and Conquer
(2) 해결책 : 객체 지향 프로그래밍
- 객체 지향: 문제의 모든 초점을 실세계에 존재하는 객체 중심으로 생각
- object = data + code
- program = object1 + object2
object |
data (fields, attributes, properties) |
code (methods) |
(3) 구조적 프로그래밍 VS 객체 지향 프로그래밍
구조적 프로그래밍 | 객체 지향 프로그래밍 |
- 처리 동작에 중점을 두어 프로그램 작성 - 데이터와 처리 동작을 별도로 구분하여 둘 사이에 밀접한 연관성이 부족 - 데이터가 프로그램 전체에 노출 |
- 구조적 프로그래밍 기법 계승 - 데이터와 처리 동작을 하나로 묶어 다루는 객체 개념 도입 - 소프트웨어 확장 및 재사용 기회 증가 |
(4) 클래스와 객체
클래스 | 객체 |
- 데이터와 함수들을 정의한 객체의 기본 규격 - 객체의 타입 - 설계도 |
- 데이터와 함수를 하나로 묶어 만든 요소 - 실질적으로 만들어진 것 - 집 - (=인스턴스) |
(5) 객체지향 프로그래밍 기술
1. 캡슐화
- 사용자 정의 자료형 = 클래스로 추상 자료형을 지원
- 모든 데이터와 연산이 한 묶음(class)으로 결합한다는 의미에서 캡슐화라고 함
2. 상속성
- 기본 클래스의 정의된 속성을 상속받는 것
- 기본클래스, 부모클래스 > 파생클래스, 자식클래스
- 프로그램의 재사용이 수월해 개발 비용과 복잡도를 줄일 수 있음
- 자료형의 계층화도 가능 (상위: 일반화 / 하위: 세분화,구체화)
3. 다형성
- 하나의 함수 이름이나 연산자를 여러 목적으로 사용
- 유사한 기능은 하나의 이름으로 복잡도를 감소시킴
'C++' 카테고리의 다른 글
[C++] 7. 함수 오버로딩과 디폴트 매개변수 (0) | 2021.11.09 |
---|---|
[C++] 5. const (0) | 2021.11.02 |
[C++] 4. 생성자와 소멸자 (0) | 2021.10.19 |
[C++] 2. 클래스와 객체 만들기 (0) | 2021.10.12 |
[C++] 기본 형식 (0) | 2021.09.28 |
댓글