Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 객체 지향 프로그래밍 입문 가이드: 핵심 개념부터 시작하기


C++ 객체 지향 프로그래밍이란?

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 '객체'라는 개념을 기반으로 하는 프로그래밍 패러다임입니다. 객체는 속성(attribute) 형태의 데이터와 메서드(method) 형태의 동작 명령을 함께 담을 수 있습니다.

예를 들어 '사람'은 하나의 객체로 볼 수 있습니다. 사람은 키, 성별, 나이 같은 속성(데이터)을 가지며, 걷기(move), 말하기(talk) 같은 메서드(동작)도 수행할 수 있습니다.

객체(Object)

객체는 객체 지향 프로그래밍의 기본 단위입니다. 즉, 데이터와 그 데이터를 처리하는 함수가 하나의 단위로 묶여 있는 것을 객체라고 합니다.

클래스(Class)

클래스를 정의한다는 것은 곧 객체의 설계도(blueprint)를 만드는 것과 같습니다. 클래스 자체는 실제 데이터를 담지 않지만, 해당 클래스 이름이 의미하는 바, 즉 그 클래스의 객체가 어떤 데이터로 구성되고 어떤 연산을 수행할 수 있는지를 정의합니다.

OOP의 4대 기본 개념

OOP는 다음 네 가지 핵심 개념 위에 성립합니다. 하나씩 살펴보겠습니다.

1. 추상화(Abstraction)

추상화는 외부에는 필수적인 정보만 제공하고 내부의 복잡한 세부 사항은 숨기는 것을 의미합니다. 예를 들어 웹 서버는 전달받은 데이터를 어떻게 처리하는지 숨기고, 최종 사용자는 엔드포인트에 요청만 보내면 결과 데이터를 받을 수 있습니다.

2. 캡슐화(Encapsulation)

캡슐화는 데이터 멤버(변수, 속성)와 멤버 함수(메서드)를 하나의 단위로 묶는 과정입니다. 동시에 특정 속성에 대한 접근을 제한하는 방법이기도 합니다.

3. 상속(Inheritance)

상속은 기존 클래스로부터 새로운 클래스를 만들어내는 능력입니다. 상속을 활용하면 부모(Parent) 클래스로부터 자식(Child) 클래스를 파생시켜 부모의 속성과 메서드를 물려받으면서, 자식만의 추가 속성과 메서드를 정의할 수 있습니다.

예를 들어 색상(Color), 가격(Price) 같은 속성을 가진 Vehicle(차량) 클래스가 있다면, 이를 상속받아 Bike(바이크)와 Car(자동차) 클래스를 만들 수 있습니다. 두 클래스 모두 색상과 가격 속성을 공유하지만, Car에는 창문 수(numberOfWindows)처럼 자동차에만 특화된 속성을 추가할 수 있습니다. 메서드 역시 같은 방식으로 적용됩니다.

4. 다형성(Polymorphism)

'다형성'이라는 단어는 문자 그대로 '여러 형태를 가진다'는 뜻입니다. 일반적으로 다형성은 클래스 계층 구조가 존재하고 클래스들이 상속 관계로 연결되어 있을 때 나타납니다. C++에서 다형성이란 멤버 함수를 호출했을 때, 그 함수를 호출한 객체의 타입에 따라 서로 다른 함수가 실행된다는 의미입니다.

예를 들어 Shape(도형) 클래스에 getArea(넓이 구하기) 메서드가 있다면, 도형이 원인지 사각형인지에 따라 넓이가 서로 다른 방식으로 계산됩니다.

다음 학습 단계

Tutorials Point에서 제공하는 C++ 객체 지향 프로그래밍 튜토리얼(tutorialspoint.com)을 참고하면 OOP 학습을 체계적으로 시작하는 데 큰 도움이 됩니다.