반응형

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

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

반응형

'파이썬(Phython)' 카테고리의 다른 글

python 7. 파일 입출력  (0) 2023.11.15
Python 6. 에러와 예외 처리  (0) 2023.11.14
python 5. 함수와 모듈  (0) 2023.11.07
python 4. 자료형과 자료구조  (0) 2023.11.06
파이썬 python 3. 조건문과 반복문  (0) 2023.11.02
파이썬 python 2. 기본 문법  (0) 2023.11.01
1. 파이썬 소개  (0) 2023.10.31
파이썬(Python) 기초 강의  (0) 2023.10.31

+ Recent posts