C & C++/디딤돌 C++

[C++] 1. 들어가기에 앞서 2. C++ 언어 소개 및 책의 기술 범위

언휴 2024. 1. 9. 09:08

 

C++ 언어 소개

1. 들어가기에 앞서

이 책은 C언어를 학습한 이들을 이가 C++언어를 학습하기 위해 작성하였습니다.

C++언어는 C언어와 변수나 연산, 함수 등의 기본 문법은 비슷하지만 클래스와 템플릿 문법을 있습니다. 특히 C++ 언어에서 클래스는 OOP(Object Oriented Programming, 개체(혹은 객체) 지향 프로그래밍) 방식으로 프로그래밍할 수 있게 새롭게 추가한 문법이죠. 이러한 특징으로 인해 C언어와 C++은 접근 방식에서 많은 차이를 갖고 있습니다.

이 책은 C++입문자를 위한 책이지만 단순히 C++문법을 다루고 있는 책은 아니예요. 오히려 C++에 새롭게 추가한 문법을 OOP에 어떻게 활용하는지에 관한 부분이 많습니다. 이를 위해 문법 외에도 OOP의 특징과 OOP 프로그래밍 개발 공정 및 기본적인 설계에 관해서도 다루고 있어요.

이미 효과적인 개발 방법론들에 대한 연구나 교육 및 현업에서의 적용이 되고 있음에도 프로그래밍 언어에 대한 책에는 개발 공정이나 설계에 대해 다루지 않는 게 현실입니다. 이 책에서는 OOP 프로그래밍 개발 공정을 다루면서 기본적인 개발 방법론도 접목할 거예요.

아무쪼록 이 책을 통해 C++ 문법 뿐만 아니라 개발 공정에 맞게 프로그래밍 작성 능력을 키울 수 있었으면 하는 게 제 바람입니다.

2. C++ 언어 소개 및 책의 기술 범위

C++ 강의를 시작하거나 C언어가 끝나갈 때에 많은 이들이 “C++이 뭐예요? “, “C++언어는 C와 뭐가 달라요?” 라는 질문을 하더군요.

처음 강의를 했던 때에는 “C언어는 절차식으로 작성하기 적합한 프로그래밍 언어이고 C++언어는 OOP(Object Oriented Programming, 개체(객체)지향 프로그래밍)에 적합한 언어야.”라고 대답이나 “글쎄, 기본 문법은 비슷한데 클래스 문법이 있어서 실제 프로그래밍 방식은 많이 다루지.” 등의 대답을 했던 것 같아요.

그리고 점점 강의를 하다 보니 지금은 “C++ is a c with class.”라는 얘기를 먼저 해요.

이렇게 얘기를 하는 이유는 C++ 언어가 C와 무관한 언어가 아니라 C언어의 문법에 새로운 문법 사항으로 클래스가 추가되었음을 강조하기 위함이예요. 이 책도 C언어 기본 문법을 이해하고 있는 독자를 대상으로 작성하였습니다.

그렇지만 C++ 언어는 클래스를 제외하고도 C언어와 차이가 있는 문법 사항이 많이 있어요. 이 책에서는 먼저 클래스를 제외한 문법들 중에 C언어와 차이가 있는 부분을 다룰 거예요.

그리고 대부분의 내용은 클래스 문법과 개체(혹은 객체)지향 프로그래밍에 초점을 두어 기술할 거예요.

C++ 언어는 개체(혹은 객체, 앞으로 이 책에서는 Object를 개체라고 부를게요.)를 중심으로 프로그래밍할 수 있는 주요한 특징들을 갖고 있어요.

개체 지향 프로그래밍 언어(Object Oriented Programming Language)들이 갖는 공통적인 특징에는 캡슐화, 상속, 다형성 등이 있죠.

캡슐화는 프로그램에 개체들을 정의하는 과정이며 상속은 다른 형식을 기반으로 형식을 정의하면 기반 형식의 멤버를 상속받는 특징을 말해요. 이 때 상속받는 형식을 파생 형식이라 부르죠. 그리고 다형성은 기반 형식의 변수로 파생 형식의 개체를 참조할 수 있는 특징을 말해요. 특히 기반 형식에 정의한 기능을 파생 형식에서 새롭게 정의했을 때 변수의 형식이 아닌 실제 개체의 형식에 정의한 기능을 수행할 수 있는 특징은 다형성의 장점이라 할 수 있죠.

물론 OOP의 특징인 캡슐화와 상속, 다형성은 문법과 함께 별도의 실습을 진행할 거예요.

그리고 난 후에 프로그램의 설계에서 나타날 수 있는 클래스와 클래스의 관계를 살펴볼 거예요.

이러한 OOP에 관한 사항이 이 책의 주요 부분이고 이후에 연산자 중복 정의에 관한 사항과 예외 처리 및 템플릿 문법을 다룰 거예요.

그리고 마지막으로 기본적인 개발 방법론에 적용하여 프로그래밍 실습을 할 거예요.

이처럼 이 책은 많은 부분에서 이러한 OOP의 특징에 대한 문법사항과 이들을 효과적으로 사용하는 방법들에 대해서 다룰거예요. 또한 프로그램을 개발공정에 따라 구현에 치중하지 않고 설계에 대한 부분도 다루고요.

참고로 이 책에서는 템플릿에 대해서는 다루지만 표준 템플릿 라이브러리에 대해서는 다루지 않습니다.