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

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

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 현실 세계의 사물추상적 개념을 프로그램 안에서 객체(Object)로 표현하는 프로그래밍 방법론입니다.

객체지향 프로그래밍은 프로그램을 속성과 동작을 가진 독립된 객체로 구성하고, 이 객체들 간의 상호작용을 통해 프로그램을 구현합니다.

파이썬은 객체지향 프로그래밍을 지원하는 언어로, 클래스(Class)객체(Object)라는 개념을 사용해 프로그램을 구성합니다.

이번 수업에서는 객체지향 프로그래밍의 기초 개념을 학습하고, 파이썬에서 이를 어떻게 활용하는지 살펴보겠습니다.


클래스와 객체, 그게 뭘까요?

현실 세계를 프로그램으로 표현하기

우리가 매일 사용하는 자동차, 책, 컴퓨터와 같은 사물들은 각기 다른 특징과 기능을 가지고 있습니다.

프로그래밍에서도 이와 같은 사물을 표현하기 위해 클래스객체라는 개념을 사용합니다.


클래스

자동차나 책과 같은 사물의 설계도와 같은 역할을 합니다.

이 설계도는 해당 사물이 어떤 특징(속성)을 갖고, 어떤 기능(메서드)을 수행하는지를 정의합니다.


객체

클래스를 바탕으로 만들어진 실제 사물입니다.

예를 들어 자동차 클래스(설계도)로 만들어진 객체는 실제 자동차를 나타내며, 자동차의 브랜드, 모델, 연식 등의 속성을 갖습니다.


객체의 설계도, 클래스

클래스는 프로그래밍에서 새로운 데이터 타입을 정의하며, 클래스를 통해 생성되는 객체의 속성과 동작을 정의합니다.

아래 코드는 자동차를 나타내는 간단한 클래스를 정의한 예시입니다.

자동차 클래스 정의하기
class Car:
def __init__(self, brand, model, year):
# 자동차의 브랜드, 모델, 연식 속성 정의
self.brand = brand
self.model = model
self.year = year

# 자동차의 엔진을 켜는 메서드
def start_engine(self):
print(f"{self.brand} {self.model}의 엔진 시동")

# 자동차의 엔진을 끄는 메서드
def stop_engine(self):
print(f"{self.brand} {self.model}의 엔진 꺼짐")

위 코드에서 Car 클래스는 자동차의 브랜드, 모델, 연도 등의 속성을 정의하고, 엔진을 켜거나 끄는 기능을 제공합니다.

클래스에서 __init__ 메서드는 객체가 생성될 때 자동으로 호출되며, 객체의 속성을 초기화합니다.

self는 클래스의 메서드에서 사용되는 첫 번째 인자로, 해당 메서드를 호출한 객체 자신을 가리킵니다.


객체: 설계도를 바탕으로 만들어진 실제 사물

이제 정의한 클래스의 설계도를 바탕으로 객체를 만들어 보겠습니다.

객체를 만드는 것은 자동차 설계도를 바탕으로 실제 '자동차'를 만드는 것과 같습니다.

프로그램에서는 클래스를 바탕으로 객체를 생성하고, 이 객체를 통해 클래스에서 정의한 속성과 동작을 사용합니다.

객체 생성하기
class Car:
def __init__(self, brand, model, year):
self.brand = brand
self.model = model
self.year = year

def start_engine(self):
print(f"{self.brand} {self.model}의 엔진 시동")

def stop_engine(self):
print(f"{self.brand} {self.model}의 엔진 꺼짐")

# Car 클래스의 설계도를 바탕으로
# 브랜드로 '브랜드A', 모델로 '모델B', 연식으로 2024인
# my_car 객체를 만듦
my_car = Car("브랜드A", "모델B", 2024)

# 출력: 브랜드A 모델B의 엔진 시동
my_car.start_engine()

# 출력: 브랜드A 모델B의 엔진 꺼짐
my_car.stop_engine()

# 자동차의 연식 출력
print(my_car.year) # 2024 출력

여기서 my_car는 Car 클래스에서 만들어진 하나의 객체로 '브랜드A', '모델B', 연식 2024를 갖는 자동차를 나타냅니다.

이 객체는 start_enginestop_engine 메서드를 사용하여 실제로 동작할 수 있습니다.

또한 객체의 속성인 yearmy_car.year와 같이 접근해 값을 확인할 수 있습니다.


객체지향 프로그래밍을 사용하면 무엇이 좋을까요?

객체지향 프로그래밍을 사용하면 코드의 재사용성이 개선하고, 프로그램의 논리적 모듈화가 쉬워집니다.

예를 들어 자동차 클래스를 정의하면, 이 클래스를 바탕으로 여러 종류의 자동차 객체를 만들 수 있습니다.

각 객체는 자동차의 브랜드, 모델, 연식 등의 속성을 갖고 있으며, 이 객체들은 각자의 독립적인 동작을 수행합니다.

다음 내용이 궁금하다면?

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