Published on

파이썬 객체지향 프로그래밍(OOP)

Authors
  • avatar
    Name
    devnmin
    Twitter

파이썬 객체지향 프로그래밍(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()  # 출력: 바둑이가 멍멍 짖습니다.

코드 설명:

  1. __init__: 생성자 메서드로, 객체가 생성될 때 자동으로 호출됩니다.
  2. 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

실습: 간단한 학생 관리 프로그램

  1. 학생 클래스(Student)를 생성합니다.
  2. 이름, 나이, 성적을 속성으로 저장합니다.
  3. 성적을 출력하는 메서드를 추가합니다.
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점입니다.

다음 단계

객체지향 프로그래밍은 코드를 체계적으로 구성하는 데 유용한 도구입니다. 이제 기초를 다졌으니, 간단한 프로젝트를 만들어 배운 내용을 응용해 보겠습니다.

클래스를 활용해 더 재미있는 프로그램을 만들어 보세요! 🎉