c++
C언어는 강력한 언어로 오랜시간동안 많은 시스템 소프트웨어, 모바일, 게임, 그래픽, 임베디드 프로그램의 개발에 사용되어 왔다. 하지만 컴퓨터의 속도가 빨라지면서 소프트웨어의 크기도 커지게 되었고, C언어로는 큰 소프트웨어를 개발시에 코드관리에 어려움이 있어 이를 개선하기 위해 C언어에 객체 지향 특성 밑 기능을 추가한 새로운 언어를 개발한다. >> C++
# 객체 지향 프로그래밍 : 클래스와 상속을 이용하여 소프트웨어의 재사용성을 높이고 소프트웨어의 개발과 관리를 쉽게 함.
C++ 언어의 목표
1. C언어로 작성된 프로그램과의 호환성(compatability)을 유지한다.
2. 소프트웨어의 재사용을 통해 소프트웨어의 생산성을 높이고, 복잡하고 큰 규모의 소프트웨어 작성, 관리, 유지 보수를 쉽게 하기 위해 데이터 캡슐화, 상속, 다형성 등 객체 지향 개념을 도입한다.
3. 타입 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다.
4. 실행 시간의 효율성 저하를 최소화한다.
C + something == C++
C++ 언어는 C언어에 다음과 같은 기능을 추가하여 개발되었다.
1. 함수 overloading : 매개변수의 개수나 타입이 서로 다른 동일한 이름의 함수들을 선언할 수 있게 한다.
2. 디폴트 매개 변수 : 매개 변수에 값이 전달되지 않는 경우 디폴트 값이 전달되도록 함수를 선언할 수 있게 한다.
3. 참조와 참조 변수 : 변수에 별명을 붙여 변수 공간을 같이 사용할 수 있는 참조의 개념을 도입한다.
4. 참조에 의한 호출(call-by-reference) : 함수 호출시 참조를 전달할 수 있게 한다.
5. new와 delete 연산자 : 동적 메모리 할당, 해제를 위한 new, delete 연산자를 도입한다.
6. 연산자 재정의(overloading) : 기존의 연산자에 새로운 연산을 정의할 수 있게 한다.
7. 제네릭 함수와 클래스 : 함수나 클래스를 데이터 타입에 의존하지 않고 일반화시킬 수 있게 한다.
( 요거는 공부를 더 하고 다시 읽어봐야겠둥 )
C++ 객체 지향 도입 목적
- 소프트웨어의 생산성 향상 (코드의 재사용성 증가)
- 실세계에 대한 쉬운 모델링
C++ 객체 지향 특성
+ 객체와 캡슐화 (Encapsulation)
- 캡슐화 : 데이터를 클래스로 감싸서 외부의 접근으로부터 데이터를 보호,
- 클래스 : 객체를 정의하는 틀
- 객체 : 클래스라는 틀에서 생겨난 실체(instance)
- c++ 클래스는 멤버 변수, 멤버 함수로 이루어진다.
- 멤버들은 public(외부에서 접근 가능)이거나 private(외부에서 접근 불가능)이다.
- 멤버변수는 private으로 보호하되 일부 멤버함수를 public으로 설정하여
간접적으로 멤버 변수에 접근할 수 있도록 한다.
+ 상속성 (inheritance)
- 상속 : 객체를 정의하는 클래스 사이에 상속 관계를 두어 자식 클래스의 객체가 생성될 때 자식 클래스의 멤버와
더불어 부모클래스의 멤버도 함께 가지고 생성되게 한다.
- 상속은 코드의 재사용성을 높여 소프트웨어 생산성을 높인다.
+ 다형성 (polymorphism)
- 다형성 : 하나의 기능이 경우에 따라 서로 다르게 보이거나 다르게 작동하는 현상.
- 연산자 중복 (operator overloading) : 같은 이름의 연산자가 피연산자에 따라 다르게 연산되는 것
- 함수 중복 (function overloading) : 같은 이름의 함수가 매개변수의 개수나 타입이 다르면 서로 다른 함수로 인식
- 함수 재정의 (function overriding) : 부모 클래스에 구현된 함수를 동일한 이름으로 자식 클래스에서 다르게 구현
절차 지향 VS 객체 지향
+ 절차 지향 프로그래밍 (procedural programming)
- 실행하고자 하는 절차대로 명령어를 나열
- 작업을 절차로 표현하고, 명령들의 순서나 흐름에 중점을 둔다.
+ 객체 지향 프로그래밍 (object oriented programming)
- 프로그램을 실제 세상에 가깝게 모델링하여 실제 세상의 물체를 객체로 표현
- 객체들의 관계, 상호 작용을 객체 지향 기법으로 구현
C++ 언어와 제네릭 프로그래밍
동일한 프로그램 코드에 다양한 데이터 타입을 적용할 수 있도록 함수와 클래스를 일반화시킨 제네릭 함수와 제네릭 클래스를 만들고, 개발자가 원하는 데이터 타입을 적용시켜 프로그램 코드를 틀에서 찍어내듯 생산하는 기법.
* C++ 표준 STL 라이브러리.
참고 // 명품 C++ 프로그래밍
'C | C++' 카테고리의 다른 글
<pthread.h> (0) | 2022.04.30 |
---|---|
open | close | read | write (저수준 파일입출력 함수) (0) | 2022.04.24 |
[0423] C 에러 해결 (0) | 2022.04.23 |
Makefile (0) | 2022.04.12 |
[ C ] 동적할당 malloc(), free() (0) | 2021.12.29 |
댓글