위의 예시에서 Car 클래스는 자동차 객체를 나타냅니다. __init__ 메서드는 객체의 초기화를 담당하고, accelerate 와 brake 메서드는 속도를 조절하는 기능을 제공합니다. 위 예시처럼 객체를 모듈단위로 세분화하기 때문에 가독성, 재사용성, 유지보수성 등의 측면에서 이점을 볼 수 있습니다.
2. 캡슐화:
캡슐화는 객체의 상태와 행위를 하나의 단위로 묶는 개념입니다. 이를 통해 객체의 내부 구현을 외부에 감추고 외부에서는 객체에 정의된 인터페이스를 통해 상호작용할 수 있습니다.
예시: 은행 계좌 객체
class BankAccount:
def __init__(self):
self._balance = 0 # _balance를 protected로 선언
def deposit(self, amount):
if amount > 0:
self._balance += amount
print(f"{amount}원을 입금했습니다. 현재 잔액: {self._balance}원")
else:
print("올바르지 않은 입금 금액입니다.")
def withdraw(self, amount):
if 0 < amount <= self._balance:
self._balance -= amount
print(f"{amount}원을 출금했습니다. 현재 잔액: {self._balance}원")
else:
print("올바르지 않은 출금 금액이거나 잔액이 부족합니다.")
def get_balance(self):
return self._balance
파이썬에서는 '_' 를 변수 이름 앞에 붙여 protected 로 선언할 수 있습니다. 클래스 외부에서는 직접적으로 _balance 를 조회하거나 수정할 수 없으며 오직 메서드 withdraw, get_balance를 통해서만 가능합니다. 이러한 것을 보고 캡슐화라고 합니다.
3. 상속:
상속은 기존 클래스의 특성을 그대로 물려받아 새로운 클래스를 생성하는 개념입니다. 이를 통해 코드의 재사용성을 높이고, 유지보수를 용이하게 만듭니다.
예시: 부모 자식 객체
class Parent:
def __init__(self, name):
self.name = name
def say_hello(self):
print(f"안녕, 나는 {self.name}이야!")
class Child(Parent):
def __init__(self, name, toy):
# 부모 클래스의 __init__ 메서드 호출
super().__init__(name)
self.toy = toy
def play(self):
print(f"{self.name}이(가) {self.toy}로 놀아요!")
# 자식 클래스의 객체 생성
child = Child("철수", "로봇")
# 부모 클래스의 메서드 호출
child.say_hello() # 출력: 안녕, 나는 철수이야!
# 자식 클래스의 메서드 호출
child.play() # 출력: 철수이(가) 로봇으로 놀아요!
위의 예시에서 Child 클래스는 '__init__' 메서드에서 'super()__init__(name)'을 호출하여 Parent 클래스의 '__init__' 메서드를 실행합니다. 이를 통해 'name' 속성을 초기화하고, 자식 클래스에서 추가로 정의한 'toy' 속성도 초기화합니다. super() 를 사용하면 부모 클래스의 메서드를 호ㅜㄹ하는 데에 유연성을 제공하고, 코드의 재사용성을 높일 수 있습니다.
4. 다형성:
다형성은 같은 이름의 메서드나 연산자가 다른 클래스에서 다르게 동작하는 특성입니다. 이는 같은 인터페이스를 가진 객체들이 다양한 방식으로 동작할 수 있게 합니다.
예시: 동물 객체
class Animal:
def speak(self):
return "동물 소리"
# Dog 클래스는 Animal 클래스를 상속받음
class Dog(Animal):
def speak(self):
return "멍멍!"
# Cat 클래스는 Animal 클래스를 상속받음
class Cat(Animal):
def speak(self):
return "야옹!"
# 함수를 통해 동물 소리 출력
def make_animal_sound(animal):
return animal.speak()
# 다양한 동물들을 생성하고 출력
dog = Dog()
cat = Cat()
print(make_animal_sound(dog)) # 출력: 멍멍!
print(make_animal_sound(cat)) # 출력: 야옹!
이 프로그램은 'Aninmal' 클래스를 상속받은 'Dog' 와 'Cat' 클래스를 사용하여 다양한 동물의 소리를 출력합니다. 여기서 새로운 동물을 추가하거나 기능을 추가할 수 있습니다.