- Published on
파이썬 객체지향 프로그래밍(OOP)
- Authors
- Name
- devnmin
파이썬 객체지향 프로그래밍(OOP)
객체지향 프로그래밍(OOP, Object-Oriented Programming)은 프로그램을 데이터(객체)와 그 객체가 수행할 작업(메서드) 중심으로 구성하는 프로그래밍 방식입니다. 파이썬은 강력한 객체지향 프로그래밍 언어로, 클래스를 사용해 데이터를 효율적으로 관리하고 확장할 수 있습니다.
클래스와 객체란?
클래스(Class)
클래스는 객체를 만들기 위한 설계도입니다. 클래스는 속성(데이터)과 메서드(동작)를 정의합니다.
객체(Object)
객체는 클래스에서 만들어진 실체입니다. 클래스의 인스턴스라고도 부릅니다.
클래스 정의하기
파이썬에서는 class
키워드를 사용해 클래스를 정의합니다.
예제: 간단한 클래스
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name}가 멍멍 짖습니다.")
# 객체 생성
dog1 = Dog("바둑이", 3)
dog1.bark() # 출력: 바둑이가 멍멍 짖습니다.
코드 설명:
__init__
: 생성자 메서드로, 객체가 생성될 때 자동으로 호출됩니다.self
: 객체 자신을 참조합니다. 메서드와 속성을 정의할 때 반드시 사용해야 합니다.
속성과 메서드
속성 정의
속성은 클래스 내부에서 데이터를 저장하는 데 사용됩니다.
class Car:
def __init__(self, brand, color):
self.brand = brand
self.color = color
car = Car("현대", "파란색")
print(car.brand) # 출력: 현대
print(car.color) # 출력: 파란색
메서드 정의
메서드는 클래스 내부에서 정의된 함수로, 객체의 동작을 정의합니다.
class Calculator:
def add(self, a, b):
return a + b
def subtract(self, a, b):
return a - b
calc = Calculator()
print(calc.add(5, 3)) # 출력: 8
print(calc.subtract(5, 3)) # 출력: 2
상속(Inheritance)
상속은 기존 클래스를 확장하여 새로운 클래스를 만드는 기능입니다.
예제: 상속 구현
class Animal:
def eat(self):
print("음식을 먹습니다.")
class Dog(Animal):
def bark(self):
print("멍멍 짖습니다.")
my_dog = Dog()
my_dog.eat() # 출력: 음식을 먹습니다.
my_dog.bark() # 출력: 멍멍 짖습니다.
캡슐화(Encapsulation)
캡슐화는 클래스 내부의 데이터에 직접 접근하지 못하도록 보호하는 개념입니다. 변수 앞에 **언더스코어(_)**를 붙이면 관례적으로 private(비공개)로 간주합니다.
예제: 캡슐화 구현
class BankAccount:
def __init__(self, balance):
self._balance = balance # 비공개 변수
def deposit(self, amount):
self._balance += amount
def get_balance(self):
return self._balance
account = BankAccount(1000)
account.deposit(500)
print(account.get_balance()) # 출력: 1500
실습: 간단한 학생 관리 프로그램
- 학생 클래스(Student)를 생성합니다.
- 이름, 나이, 성적을 속성으로 저장합니다.
- 성적을 출력하는 메서드를 추가합니다.
class Student:
def __init__(self, name, age, grade):
self.name = name
self.age = age
self.grade = grade
def print_grade(self):
print(f"{self.name}의 성적은 {self.grade}점입니다.")
# 객체 생성
student1 = Student("홍길동", 20, 90)
student1.print_grade() # 출력: 홍길동의 성적은 90점입니다.
다음 단계
객체지향 프로그래밍은 코드를 체계적으로 구성하는 데 유용한 도구입니다. 이제 기초를 다졌으니, 간단한 프로젝트를 만들어 배운 내용을 응용해 보겠습니다.
클래스를 활용해 더 재미있는 프로그램을 만들어 보세요! 🎉