1. 객체지향 프로그래밍(OOP) 종합 실습 소개
안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 개념을 종합적으로 활용하는 실습을 진행해보겠습니다. 지금까지 배운 클래스, 상속, 다형성, 메서드 오버라이딩 등의 개념을 적용하여 은행 계좌 관리 프로그램을 설계해 보겠습니다. 이 프로젝트를 통해 OOP의 실용적인 사용법을 익히고, 현실적인 시나리오에서 객체지향 패턴을 구현하는 방법을 배울 것입니다.
2. 객체지향 프로그래밍을 활용한 프로젝트 설계
프로젝트 개요
- 은행 계좌 관리 시스템을 만들고, 다양한 계좌 유형(예: 일반 계좌, 저축 계좌)을 구현.
- 계좌 개설, 입금, 출금, 잔액 조회 등의 기능을 제공.
- 객체지향 개념을 활용하여 클래스와 상속을 적절히 활용.
설계 단계
- BankAccount (부모 클래스) 정의
- 기본적인 계좌 정보를 포함 (계좌번호, 소유자, 잔액 등).
- 입금(deposit), 출금(withdraw), 잔액 조회(get_balance) 메서드 구현.
- SavingsAccount (자식 클래스) 정의
- 부모 클래스를 상속하여 이자율을 추가.
- 매달 이자 지급 기능 추가.
- BankSystem (은행 시스템 관리 클래스) 정의
- 여러 계좌를 관리할 수 있도록 계좌 목록을 저장.
- 계좌 개설, 검색, 삭제 등의 기능 제공.
3. 은행 계좌 관리 프로그램 구현
1) BankAccount - 기본 계좌 클래스
class BankAccount:
def __init__(self, account_number, owner, balance=0):
self.account_number = account_number
self.owner = owner
self.balance = balance
def deposit(self, amount):
self.balance += amount
return f"{amount}원이 입금되었습니다. 현재 잔액: {self.balance}원"
def withdraw(self, amount):
if amount > self.balance:
return "잔액이 부족합니다."
self.balance -= amount
return f"{amount}원이 출금되었습니다. 현재 잔액: {self.balance}원"
def get_balance(self):
return f"{self.owner}님의 현재 잔액: {self.balance}원"
2) SavingsAccount - 저축 계좌 (이자 지급 기능 추가)
class SavingsAccount(BankAccount):
def __init__(self, account_number, owner, balance=0, interest_rate=0.02):
super().__init__(account_number, owner, balance)
self.interest_rate = interest_rate
def apply_interest(self):
interest = self.balance * self.interest_rate
self.balance += interest
return f"이자가 적용되었습니다. 현재 잔액: {self.balance:.2f}원"
3) BankSystem - 전체 은행 시스템 관리
class BankSystem:
def __init__(self):
self.accounts = []
def create_account(self, account_type, account_number, owner, balance=0):
if account_type == "savings":
account = SavingsAccount(account_number, owner, balance)
else:
account = BankAccount(account_number, owner, balance)
self.accounts.append(account)
return f"{owner}님의 {account_type} 계좌가 생성되었습니다."
def find_account(self, account_number):
for account in self.accounts:
if account.account_number == account_number:
return account
return None
4) 프로그램 실행 예제
# 은행 시스템 인스턴스 생성
bank = BankSystem()
# 계좌 개설
print(bank.create_account("savings", "123-456", "홍길동", 10000))
# 계좌 찾기 및 입출금
account = bank.find_account("123-456")
if account:
print(account.deposit(5000))
print(account.withdraw(3000))
if isinstance(account, SavingsAccount):
print(account.apply_interest())
print(account.get_balance())
출력 예시
홍길동님의 savings 계좌가 생성되었습니다.
5000원이 입금되었습니다. 현재 잔액: 15000원
3000원이 출금되었습니다. 현재 잔액: 12000원
이자가 적용되었습니다. 현재 잔액: 12240.00원
홍길동님의 현재 잔액: 12240.00원
4. 실습 과제
1. 체크카드 계좌 클래스 추가하기
- CheckingAccount 클래스를 만들고, 한도 초과 시 알림 기능을 추가하세요.
class CheckingAccount(BankAccount):
def __init__(self, account_number, owner, balance=0, overdraft_limit=5000):
super().__init__(account_number, owner, balance)
self.overdraft_limit = overdraft_limit
def withdraw(self, amount):
if amount > self.balance + self.overdraft_limit:
return "출금 한도를 초과했습니다."
self.balance -= amount
return f"{amount}원이 출금되었습니다. 현재 잔액: {self.balance}원"
2. 계좌 이체 기능 추가하기
- transfer() 메서드를 추가하여 계좌 간 잔액을 이동할 수 있도록 하세요.
3. 사용자 인터페이스 개선하기
- 터미널에서 사용자 입력을 받아 계좌 개설, 입출금 등을 진행할 수 있도록 개선하세요.
오늘 강의에서는 객체지향 프로그래밍(OOP)의 개념을 종합적으로 활용하여 실전 프로젝트를 설계하는 방법을 배웠습니다. 은행 계좌 관리 시스템을 구현하면서 클래스, 상속, 다형성, 메서드 오버라이딩 등 객체지향 개념을 실제 프로젝트에 적용하는 경험을 쌓았습니다.
이러한 실습을 통해 객체지향 프로그래밍이 현실 세계의 문제를 해결하는 데 얼마나 강력한 도구가 될 수 있는지 이해할 수 있었을 것입니다. 직접 프로젝트를 설계하고 기능을 추가하며 객체지향 프로그래밍의 실용성을 더욱 익혀보세요.
다음 강의에서는 게임 개발을 위한 PyGame 설치 및 기본 구조를 학습하며, 더욱 재미있는 프로젝트를 시작해 보겠습니다!
🚀 궁금한 점이나 피드백이 있다면 댓글로 남겨주세요. 여러분의 학습을 응원합니다! 😊
Python Day 17: 파이썬 상속과 다형성 - 객체지향 프로그래밍(OOP) 심화 학습
1. 상속과 다형성이란? 안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 중요한 개념인 **상속(Inheritance)**과 **다형성(Polymorphism)**에 대해 배워보겠습니다. 상속을 활용하면 기존 클래스를 확장하
nerdcodex.tistory.com
Python Day 16: 파이썬 클래스 심화 - 생성자, 소멸자, 클래스 변수와 인스턴스 변수
1. 클래스 심화 개념 소개안녕하세요! 오늘은 객체지향 프로그래밍(OOP)의 중요한 개념 중 하나인 생성자(__init__)와 소멸자(__del__), 클래스 변수와 인스턴스 변수에 대해 알아보겠습니다. 클래스를
nerdcodex.tistory.com
Python Day 15: 파이썬 클래스와 객체 - 객체지향 프로그래밍(OOP) 기본 이해하기
1. 클래스와 객체란? 안녕하세요! 오늘은 **객체지향 프로그래밍(Object-Oriented Programming, OOP)**의 핵심 개념인 **클래스(Class)와 객체(Object)**에 대해 배워보겠습니다. 객체지향 프로그래밍은 코드를
nerdcodex.tistory.com
'파이썬(Python)' 카테고리의 다른 글
Python Day 20: 2048 게임판 설계 - 4x4 그리드 구현하기 (0) | 2025.02.27 |
---|---|
Python Day 19: PyGame 설치 및 기본 구조 - 게임 개발을 위한 첫걸음 (0) | 2025.02.25 |
Python Day 17: 파이썬 상속과 다형성 - 객체지향 프로그래밍(OOP) 심화 학습 (1) | 2025.02.18 |
Python Day 16: 파이썬 클래스 심화 - 생성자, 소멸자, 클래스 변수와 인스턴스 변수 (0) | 2025.02.15 |
Python Day 15: 파이썬 클래스와 객체 - 객체지향 프로그래밍(OOP) 기본 이해하기 (1) | 2025.02.13 |