面向对象软件设计原则与建模

更新时间:2023-12-09 12:36:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

设计类?名词适用于类,动词适用于操作,有些名词和形容词适用于类的属性。?步骤一:找出名词接待员从可用的汽车的汽车列表中选择一辆汽车;接待员输入顾客的ID类型和号码;接待员把汽车标记为移交。?步骤二:删除参与者接待员从可用的汽车的汽车列表中选择一辆汽车;接待员输入顾客的ID类型和号码;接待员把汽车标记为移交。设计类?步骤三:删除重复的名词接待员从可用的汽车的汽车列表中选择一辆汽车;接待员输入顾客的ID类型和号码;接待员把汽车标记为移交。?步骤四:把系统类从问题域中分离出来接待员从可用的汽车的汽车列表中选择一辆汽车;接待员输入顾客的ID类型和号码;接待员把汽车标记为移交。?步骤五:把特性从类中分离出来接待员从可用的汽车的汽车列表中选择一辆汽车;接待员输入顾客的ID类型和号码;接待员把汽车标记为移交。设计类?步骤六:标识操作接待员从可用的汽车的汽车列表中选择一辆汽车;接待员输入顾客的ID类型和号码;接待员把汽车标记为移交?结果:汽车(移交)、顾客、ID类型(枚举)、ID(ID类型,号码)?个人观点:汽车不应该有移交方法,应该由汽车管理类来完成发现隐藏的类?表示、领域、持久化在一个类中?把领域代码和表示代码分离?把领域代码和持久化代码分离

需求描述?小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计发现类?小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计筛选备选类??“小王”、“人”、“家里”很明显是系统外的概念,无须对其建模;而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模;很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,???因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。“基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模;“功能”、“新书籍”、“信息”、“记录”都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉;筛选修选类??“计算机类”、“非计算机类”是该系统中图书的两大分类,因此应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”,以减少歧义;?“外借情况”则是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要的角色是“朋友”—借阅主体。虽然到本系统中并不需要建立“朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将“外借情况”改名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表”;“购买金额”、“册数”都是统计的结果,都是一个数字,因此不用将其建模,而“特定时限”则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类—书籍列表,也就是执行统计的主体。得到候选类书籍计算机类书籍非计算机类书籍借阅记录借阅记录列表书籍列表?在使用“名词动词法”寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过咬文嚼字关联分析,建模,多重性分析,再建模

面向对象软件设计原则(二) —— 软件设计的腐化

我们如何知道软件设计的优劣呢?以下是一些拙劣设计的症状,当软件出现下面任何一种气味时,就表明软件正在腐化。

? 僵化性(Rigidity):很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其他改动。 ? 脆弱性(Fragility):对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。 ? 牢固性(Immobility):很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。 ? 粘滞性(Viscosity):做正确的事情比做错误的事情要困难。

本文来源:https://www.bwwdw.com/article/5yc5.html

Top