当前位置: 首页 > news >正文

【Python OOP Diary 3】高级特性与设计模式练习题(七至十三) - 实践

【Python OOP Diary 3】高级特性与设计模式练习题(七至十三) - 实践

Python面向对象编程进阶:高级特性与设计模式练习题

已经掌握了OOP基础?现在让我们挑战更高级的题目,学习特殊方法、设计模式、组合关系等进阶概念!

题目七:魔术方法练习 - 向量类

问题描述

创建一个Vector类,实现向量的基本运算。要求使用Python的魔术方法(特殊方法)来支持数学运算、比较运算和内置函数。

输入格式

程序需要支持向量创建和多种运算:

输出格式

根据运算输出相应结果。

样例输入

v1 = Vector(1, 2, 3)
v2 = Vector(4, 5, 6)
print(v1 + v2)
print(v1 - v2)
print(v1 * v2)  # 点乘
print(2 * v1)
print(abs(v1))
print(v1)
print(v1 == Vector(1, 2, 3))

样例输出

Vector(5, 7, 9)
Vector(-3, -3, -3)
32
Vector(2, 4, 6)
3.74
Vector(1, 2, 3)
True

要求

  1. 实现以下魔术方法:
    • __init__, __repr__, __str__
    • __add__, __sub__, __mul__
    • __rmul__ (右乘)
    • __abs__, __eq__
  2. 点乘返回标量,数乘返回向量
  3. 模长计算使用欧几里得距离

解题思路

  • 使用魔术方法让类支持Python内置运算符
  • 注意区分点乘和数乘的逻辑
  • 实现__rmul__支持标量左乘

题目八:组合关系练习 - 电脑组装系统

问题描述

创建一个电脑组装系统,使用组合关系(Composition)来构建复杂的对象。电脑由CPU、内存、硬盘等组件组成。

输入格式

多行输入,每行一个命令:

输出格式

根据命令输出相应结果。

样例输入

add_cpu i7-12700K 3.6
add_memory 16 DDR4
add_disk 1024 SSD
assemble MyPC
show MyPC
benchmark MyPC
exit

样例输出

电脑 'MyPC' 组装完成!
电脑配置:
CPU: i7-12700K (3.6GHz)
内存: 16GB DDR4
硬盘: 1024GB SSD
性能得分: 8750

要求

  1. 使用组合关系:电脑"拥有"各个组件
  2. 每个组件都是独立的类
  3. 性能得分基于组件参数计算
  4. 支持同一电脑添加多个内存条和硬盘

解题思路


题目九:观察者模式练习 - 股票交易系统

问题描述

实现一个股票交易系统,使用观察者模式(Observer Pattern)。当股票价格变化时,自动通知所有观察者(投资者)。

输入格式

多行输入,每行一个命令:

  • add_stock 代码 名称 初始价格:添加股票
  • add_investor 姓名:添加投资者
  • subscribe 投资者 股票:订阅股票
  • set_price 股票 新价格:设置股票价格
  • show_investors 股票:显示订阅者
  • exit:退出

输出格式

价格变化时自动通知所有订阅者。

样例输入

add_stock AAPL 苹果 150
add_stock TSLA 特斯拉 200
add_investor 张三
add_investor 李四
subscribe 张三 AAPL
subscribe 李四 AAPL
subscribe 李四 TSLA
set_price AAPL 155
set_price TSLA 190

样例输出

通知 张三: AAPL(苹果) 价格变化: 150.00 -> 155.00
通知 李四: AAPL(苹果) 价格变化: 150.00 -> 155.00
通知 李四: TSLA(特斯拉) 价格变化: 200.00 -> 190.00

要求

  1. 实现观察者模式:主题(股票)和观察者(投资者)
  2. 支持一对多的通知关系
  3. 投资者可以订阅多个股票
  4. 价格变化时自动通知所有相关投资者

解题思路


题目十:工厂模式练习 - 图形绘制系统

问题描述

创建一个图形绘制系统,使用工厂模式(Factory Pattern)来创建不同类型的图形对象。

输入格式

多行输入,每行描述要创建的图形:

  • circle 半径 x y:创建圆形
  • rectangle 长 宽 x y:创建矩形
  • triangle 边1 边2 边3 x y:创建三角形
  • draw all:绘制所有图形
  • area all:计算总面积
  • exit:退出

输出格式

根据命令输出绘制结果或计算信息。

样例输入

circle 5 10 10
rectangle 8 6 20 20
triangle 3 4 5 30 30
draw all
area all
exit

样例输出

在(10,10)绘制圆形(半径=5)
在(20,20)绘制矩形(8x6)
在(30,30)绘制三角形(3,4,5)
总面积: 110.27

要求

  1. 使用工厂模式创建图形对象
  2. 每个图形都有draw()area()方法
  3. 支持多种图形类型
  4. 统一管理所有创建的图形

解题思路


题目十一:装饰器模式练习 - 咖啡订单系统

问题描述

实现一个咖啡订单系统,使用装饰器模式(Decorator Pattern)来动态添加配料。基础咖啡可以添加牛奶、糖、奶油等配料,每种配料都会影响价格和描述。

输入格式

多行输入,每行一个命令:

  • order 咖啡类型:订购基础咖啡
  • add 配料:添加配料
  • show:显示当前订单
  • price:计算总价
  • new_order:开始新订单
  • exit:退出

样例输入

order 拿铁
add 牛奶
add 糖
show
price
new_order
order 美式
add 奶油
show
price
exit

样例输出

拿铁 + 牛奶 + 糖
价格: 32.00
美式 + 奶油
价格: 28.00

