1、现在,思考一个即将开展的项目。项目可以是一个有趣的业余项目,也可以是一份价值数百万美元的合同,不必是一个完整的应用程序,也可以只是一个子系统。进行一次基本的面向对象分析,步骤如下:1. 确定需求和相互交互的对象;2. 勾勒出该系统最高抽象级别的类图;3. 确定主要的交互对象;4. 确定次要的支持对象;5. 详细研究一些最有趣对象的属性和方法;6. 对不同对象采用不同的抽象级别;7. 寻找可以使用继承或组合的地方;8. 寻找应该避免使用继承的地方。
项目面向对象分析步骤
要完成对项目的面向对象分析,可按以下步骤进行:
-
确定需求和相互交互的对象
与项目相关人员沟通,了解项目的目标和功能需求,识别出参与系统的各种对象以及它们之间的交互关系。 -
勾勒出该系统最高抽象级别的类图
根据确定的对象,绘制类图来表示系统的整体结构,类图应体现出对象之间的关系,如关联、聚合、组合等。 -
确定主要的交互对象
在所有对象中,找出在系统中起核心作用、频繁进行交互的对象作为主要交互对象。 -
确定次要的支持对象
除主要交互对象外,那些为主要对象提供辅助功能或支持的对象为次要支持对象。 -
详细研究一些最有趣对象的属性和方法
选择部分有代表性或重要的对象,分析它们所具有的属性(数据)和方法(操作)。 -
对不同对象采用不同的抽象级别
根据对象在系统中的重要性和复杂程度,对不同对象采用不同程度的抽象,突出关键特征。 -
寻找可以使用继承或组合的地方
当多个对象具有相似的属性和方法时,考虑使用继承来实现代码复用;当一个对象需要包含另一个对象作为其组成部分时,可使用组合。 -
寻找应该避免使用继承的地方
如果两个对象之间的关系不是“is - a”(是一个)的关系,或者继承会导致类的层次结构过于复杂、耦合度过高,就应避免使用继承。
2、现在,访问你喜欢的搜索引擎,查找一些关于统一建模语言(UML)的教程。有很多教程可供选择,所以找到适合你偏好学习方法的那个。为你之前识别出的对象绘制一些类图或序列图。不要过于纠结于记忆语法(毕竟,如果语法很重要,你随时都可以再查阅),只需感受一下这门语言。
现在,访问你常用的搜索引擎,搜索一些 UML 教程。这类教程有很多,找一个符合你学习方式的。为之前确定的对象绘制一些类图或序列图。别太在意记忆语法(毕竟,重要的话随时能查),先感受一下这种语言。
3、编写面向对象的 Python 代码。若你有正在进行的 Python 项目,回顾该项目,创建对象并为其添加属性或方法;若项目规模较大,将其划分为几个模块甚至包,并使用相关语法。若你没有正在进行的项目,启动一个新的项目,无需完成整个项目,只需勾勒出一些基本的设计部分。你不需要完全实现所有内容,通常使用 print("this method will do something") 来确定整体设计即可。
你可以按照以下步骤完成任务:
- 若有正在进行的 Python 项目:
- 回顾项目
- 创建对象并添加属性和方法
-
若项目大,将其拆分为模块或包并使用相关语法
-
若没有项目:
- 启动新项目
- 不必完成,勾勒基本设计部分
- 用
print("this method will do something")确定整体设计
例如,下面是一个简单的 Python 面向对象代码示例:
class MyClass:
def __init__(self):
self.property = "example property"
def my_method(self):
print("this method will do something")
obj = MyClass()
print(obj.property)
obj.my_method()
4、如果你想不出编程项目的主意,试着编写一个待办事项应用程序。它的设计与笔记本应用程序类似,但需要额外的日期管理方法。该应用程序可以记录你每天想做的事情,并允许你将它们标记为已完成。请简述这个待办事项应用程序的特点和功能。
编程项目创意:待办事项应用程序
当人们缺乏编程项目的创意时,可以尝试开发一个待办事项应用程序。
该应用程序的设计和笔记本应用程序有相似之处,但要增加日期管理的相关方法。
其功能包括:
- 记录每日待办事项
- 标记事项完成状态
5、现在,尝试设计一个更大的项目。它不一定要实际实现什么功能,但要确保你尝试使用包和模块导入语法。在不同的模块中添加一些函数,并尝试从其他模块和包中导入它们。使用相对导入和绝对导入。观察它们的差异,并尝试设想使用每种导入方式的场景。
可以按以下步骤操作:
- 首先设计一个大项目框架,不用实现具体功能。
- 在不同模块添加函数,如在模块A中定义函数
funcA,在模块B中定义函数funcB。
导入方式:
- 绝对导入:
- 若项目结构为
project -> moduleA.py和project -> moduleB.py

最低0.47元/天 解锁文章
1687

被折叠的 条评论
为什么被折叠?



