面向对象分析与设计实践指南

1、现在,思考一个即将开展的项目。项目是什么并不重要,它可能是一个有趣的业余项目,也可能是一份数百万美元的合同。它不必是一个完整的应用程序,也可以只是一个子系统。进行一次基本的面向对象分析。确定需求和相互作用的对象。勾勒出该系统最高抽象级别的类图。确定主要的相互作用对象。确定次要的支持对象。详细描述一些最有趣对象的属性和方法。对不同对象采用不同的抽象级别。寻找可以使用继承或组合的地方。寻找应该避免使用继承的地方。

面向对象分析步骤

按照以下步骤对即将开展的项目进行面向对象分析:

  1. 确定项目需求和相互作用的对象;
  2. 勾勒系统最高抽象级别的类图;
  3. 确定主要相互作用对象和次要支持对象;
  4. 详细描述部分有趣对象的属性和方法;
  5. 对不同对象采用不同抽象级别;
  6. 寻找可使用继承或组合之处,以及应避免继承的地方。

2、最后,访问你喜欢的搜索引擎,查找一些关于统一建模语言(UML)的教程。有很多这样的教程,所以找一个适合你偏好学习方法的。为你之前识别出的对象绘制一些类图或序列图。不要过于纠结于记忆语法(毕竟,如果语法很重要,你随时都可以再查阅);只要感受一下这种语言就行。

最后,访问你常用的搜索引擎,查找一些 UML 教程。这类教程有很多,找一个适合你学习方式的。

为你之前确定的对象绘制一些类图或序列图。别太纠结于记忆语法(毕竟,要是语法重要,你随时能再查),感受一下这种语言就好。

3、编写面向对象的 Python 代码。若你已有一个 Python 项目,回顾该项目,创建一些对象并为其添加属性或方法;若项目规模较大,可将其划分为几个模块甚至包,并使用相关语法。若你没有 Python 项目,启动一个新的项目,无需完成整个项目,只需勾勒出一些基本的设计部分。不必完全实现所有功能,通常使用 print(“this method will do something”) 来表明方法用途以构建整体设计。

若已有 Python 项目,回顾项目,创建对象并添加属性或方法,大项目可划分成模块或包来练习语法;若没有项目,开启新项目,不用完成,勾勒基本设计部分,不必完全实现功能,用 `print` 语句表明方法用途来构建整体设计。

4、If you’re having trouble coming up with ideas, try writing a to - do application. (Hint: it would be similar to the design of the notebook application, but with extra date management methods.) It can keep track of things you want to do each day, and allow you to mark them as completed.

如果你想不出主意,不妨尝试编写一个待办事项应用程序。
(提示:它的设计与笔记本应用程序类似,但需要额外的日期管理方法。)
它可以记录你每天想做的事情,并允许你将它们标记为已完成。

5、尝试为混入(mixins)想出一些好的用例,并通过实验说明使用组合可能会有更好的设计。

此句为建议,旨在让读者探索混入的应用场景并通过实践明白组合设计的优势。

6、如果你之前编写过 Python 代码,留意其中是否有应该处理异常的地方。你将如何处理这些异常?你是否根本就需要处理它们呢?

处理方式:
将任何可能抛出异常的代码(无论是异常代码本身,还是对任何可能在内部引发异常的函数或方法的调用)包装在 `try...except` 子句中。

是否需要处理需分情况判断:
- 有时,让异常传播到控制台是向用户传达信息的最佳方式,特别是当用户也是脚本的编写者时;
- 有时,可以从错误中恢复并让程序继续运行;
- 有时,只能将错误重新格式化为用户能理解的内容并展示给他们。

常见需查看的地方包括:
- 文件 I/O(代码是否可能尝试读取不存在的文件)
- 数学表达式(是否存在除数为零的情况)
- 列表索引(列表是否为空)
- 字典(键是否存在)

需要自问:
- 是应该忽略问题?
- 通过先检查值来处理?
- 还是使用异常来处理?

尤其要注意可能使用 `finally` 和 `else` 确保在所有条件下都能执行正确代码的区域。

7、在编程中,常见的检查点有文件输入输出(代码是否可能尝试读取一个不存在的文件)、数学表达式(用作除数的值是否可能为零)、列表索引(列表是否为空)以及字典(键是否存在)。当遇到这些可能出现的问题时,有忽略问题、先检查值来处理、用异常来处理这几种处理方式。请举例说明对于列表索引检查点,分别采用这三种处理方式的代码实现。

以下是针对列表索引检查点,分别采用三种处理方式的 Python 代码示例:

  1. 忽略问题

python my_list = [] try: value = my_list[0] except IndexError: pass # 代码继续执行

在这个例子中,当列表为空时,尝试访问索引为 0 的元素会引发 IndexError

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值