본문으로 건너뛰기
실습하기

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

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


객체지향 프로그래밍의 핵심 개념

객체지향 프로그래밍은 데이터(속성, Property)와 데이터를 처리하는 기능(메소드, Method)을 객체로 묶어서 관리합니다. 핵심 개념은 다음과 같습니다.

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

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

  • 상속(Inheritance): 한 클래스(부모 클래스)의 속성과 메서드를 다른 클래스(자식 클래스)가 물려받아 사용할 수 있게 하는 것입니다. 이를 통해 코드의 재사용성을 높일 수 있습니다.

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

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

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


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()) # 출력: 바둑이가 멍멍!

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!