案例 1:银行账户系统

需求

  1. 创建一个 BankAccount 类,用于管理银行账户。
  2. 该类需要包含以下功能:

    • 开户:初始化账户名、账户余额和账户类型(如储蓄、支票)。
    • 存款:向账户中添加指定金额。
    • 取款:从账户中取出指定金额,余额不足时给出警告。
    • 查询余额:显示当前余额。

思路分析

  • BankAccount 类包含初始化方法 __init__ 来设置账户名称、余额和账户类型。
  • 定义 depositwithdraw 方法分别用于存款和取款,确保取款时余额足够。
  • 定义 get_balance 方法用于查询余额。

代码实现

class BankAccount:
    def __init__(self, account_name, initial_balance=0, account_type="Savings"):
        self.account_name = account_name
        self.balance = initial_balance
        self.account_type = account_type

    def deposit(self, amount):
        if amount > 0:
            self.balance += amount
            print(f"存入 {amount} 元。当前余额:{self.balance} 元")
        else:
            print("存款金额必须为正数。")

    def withdraw(self, amount):
        if amount > self.balance:
            print("余额不足,无法取款。")
        elif amount > 0:
            self.balance -= amount
            print(f"取出 {amount} 元。当前余额:{self.balance} 元")
        else:
            print("取款金额必须为正数。")

    def get_balance(self):
        print(f"{self.account_name} 的当前余额:{self.balance} 元")

# 测试
account = BankAccount("Alice", 1000)
account.deposit(500)
account.withdraw(300)
account.get_balance()
account.withdraw(1500)  # 余额不足

案例 2:图书馆系统

需求

  1. 创建一个 Book 类,包含书籍的基本信息(如标题、作者、ISBN 编号)。
  2. 创建一个 Library 类,用于管理图书馆的藏书和借阅记录。
  3. Library 类需要包含以下功能:

    • 添加书籍:将书籍添加到藏书列表。
    • 借书:用户可以借阅指定书籍,若该书已被借出则提示不可用。
    • 归还书籍:将书籍归还到图书馆。

思路分析

  • Book 类包含书籍的基本信息,如标题、作者和 ISBN 编号。
  • Library 类包含一个 books 字典,用于记录图书馆的藏书信息,书籍的可用状态(True 表示可用,False 表示已借出)。
  • Library 类中定义 add_bookborrow_bookreturn_book 方法来管理书籍的借阅和归还。

代码实现

class Book:
    def __init__(self, title, author, isbn):
        self.title = title
        self.author = author
        self.isbn = isbn

class Library:
    def __init__(self):
        self.books = {}

    def add_book(self, book):
        if book.isbn not in self.books:
            self.books[book.isbn] = {"book": book, "available": True}
            print(f"添加书籍:《{book.title}》")
        else:
            print(f"书籍《{book.title}》已存在于图书馆。")

    def borrow_book(self, isbn):
        if isbn in self.books:
            if self.books[isbn]["available"]:
                self.books[isbn]["available"] = False
                print(f"成功借出书籍:《{self.books[isbn]['book'].title}》")
            else:
                print("该书籍已被借出。")
        else:
            print("该书籍不存在于图书馆。")

    def return_book(self, isbn):
        if isbn in self.books:
            if not self.books[isbn]["available"]:
                self.books[isbn]["available"] = True
                print(f"成功归还书籍:《{self.books[isbn]['book'].title}》")
            else:
                print("该书籍已经在馆。")
        else:
            print("该书籍不存在于图书馆。")

# 测试
library = Library()
book1 = Book("Python Basics", "Author A", "ISBN001")
book2 = Book("Data Science", "Author B", "ISBN002")

library.add_book(book1)
library.add_book(book2)
library.borrow_book("ISBN001")
library.borrow_book("ISBN001")  # 已被借出
library.return_book("ISBN001")
library.borrow_book("ISBN003")  # 不存在的书籍

案例 3:员工管理系统

需求

  1. 创建一个基类 Employee,包含员工的基本信息(如姓名和薪资)。
  2. 创建两个子类 ManagerDeveloper,继承 Employee,并在子类中实现特定的方法和属性。
  3. 需要提供以下功能:

    • Manager 类可以管理一个员工列表。
    • Developer 类可以记录其特定的编程语言。
    • 打印每个员工的信息,区分不同员工类型。

思路分析

  • Employee 类作为基类,包含基本信息属性和显示信息的方法。
  • Manager 类继承自 Employee,包含一个员工列表,并可添加管理的员工。
  • Developer 类继承自 Employee,包含一个记录编程语言的属性。

代码实现

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

    def display_info(self):
        print(f"员工姓名: {self.name}, 薪资: {self.salary}")

class Manager(Employee):
    def __init__(self, name, salary):
        super().__init__(name, salary)
        self.employees = []

    def add_employee(self, employee):
        if isinstance(employee, Employee) and employee not in self.employees:
            self.employees.append(employee)
            print(f"{self.name} 现在管理员工 {employee.name}")

    def display_info(self):
        super().display_info()
        print("管理的员工:")
        for emp in self.employees:
            print(f"- {emp.name}")

class Developer(Employee):
    def __init__(self, name, salary, language):
        super().__init__(name, salary)
        self.language = language

    def display_info(self):
        super().display_info()
        print(f"编程语言: {self.language}")

# 测试
manager = Manager("Alice", 100000)
dev1 = Developer("Bob", 80000, "Python")
dev2 = Developer("Charlie", 85000, "JavaScript")

manager.add_employee(dev1)
manager.add_employee(dev2)

manager.display_info()
dev1.display_info()
dev2.display_info()

结束

本文标题: Python3学习笔记第二十四篇--面向对象综合案例

本文链接: https://blog.oyooy.com/archives/70.html

除非另有说明,本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2025 年 02 月 08 日
如果觉得我的文章对你有用,请随意赞赏