Programming Languages/C++

객체 지향 프로그래밍

newclass 2025. 3. 27. 23:47

객체 지향 프로그래밍

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 C++의 핵심 패러다임 중 하나로, 데이터와 해당 데이터를 처리하는 함수를 논리적 단위인 '객체'로 묶어 프로그램을 구성하는 방식입니다. 이 챕터에서는 OOP의 기본 개념부터 고급 기능까지 상세히 다룹니다.

5.1 클래스와 객체의 기본 개념

5.1.1 클래스와 객체 소개

클래스(Class): 객체의 설계도 역할을 하는 사용자 정의 데이터 타입 객체(Object): 클래스의 인스턴스(실체)

#include <iostream>
#include <string>

// 클래스 정의
class Person {
public:
    // 멤버 변수 (데이터)
    std::string name;
    int age;
    
    // 멤버 함수 (메서드)
    void introduce() {
        std::cout << "안녕하세요! 제 이름은 " << name << "이고, " 
                  << age << "살입니다." << std::endl;
    }
};

int main() {
    // 객체 생성
    Person person1;
    
    // 객체의 멤버 변수 설정
    person1.name = "홍길동";
    person1.age = 25;
    
    // 객체의 멤버 함수 호출
    person1.introduce();
    
    // 또 다른 객체 생성
    Person person2;
    person2.name = "김철수";
    person2.age = 30;
    person2.introduce();
    
    return 0;
}

5.1.2 구조체(struct)와 클래스(class)의 차이

C++에서 struct와 class는 거의 동일하게 동작하지만, 기본 접근 지정자가 다릅니다:

struct Point {
    int x;  // 기본적으로 public
    int y;
};

class Circle {
private:  // 기본적으로 private
    double radius;
    Point center;
};
  • struct: 기본 접근 지정자가 public
  • class: 기본 접근 지정자가 private

구조체는 일반적으로 간단한 데이터 모음에 사용되고, 클래스는 데이터와 함수를 함께 캡슐화할 때 사용됩니다. 하지만 이는 관례일 뿐, 기술적으로는 서로 대체 가능합니다.