파이썬(Phython)

pyhton 8. 객체지향 프로그래밍

고.니 2023. 11. 20. 23:13
반응형

8. 객체지향 프로그래밍

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍을 더 직관적이고 체계적으로 만들어주는 패러다임입니다. 파이썬은 객체지향 프로그래밍을 지원하는 언어입니다.

클래스와 객체

  • 클래스(Class): 객체를 만들기 위한 템플릿입니다. 클래스는 객체의 기본 형태와 행동을 정의합니다.
  • 객체(Object): 클래스에 정의된 속성(변수)과 행동(메서드)을 실제로 가지고 있는 실체입니다. 클래스로부터 생성됩니다.
class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} says woof!")

# 객체 생성
my_dog = Dog("Buddy")
my_dog.bark()  # 출력: Buddy says woof!

상속

상속(Inheritance)은 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 기능입니다. 코드 재사용을 촉진하고, 복잡성을 줄여줍니다.

class Animal:
    def __init__(self, name):
        self.name = name

class Dog(Animal):
    def bark(self):
        print(f"{self.name} says woof!")

# Dog 클래스는 Animal 클래스의 모든 속성과 메서드를 상속받음
my_dog = Dog("Buddy")
my_dog.bark()  # Buddy says woof!

다형성

다형성(Polymorphism)은 동일한 인터페이스나 메서드 호출이 다양한 방식으로 응답할 수 있는 능력을 의미합니다. 다형성은 코드의 유연성과 재사용성을 높여줍니다.

class Cat:
    def speak(self):
        print("Meow")

class Dog:
    def speak(self):
        print("Woof")

def animal_sound(animal):
    animal.speak()

# 다양한 형태의 객체에 대해 동일한 인터페이스(speak) 사용
animal_sound(Cat())  # Meow
animal_sound(Dog())  # Woof

캡슐화

캡슐화(Encapsulation)는 객체의 세부 구현 내용을 외부로부터 숨기고, 외부에서는 객체의 메서드만을 통해 상호 작용하게 하는 것입니다. 이를 통해 객체의 보호 및 데이터 숨김을 실현합니다.

class Computer:
    def __init__(self):
        self.__max_price = 900  # private 변수

    def sell(self):
        print(f"Selling Price: {self.__max_price}")

    def set_max_price(self, price):
        if price > self.__max_price:
            self.__max_price = price

c = Computer()
c.sell()  # Selling Price: 900

# __max_price는 외부에서 직접 접근할 수 없음
# c.__max_price = 1000  # 이 코드는 에러를 발생시킴

c.set_max_price(1000)
c.sell()  # Selling Price: 1000

객체지향 프로그래밍은 소프트웨어 설계를 더 자연스럽고 직관적으로 만들어줍니다. 클래스와 객체를 통해 현실 세계의 개념을 코드에 잘 반영할 수 있으며, 상속, 다형성, 캡슐화를 통해 코드를 재사용하고 유지보수하기 쉬워집니다.

반응형