C++언어의 역사, 특징, 객체 지향 특성.

기존에 사용되던 C언어는 1972년부터 사용되어왔습니다. 하지만 시대를 거듭할수록 단순 계산뿐만이 아닌 프로그램을 구동시키기 위한 언어가 필요하였고, C언어의 한계를 극복하기 위하여 1979년부터 객체 지향 특성및 기능을 추가한 새로운 언어를 개발하였고 1983년에 C++로 정의되었습니다.



-C++언어는 C 언어의 모든 기능을 가지고 있기 때문에 이미 작성된 C소스 프로그램은 C++프로그램으로 재사용이 가능하고 C목적 코드도 C++ 프로그램에서 링크하여 사용이 가능합니다.


-



C++ 언어의 특징

-C언어로 작성된 프로그램과의 호환성을 유지.

-소프트웨어의 재사용을 통해 소프트웨어 생산성을 높이고, 복잡하고 큰 규모의 소프트웨어 작성, 관리, 유지보수를 쉽가하기위해 데이터 캡슐화, 상속, 다형성등의 객체 지향 개념을 도입한다.

-타입 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다.

- 실행 시간의 효율성 저하를 최소화한다.



C++에 추가된 기능

함수 중복 : 매개 변수의 개수나 타입이 서로 다른 동일한 이름의 함수들을 선언할 수 있게 한다.

디폴트 매개 변수 : 매개 변수에 값이 전달되지 않는 경우 디폴트 값이 전달되도록 함수를 선얼할 수 있게 한다.

참조 : 변수에 별명을 붙여 변수 공간을 같이 사용할수 있는 참조의 개념을 도입.

참조에 의한 호출 : 함수 호출시 참조를 전달할 수 있게 한다.

new와 delete 연산자 : 동적 메모리 할당, 해제를 위한 new, delete 연산자를 도입한다.

연산자 재정의 : 기존의 연산자에 새로운 연산을 정의할 수 있게 한다.

제네릭 함수와 클래스 : 함수나 클래스를 데이터 타입에 의존하지 않고 일반화 시킬 수 있게 한다.



C++의 객체 지향 특성

그전에 캡슐화는 데이터를 캡슐로 싸서 외부의 접근으로부터 데이터를 보호하는 객체 지향 특성입니다.

C++에서의 캡슐은 클래스라고 정의합니다. class키워드를 사용하며, 객체를 정의합니다.

객체는 클래스라는 틀에서 생겨난 실체이며

C++클래스는 멤버변수, 멤버함수로 이루어지며 각 멤버들은 공개(public),비공개(private)로 선언가능합니다.

1
2
3
4
5
6
7
8
class Circle
{
private:
    int radius; //반지름 값 비공개
public:
    Circle(int r) { radius = r; }
    double getArea() { return 3.14 * radius * radius }
};
cs



상속성

자식이 부모의 유전자를 물려받는것과 비슷합니다. C++에서는 클래스사이에 상속 관계를 두어, 부모 클래스에 선언된 멤버들도 함께 가지고 탄생하게됩니다.


1
2
3
4
class Phone {
    void call(); // 전화 걸기
    void receive(); //전화 받기
};
cs


1
2
3
4
class MobilePhone : public Phone { //Phone을 상속받는다.
    void connectWireless(); // 무선 기지국 연결
    void recharge(); // 배터리 충전
};
cs

1
2
3
4
class MusicPhone : public MobilePhone { //MobilePhone을 상속받는다.
    void dounloadMusic(); // 음악 다운
    void play(); // 음악 재생
};
cs

다형성

하나의 기능이 경우에 따라 다르게 작동하는것입니다.

+연산자를 예로 들면, +연산자 하나로 문자열 연결, 객체 더하기등 피연산자에 따라 서로 다른 연산이 가능합니다.

1
2
3
2 + 3 ==> 5
"남자"+"여자" ==>"남자여자"
 
cs

이러한 현상은 연산자 중복이라고합니다.


또한, 같은 이름의 함수가 매개 변수의 개수나 타입이 다르면 다른함수로 인식되는 함수 중복도 다형성의 하나이다..

1
2
3
void add(int a, int b) {...}
void add(int a, int b, int c) { ... }
void add(int a, double d) { ... }
cs

위 3개의 함수들은 모두 다른함수로 다루어진다.



C++에서 객체 지향을 도입한 목적

- 소프트 웨어 생산성 향상

- 쉬운 모델링



설차 지향와 객체 지향

절차 지향



객체 지향 관계도객체 지향