티스토리 뷰

C++

[C++] 1. 객체 지향 언어

JH_ 2021. 10. 4. 19:30

(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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday