C++ ...
미국 AT & T사의 벨 연구소의 Bjarne Stroustrup이 모의실험(simulation) 프로그램을 작성하기 위하여 개발했다. C언어에서의 시스템 프로그래밍에 적합한 기능들을 도입하고 최초의 객체지향 언어로 인정되고 있는 Simula67에서 클래스와 가상 함수(Virtual Function)개념을 도입하고, Algol68에서 연산자 중복(Operator Overloading)개념을 도입하여 1983에 C++이라는 새로운 객체지향 언어를 선보이게 되었다.
C++는 C에서 제공하는 대부분의 기능을 포함하고 있고, 새로운 객체지향 프로그래밍(OOP)과 추상화된 데이터 타입에(ADT:abstract data type)에 적합한 언어이다. C와의 가장 본질적인 차이는 C++에서 제공하는 객체지향 프로그래밍 기법에 있다.
C++는 또 C에 비해 강력한 타입을 제공하고, C보다 프리프로세서에 대한 의존도 역시 크다. C++의 개선된 기능중에 한 라인 주석을 서술할 수 있는 '//'명령의 추가와 함께 코드를 사용하는데 용이할 뿐만 아니라 코드가 더욱 안전해 졌다. 반면에 언어의 복잡성이 중요한 단점으로 지적되는데 그 이유는 C 언어의 29 개의 예약어에 비해 훨씬 많은 42개의 예약어를 C++가 갖고 있기 때문이다.
C++라는 이름은 'Rick Mascitti'에 의해 붙여졌으며, C보다 향상된 개념의 언어라는 차원에서 C언어의 증가 연산자인 '++'를 사용하여 이름이 만들어 졌다고 한다.
C++의 배경으로 C가 선택된 이유는 C의 단순성, 편리성, 이식성이라고 할 수 있으며, C++는 각종 응용 프로그램 개발에 용이하고 객체 지향 개념의 추가로 프로그램의 유지, 보수면에서도 융통성을 보인다.
객체 지향에 대하여...
위에서 잠깐 제시된 객체 지향이라는 새로운 개념에 대해 좀더 자세히 알아보기로 하자. 먼저 객체지향(object oriented:OO)의 중요한 용어들에 대한 정의는 다음과 같다.
객체(object) 변수나 함수에 해당하며 복잡한 데이터 구조를 일컫는다.
클래스(class) 일반적인 언어에서는 데이터 형(data type)이라고 하는데 좀더 정확한 표 현은 추상화된 데이터 형(abstract data type)이다.사용자 정의에 의해서 클래스를 지정할 수 있고, 다른 클래스를 이용하여 클래스를 정의 할 수 도 있다.
메서드(method) 특정한 클래스에 해당하는 객체를 수행하는 연산(operation)이나 함수(function)
메시지(message) 주어진 객체에 대해 연산을 수행하기 위해 그 객체에 메시지를 보내는데, 즉 객체끼리의 의미전달이 메시지를 통해서 이루어진다.
다형성(polymorphism) 하나의 연산자나 함수에 하나 이상의 의미를 부여하는 것이다.
상속성(inheritance) 다른 새로운 클래스를 지정할 때 기존의 클래스의 기술을 받아 재사용하 는 능력이다.
캡슐화(encapsulation) 데이터 형들의 내적인 구현 항목과 객체들상에서 작동할 수 있는 외적으 로 가능한 연산들과 함수들을 함께 묶는 것을 말한다.
객체 지향 언어(OOL :object oriented language)앞서 살펴본 중요한 개념들을 지원하는 언어로 캡슐화, 상속성, 다형성은 반드시 필요한 조건으로 최대한 생산성을 향상시키는 역할을 한다. 객체 지향 언어에는 다음과 같은 것들이 있다.
Smalltalk, Simula, Actor, Clu, Effel, Objective-C, C++
객체 지향 프로그래밍(OOP :object oriented programming)은 객체 지향 기법을 이용한 프로그래밍 기법으로 '객체(object), 다 형성(polymorphism), 상속성(inheritance)' 등이 중요한 개념이다.
객체 지향 프로그래밍의 주요한 특징은 다음 네가지로 요약할 수 있겠다.
추상화된 테이터 형(ADT)과 캡슐화(encapsulation)클래스 다중 계승(class mutiple inheritance) 또는 다형성(polymorphism)형(type)의 동적인 결합(dynamic binding)데이터나 함수들의 은닉성(hiding)
====================================================================
C 언어는 앞으로도 계속적으로 사용될 것이고, C++는 새로운 기법을 추가한 언어로 점차 관심을 불러 일으키며 사랑을 받을 것이라는 사실이다. C/C++는 많은 소프트웨어를 통해서 그 가치가 인정되고 있고, 차세대를 이끌어 나갈 객체 지향 기 법과의 연계성으로 효용 가치가 더욱 높아질 것이 확실하다.
| C 언어로 작성 가능한 시스템 프로그램들 | 운영체제(operating system) 언어 컴파일러(language compiler) | 어셈블러(assembler) 언어 해석기(language interpreter) | 모뎀 프로그램(modem program) 프린터 스풀러(print spooler) | 유틸리티(utility) 텍스트 편집기(text editor) | 데이터 베이스(data base) 네트워크 드라이버(network driver) |