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

news/2025/12/1 9:18:42/文章来源:https://www.cnblogs.com/ljbguanli/p/19291288

【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.mzph.cn/news/982530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年小红书去水印TOP榜单:9款工具无广告体验揭秘

小红书作为当下最火的生活方式分享平台,日均内容产出超5000万条,美妆教程、穿搭灵感、旅行攻略等优质内容成为创作者的灵感库。但平台自带的水印不仅影响画面美感,更制约了二次创作和素材整理——无论是制作混剪视频…

2025年抖音保存图片去水印实测:8款工具简单操作对比

如今,短视频与图片内容已深度融入日常生活,无论是内容创作者积累素材,还是普通用户分享精彩瞬间,保存平台内容都成为刚需。然而,抖音等平台自带的水印不仅影响画面美观,还可能限制二次创作与分享。随着用户对无水…

小红书去水印TOP榜单:10款工具免费使用体验揭晓

刷小红书时刷到心动的穿搭教程、美食攻略或旅行vlog,想保存下来反复学习,结果右下角的水印像块顽固补丁破坏画面美感;试过几款去水印工具,要么处理后视频模糊到看不清细节,要么弹出满屏广告还强制收费,更让人不安…

抖音保存视频去除印记实测:8款工具功能大比拼

刷到喜欢的抖音视频想保存下来发朋友圈,结果右上角的水印像块“牛皮癣”挡住了画面主体;试过几款去水印APP,要么看完30秒广告才能处理,要么免费试用3次就弹出付费窗口,充了会员还发现画质模糊得没法看;更让人纠结…

深入解析:flask 框架的ORM 学习及应用

深入解析:flask 框架的ORM 学习及应用2025-12-01 08:56 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !…

详细介绍:css样式学习

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年比较好的糖蜜转子泵/酱料转子泵厂家推荐及选择参考

2025年比较好的糖蜜转子泵/酱料转子泵厂家推荐及选择参考行业背景与市场趋势随着食品加工、化工、制药等行业对高粘度介质输送需求的不断增长,糖蜜转子泵和酱料转子泵作为核心输送设备,其市场前景持续向好。2024年全…

2025年口碑好的胶液乳化泵TOP品牌厂家排行榜

2025年口碑好的胶液乳化泵TOP品牌厂家排行榜行业背景与市场趋势随着化工、食品、制药等行业的快速发展,胶液乳化泵作为关键工艺设备,市场需求持续增长。2024年全球乳化泵市场规模已突破50亿美元,预计2025年将保持8%…

2025年知名的非保温型抗爆墙/消防抗爆墙最新TOP厂家排名

2025年知名的非保温型抗爆墙/消防抗爆墙TOP厂家排名行业背景与市场趋势随着工业安全标准的不断提高和安全生产法规的日益严格,抗爆墙作为工业建筑安全防护的重要组成部分,其市场需求持续增长。2025年,全球抗爆墙市场…

2025年比较好的衣柜平薄铰链/三维平薄铰链用户好评厂家排行

2025年衣柜平薄铰链/三维平薄铰链用户好评厂家排行行业背景与市场趋势随着家居定制化需求的不断提升,衣柜五金配件作为影响使用体验的关键部件,越来越受到消费者和设计师的重视。在众多五金配件中,平薄铰链和三维平…

2025首饰上门回收公司TOP5权威推荐:甄选专业奢品上门回

奢侈品回收行业长期面临价格不透明、成交周期长、异地回收不便等痛点:2024年行业调研显示,超68%的用户因上门效率低放弃回收,45%的用户遭遇报价与实际到手价不符的问题,本地无门店的用户需跨市回收的比例达32%。为…

2025年长三角Q390矩形方管供应商、矩形方管品牌供应商推

为帮助建筑工程、机械设备制造企业高效锁定适配自身需求的方管供应商,避免因材质不符、规格缺失、交货延迟导致的工程风险,我们从材质纯度控制(如光谱检测精度、屈服强度达标率)、定制化响应能力(特殊规格开发周期…

实用指南:LSTM(Long Short-Term Memory)个人理解

实用指南:LSTM(Long Short-Term Memory)个人理解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

2025年质量好的小角度超薄铰链/衣柜超薄铰链厂家最新TOP实力排行

2025年质量好的小角度超薄铰链/衣柜超薄铰链厂家TOP实力排行行业背景与市场趋势随着现代家居设计日益追求极简美学与空间利用率化,超薄铰链作为五金配件中的关键部件,正经历着前所未有的技术革新与市场需求增长。202…

2025专业名牌包/名表/珠宝上门回收公司TOP5权威推荐

在奢侈品消费市场持续扩容的背景下,用户对专业回收服务的需求日益迫切。2024年数据显示,我国奢侈品回收市场规模超300亿元,年增速达35%,但30%的投诉集中在价格不透明、到账慢、上门效率低三大问题。用户常遇坑:传…

2025年度镀锌方管服务商家推荐:耐腐蚀镀锌方管定制生产优质

在建筑、机械制造等领域,镀锌方管凭借优异的耐腐蚀性能与稳定的结构强度,成为众多工程的核心材料。然而,市场上镀锌方管产品质量参差不齐,定制生产能力差异显著,选择靠谱的服务商家成为企业采购的关键。以下为202…

《代码大全》读后感(7)

这一部分聚焦“代码质量”,将视野从“如何写代码”提升到“如何写好代码”,解答了“什么样的代码才算优秀”以及“如何实现优秀代码”的核心问题,让我跳出了“功能实现即合格”的低标准认知。 书中对“可读性、可维…

2025年口碑好的少儿编程加盟实力项目推荐榜

2025年口碑好的少儿编程加盟实力项目推荐榜开篇:少儿编程行业背景与市场趋势近年来,随着人工智能、大数据等前沿技术的快速发展,编程教育已从专业领域走向基础教育。据《2024年中国少儿编程教育行业发展报告》显示,…

2025年靠谱的铝合金切削液厂家推荐及选择参考

2025年靠谱的铝合金切削液厂家推荐及选择参考 行业背景与市场趋势 随着制造业的快速发展,铝合金因其轻量化、高强度、耐腐蚀等特性,在航空航天、汽车制造、电子设备等领域得到广泛应用。铝合金加工过程中,切削液的…

PNP机器人将要亮相2025 ROS中国区大会|发表演讲、共探具身智能新未来 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …