참고 :
- 명품 C++ Programming (저자 황기태)
- 객체지향프로그래밍
프로그래밍 언어
- 기계어 - 어셈블리어 - 고급언어
- 어셈블러 : 어셈블리어 프로그램을 기계어 코드로 변환
- 컴파일러 : 고급 언어로 작성된 프로그램을 기계어 코드로 변환
- 컴파일 : 고급 프로그램을 기계어 프로그램으로 변환하는 과정
C++ 언어의 역사
- 연대순 C → C++ → JAVA → C#
- C언어에 객체 지향 특성(object oriented programming) 및 기능 추가
- C++은 C언어의 모든 기능 유지
- C++ 표준
- 1998년 ANSI(American National Standards Institue)에서 표준 설정
- 그 후 C++ 표준 계속 진화
- 표준의 중요성
- 모든 플랫폼, 모든 표준 C++ 컴파일러에 의해 컴파일 가능
- 어떤 컴퓨터에서도 동일한 실행 결과 보장
- 운영체제와 컴파일러의 종류에 관계없는 높은 호환성
C++ 주요 설계 목적
호환성 Compatability
- C 문법 체계 계승
- 소스 - C 프로그램 그대로 사용
- 링크 - C 목적 파일과 라이브러리 링크하여 사용
객체 지향 개념 도입
- 캡슐화, 상속, 다형성
- 소프트웨어의 재사용을 통해 생산성 향상
- 소프트웨어의 작성, 관리, 유지보수 용이
엄격한 타입 체크
- 실행 시간 오류의 가능성 줄임
- 디버깅 편이
실행 시간의 효율성 저하 최소화
- 인라인 함수 도입 등으로 잦은 멤버 함수 호출로 인한 시간 저하 막음
C언어에 추가한 기능
- 함수 중복 fuction overloading overloading - 매개 변수에 따라 함수가 중복됨 overriding - 객체에 따라 원하는 데로 바꿔씀
- 디폴트 매개 변수 default parameter
- 참조와 참조 변수 reference
- 참조에 의한 호출 call by reference
- new / delete 연산자
- 연산자 재정의
- 제네릭 함수와 클래스
객체 지향 특성
캡슐화 Encapsulation - class
- 데이터를 클래스 class로 싸서 외부의 접근으로부터 보호
- 내부에서 동작하는 것을 외부에서 볼 수 없음
- 클래스 - 객체를 만드는 틀 (class는 객체(실체)가 아님)
- 객체 - 클래스에서 생겨난 실체 (객체 object == 실체 instance)
- 캡슐화의 목적
- 외부 접근 제한
- 객체 내 데이터에 대한 보안, 보호
상속성 Inheritance
- 객체가 자식 클래스의 멤버와 부모 클래스에 선언된 모양 그대로 멤버들을 가지고 탄생
다형성 Polymorphism
- 하나의 기능이 경우에 따라 다르게 보이거나 다르게 작동하는 현상
- 연산자 중복, 함수 중복, 함수 재정의 overriding
객체 지향 도입 목적
- 소프트웨어 생산성 향상
- 소프트웨어의 생명 주기 단축 문제 해결
- 기작성된 코드의 재사용
- 절차 지향 프로그래밍
- 실행하고자 하는 절차대로 일련의 명령어 나열
- 흐름도를 설계하고 흐름도에 따라 프로그램 작성
- 객체 지향 프로그래밍
- 객체들을 정의하고 객체들의 상호 관계, 상호작용으로 구현
제네릭 프로그래밍
- 동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있게 일반화
- generic function, generic class
- template 키워드로 선언
C언어와의 호환성 추구
- 장점 - 기존에 개발된 C 프로그램 코드 활용
- 단점 - 캡슐화의 원칙이 무너짐 (전역 변수와 전역 함수 사용)
프로그램 개발 과정
- 소스 파일.cpp → 컴파일 → 목적 파일.obj → 링킹 → 실행 파일.exe → 실행
- 소스 파일은 텍스트 파일
- 컴파일 - 소스 파일을 기계어를 가진 목적 파일로 변환
- 링킹 - 목적 파일끼리 합쳐 실행 파일을 만드는 과정 (목적 파일은 바로 실행 불가능) - 목적 파일과 C++ 표준 라이브러리의 함수 연결
- 실행 파일 - 독립적으로 바로 실행 가능
- 디버깅 - 실행 중 발생한 오류를 찾는 과정
C++ 표준 라이브러리
- C 라이브러리
- C++ 입출력 라이브러리
- C++ STL 라이브러리 - 제너릭 프로그래밍을 지원하기 위한 탬플릿 라이브러리
'[전공]' 카테고리의 다른 글
[명품 C++] 05 함수와 참조, 복사 생성자 (6) | 2022.06.05 |
---|---|
[명품 C++] 04 객체 포인터와 객체 배열, 객체의 동적 생성 (0) | 2022.06.02 |
[명품 C++] 03 - 2 생성자 소멸자 구조체 (0) | 2022.06.02 |
[명품 C++] 03 클래스와 객체 (0) | 2022.06.02 |
[명품 C++] 02 C++ 프로그래밍의 기본 (0) | 2022.06.02 |