面向对象分析与Python编程实践

1、现在,思考一个即将开展的项目。项目可以是一个有趣的业余项目,也可以是一份价值数百万美元的合同,不必是一个完整的应用程序,也可以只是一个子系统。进行一次基本的面向对象分析,步骤如下:1. 确定需求和相互交互的对象;2. 勾勒出该系统最高抽象级别的类图;3. 确定主要的交互对象;4. 确定次要的支持对象;5. 详细研究一些最有趣对象的属性和方法;6. 对不同对象采用不同的抽象级别;7. 寻找可以使用继承或组合的地方;8. 寻找应该避免使用继承的地方。

项目面向对象分析步骤

要完成对项目的面向对象分析,可按以下步骤进行:

  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、现在,尝试设计一个更大的项目。它不一定要实际实现什么功能,但要确保你尝试使用包和模块导入语法。在不同的模块中添加一些函数,并尝试从其他模块和包中导入它们。使用相对导入和绝对导入。观察它们的差异,并尝试设想使用每种导入方式的场景。

可以按以下步骤操作:

  1. 首先设计一个大项目框架,不用实现具体功能。
  2. 在不同模块添加函数,如在模块A中定义函数 funcA ,在模块B中定义函数 funcB

导入方式:

  • 绝对导入:
  • 若项目结构为 project -> moduleA.py project -> moduleB.py
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值