Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

따..딱히 공부하려고 포스팅하는 건 아니니까..!

C++은 객체지향 언어인가, 아닌가 본문

C/C++

C++은 객체지향 언어인가, 아닌가

보즈리 2015. 6. 22. 06:14



 C++는 C언어를 기반으로 하고 있는 언어로, C언어에 클래스, 상속 등 객체지향의 특징과 기능을 넣은 객체지향 언어이다. 그런데 최근 Java나 C#과 같은 다른 객체지향 언어를 사용하면서 과연 C++은 객체지향 언어일까? 하는 의문이 들었다.


 그래서 이번 기회에 객체지향과 C++에 대해서 조사하고 정리해보았다.



1. 객체지향

말 그대로 객체를 지향한다는 의미이다.


 객체지향에 대해 더 자세하게 설명하기 위해서 객체지향 프로그래밍에 대해 설명하고자 한다.



2. 객체지향 프로그래밍 (OOP, Object-Oriented Programming)

프로그램을 여러개의 독립된 객체들의 모임으로 보는 프로그래밍의 패러다임을 말한다.


 객체지향 프로그래밍의 특징으로는 다음과 같이 크게 5가지로 나눌 수 있다. (클래스를 제외하여 4가지로 나누기도 한다)


1. 클래스

 객체의 특성을 서술한 것


2. 상속성

한 클래스가 다른 클래스가 가지고 있는 특성을 사용하기 위해 물려받는 것


3. 다형성

다양한 자료형(= 클래스)를 가질 수 있게 하는 성질


4. 추상화 (추상(抽象) : 뽑아낼 추, 모양 상)

대상에서 특징만을 뽑아내어 표현하는 것


5. 캡슐화

클래스 간에 은닉성을 보장하기 위한 것으로, 데이터 조작방법을 서술하는 것



 다형성, 상속성이라는 단어자체는 어렵지만 실세계의 객체라고 생각해보면 썩 어려운 개념도 아니다.


 예를 들면 '개'라는 객체의 특징은 코카스파니엘, 비글, 슈나우저도 가지고 있다. 비글 클래스에서 개 클래스를 물려받아 개의 특징을 가지게 되는 것을 상속이라고 할 수 있다.


 이런 설명에 따라 객체지향 개념이 만들어진 의도를 생각해 볼 수 있는데, 객체지향 프로그래밍은 최대한 실세계와 비슷하게 만들어졌다. 이것은 사용자에게 직관적으로 다가올 수 있도록 하기 위한 것으로,

 결국 객체지향의 의도는 어떤 사용자라도 쉽게 프로그래밍을 할 수 있는 환경을 위해 만들어진 개념인 것이다.




3. 객체지향 언어

 객체지향 언어를 구분하는 기준은 캡슐화, 상속성, 다형성 이 세가지 특성을 지원하는가이다.


 객체지향 언어 최초의 역사에 대해서 살펴보면 다음과 같다.


 최초의 객체지향 언어는 1960년에 나온 시뮬라67이라고 한다. 이후에 시뮬라67의 개념을 가져온 스몰토크라는 가장 순수한 객체지향 언어가 나오고 다시 이 스몰토크를 기반으로 여러가지 객체지향 언어가 나온다.


 이후 시간이 흘러 1984년에 객체지향성이 더해진 C언어 즉, C++이 나온다.


 객체지향 언어의 역사를 살펴보면 C++는 객체지향 언어 역사의 한 부분이다. 애초에 C++는 절차지향적 언어인 C언어에 객체지향성이 더해진 언어로써 만들어졌다는 말이 C++를 만든 의도가 객체지향 언어를 만들고자 하기 위한 것이었다는 것을 말해주고 있다.


 현재 많이 쓰고있는 Java나 C#, 기타 다른 객체지향 언어들에 비해 C++는 불편하고 덜 객체지향적인 부분이 있기는 하다. 하지만 객체지향의 개념과 역사, 객체지향 언어의 정의를 살펴보았을 때 C++는 객체지향 언어로 봐도 무방하다는 생각이 들었다. 상대적으로 덜 객체지향적이라는 것은 결국 상대적인 것일뿐, 본질적으로 C++는 객체지향의 특성을 가지고 있고, 객체지향 본연의 의미 또한 벗어나지 않았다.


 그러므로 C++은 객체지향 언어로 봐도 된다고 생각한다.



--------------------------------------------------

 위 글과 별개로 하나 덧붙이자면, 객체지향 언어가 곧 객체지향 프로그래밍이 아니라는 것을 유의해야 한다. 즉 객체지향 프로그래밍은 객체지향 언어를 사용하기 나름이다.

 예를들면, C++로 함수만을 사용하여 프로그램을 짠다면 객체지향 프로그래밍이 아닌 것과 같다.

'C/C++' 카테고리의 다른 글

[SlideShare]C++ 11/14에 추가된 기능들  (0) 2016.03.23
C++ 한글 문자열(유니코드)  (0) 2015.10.04
HEAP CORRUPTION DETECTED 오류와 해결방법  (0) 2015.02.11
추상화(Abstraction)  (0) 2015.02.05
컴파일과 링크  (0) 2014.12.30
Comments