要求

  1. 使用装饰器模式动态添加功能
  2. 每种配料都是一个装饰器
  3. 配料可以任意组合
  4. 价格自动累加计算

解题思路


题目十二:策略模式练习 - 数据压缩系统

问题描述

创建一个数据压缩系统,使用策略模式(Strategy Pattern)来支持不同的压缩算法。用户可以选择使用ZIP、RAR或7Z算法来压缩文件。

输入格式

多行输入,每行一个命令:

  • set_algorithm 算法:设置压缩算法
  • compress 文件名:压缩文件
  • decompress 文件名:解压文件
  • show_algorithms:显示可用算法
  • exit:退出

输出格式

根据命令输出压缩结果。

样例输入

show_algorithms
set_algorithm ZIP
compress document.txt
set_algorithm RAR
compress image.jpg
decompress archive.rar
exit

样例输出

可用算法: ZIP, RAR, 7Z
使用ZIP算法压缩: document.txt -> document.zip
使用RAR算法压缩: image.jpg -> image.rar
使用RAR算法解压: archive.rar -> extracted/

要求

  1. 使用策略模式封装压缩算法
  2. 可以在运行时切换算法
  3. 支持多种压缩格式
  4. 统一的压缩/解压接口

解题思路


题目十三:迭代器模式练习 - 图书目录系统

问题描述

创建一个图书目录系统,使用迭代器模式(Iterator Pattern)来遍历图书集合。支持按不同方式遍历:顺序遍历、按分类过滤、按作者过滤等。

输入格式

多行输入,每行一个命令:

  • add_book 书名 作者 分类:添加图书
  • list_books:顺序列出所有图书
  • list_by_category 分类:按分类列出图书
  • list_by_author 作者:按作者列出图书
  • search 关键词:搜索图书
  • exit:退出

输出格式

根据遍历方式输出图书列表。

样例输入

add_book Python编程 张三 编程
add_book 算法导论 李四 计算机科学
add_book 设计模式 王五 编程
list_books
list_by_category 编程
search Python
exit

样例输出

所有图书:
1. Python编程 - 张三 [编程]
2. 算法导论 - 李四 [计算机科学]
3. 设计模式 - 王五 [编程]
编程类图书:
1. Python编程 - 张三
2. 设计模式 - 王五
搜索 'Python':
Python编程 - 张三 [编程]

要求

  1. 使用迭代器模式提供多种遍历方式
  2. 迭代器接口:has_next(), next()
  3. 聚合接口:create_iterator()
  4. 支持多种迭代策略

解题思路


学习建议

  1. 理解模式意图:每个设计模式解决特定类型的问题
  2. 对比不同模式:理解各种模式的适用场景和区别
  3. 实际应用思考:思考这些模式在真实项目中的应用
  4. 组合使用模式:在实际项目中,经常需要组合使用多个模式

设计模式总结

通过这些题目,你将掌握:

  1. 创建型模式:工厂模式(对象创建)
  2. 结构型模式:装饰器模式(功能扩展)、组合模式(部分-整体)
  3. 行为型模式:观察者模式(事件通知)、策略模式(算法封装)、迭代器模式(集合遍历)

这些高级OOP概念和设计模式将帮助你构建更加灵活、可维护和可扩展的软件系统。

http://www.jsqmd.com/news/56629/

相关文章:

  • 2025年小红书去水印TOP榜单:9款工具无广告体验揭秘
  • 2025年抖音保存图片去水印实测:8款工具简单操作对比
  • 小红书去水印TOP榜单:10款工具免费使用体验揭晓
  • 抖音保存视频去除印记实测:8款工具功能大比拼
  • 实测8款抖音去水印工具:免费快速无广告谁称王?
  • 2025年比较好的人造丝绒/印花丝绒厂家推荐及选择指南
  • 2025年抖音保存视频怎么去除抖音印记?10款工具实测见分晓
  • 2025年9款快手免费去水印工具实测,谁能脱颖而出?
  • 2025年小红书怎么去水印?6款工具实测谁更胜一筹?
  • 2025精选去油去屑洗发水指南:深层清洁控油,告别头屑反复困扰
  • 美白祛斑用什么产品效果最好?2025年十大高效美白产品真实测评与体验分享
  • 南京离婚律师找谁?2025年10位婚姻律师最新名单
  • 干纹细纹一键淡化?2025十大抗衰老产品深度测评,绯悦紧致抗皱抗衰老数据完胜
  • 2025美白产品推荐|这瓶国货黑马正重新定义美白淡斑法则
  • 2025行业权威测评:高口碑牙膏排行Top8,​臻芙宁闭眼入的宝藏款​
  • 2025年盖茨同步带推荐厂商排名:高性价比的盖茨同步带工厂全
  • 2025年中国十大食品包装设计公司推荐:性价比高的、专业的、
  • 2025年热门的高载流密集型母线槽厂家最新推荐权威榜
  • 2025年比较好的输送线/重载式精密输送线厂家最新热销排行
  • 2025年宜昌十大短视频代运营服务哪家专业排行榜,知名大型短
  • Python学习基础篇
  • JVM 调优实战:从线上问题复盘到精细化内存治理 - 教程
  • java虚拟线程理解
  • Python的类和对象
  • 筛选出“大概率上涨”的推荐股票列表
  • Ollama的安装及AI人工智能本地大模型的部署
  • 注册为服务,开机自动启动
  • 2025年知名的高精度氯化氢传感器/氯化氢传感器厂家实力及用户口碑排行榜
  • 深入解析:flask 框架的ORM 学习及应用
  • 2025年口碑好的衬氟呼吸阀定制厂家