객체지향 프로그래밍이란?
객체지향 프로그래밍(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', '