반응형
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 |