본문으로 건너뛰기

객체 지향 프로그래밍(OOP) 소개

객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍 방법론 중 하나로 실세계의 사물이나 개념을 프로그램 내의 객체로 표현하고, 이들 객체 간의 상호작용을 통해 소프트웨어를 개발하는 방식입니다.


OOP의 핵심 개념

OOP는 데이터(속성, Property)와 데이터를 처리하는 기능(메소드, Method)을 '객체'로 묶는 개념입니다. 주요 구성 요소는 다음과 같습니다:

  • 객체(Object): 객체는 데이터(속성)와 그 데이터에 대한 조작을 수행하는 함수(메서드)를 결합한 것입니다. 예를 들어, '자동차'라는 객체는 '색상', '모델', '속도' 등의 속성과 '가속하기', '정지하기' 등의 메서드를 가질 수 있습니다.

  • 클래스(Class): 클래스는 객체를 생성하기 위한 '템플릿' 또는 '틀'입니다. 클래스는 특정 유형의 객체들이 공유하는 속성과 메서드를 정의합니다. 클래스로부터 생성된 객체를 인스턴스(Instance)라고 합니다.

  • 상속(Inheritance): 한 클래스(부모 클래스)의 속성과 메서드를 다른 클래스(자식 클래스)가 받아 사용할 수 있습니다.

  • 캡슐화(Encapsulation): 객체의 데이터(속성)를 외부로부터 숨기고, 객체의 메서드만을 통해 이 데이터에 접근할 수 있게 하는 것입니다. 이를 통해 외부로부터 객체를 보호합니다.

  • 다형성(Polymorphism): 다형성은 같은 이름의 메서드가 다른 클래스에서 다른 행동을 할 수 있게 하는 특성입니다. 이를 통해 코드의 유연성과 재사용성을 증가시킬 수 있습니다.

클래스와 객체 사이의 관계는 '자동차 설계도'와 '자동차', '요리 레시피'와 '요리'와 같이 생각할 수 있습니다.

간단히 말하면 '인스턴스(Instance)'는 특정 클래스(Class)가 '구현된 것'를 의미하며, 이렇게 구현된 것이 바로 '객체'(Object)입니다.


OOP 사용 예시

클래스 사용 예시
class Animal: # Animal 클래스 정의
def __init__(self, name): # 생성자 메서드
self.name = name # name 속성 정의

def speak(self): # speak 메서드 정의
pass

class Dog(Animal): # Dog 클래스 정의
def speak(self): # speak 메서드 재정의
return f"{self.name}가 멍멍!" # name 속성 사용


# 객체 생성 및 사용
my_dog = Dog("바둑이")

print(my_dog.speak()) # 출력: 바둑이가 멍멍!