UML课件5-类图和对象图.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.4.5 实例 小张是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按照计算机类、非计算机类分别建档,实现按照书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按照特定时间周期进行统计。 小张是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按照计算机类、非计算机类分别建档,实现按照书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按照特定时间周期进行统计。 发现类 红色字体 筛选类 “小张”、“家里”明显是系统外的概念,无须对其建模; “个人图书管理系统”、“系统”是指系统本身,也不必对其建模; “书籍”显然是个重要的类,“书名”“作者”“类别”“书号”等用于描述书籍的应作为类的属性处理。“规则”可以作为编写“书籍”类的构造函数的指南。 “基本信息” “关键字”是指书籍信息,无须建模 “功能”“新书籍”“信息”“记录”都是在描述需求时使用到的一些相关词语,并非问题域的本质,因此可以淘汰。 筛选类 “计算机类”、“非计算机类”是图书的两大类,应对其建模。并改名为“计算机类书籍” “非计算机类书籍”,以减少歧义; “外借情况”则是用来表示一次借阅行为,应该成为一个候选类“借阅记录”,多个外借情况组成“借阅记录列表”。“朋友”是借阅的主体,应对其建模; “购买金额”“册数”都是统计结果,是数字,不必建模,而“特定时限”则是统计范围,不必建模; 可发现一个隐藏的关键类--书籍列表,也就是执行统计的主体 得到候选类 书籍、计算机类书籍、非计算机类书籍,借阅记录、借阅记录列表、书籍列表 在使用名词/动词法寻找类时,很多团队会耗费大量时间,特别是对于大中型项目,建议无须咬文嚼字,抓住本质,关键是对问题领域建立概要的了解。 关联分析,建模,多重性分析,再建模 职责分析 书籍类:从需求描述中,可以找到书名、类别、作者、出版社;同时从统计的需要中,可得知“定价”也是一个关键属性; 书籍列表类:书籍列表就是全部的藏书列表,其主要的成员方法是新增、修改、查询(按关键字)、统计(按特定时限统计金额与册数)。 借阅记录类:借阅人(朋友)、借阅时间。 借阅记录列表类:主要职责就是添加记录(借出)、删除记录(归还)以及打印借阅记录。 限定与修改 导航性分析:均为双向关联。 约束:假设Book对象创建后就不能被删除,因此可以加上用自由文本写的约束。另外,一本书要么属于计算机类,要么不属于,可加上约束{Xor}。 限定符:一本书只有一册,只能够被借一次,因此,对于一本Book而言,只能有一个RecordId与其对应。 5.5 设计原则 开闭原则 Liskov替换原则 依赖倒置原则 接口分离原则 5.5.1 开闭原则 指一个模块在扩展性方面是开放的,在更改性方面是封闭的 例:output逻辑复杂,修改复杂 Output类 If elseif else 判断当前哪个打印机类与系统相连,一旦新增打印机类,需要改动output类 5.5.1 开闭原则 开闭原则 添加具有print方法的接口。 Output类只依赖接口Printer,output类中有Printer的变量p,只需p.print(),p的具体类型运行时确定,如果新增打印机,只需新增打印机类,并让该类实现print方法即可,output类不需改变 5.5.2 Liskov替换原则 子类可以替代父类出现在任何父类出现的地方 运行时,子类可以代替父类,canvas可以使用原来shape中提供的方法,无需做任何改动。可以把shape设计为抽象类或接口。让circle继承抽象类或实现接口,而canvas只与shape交互。运行时,circle替换shape,可保证较好的可扩展性,同时canvas的改动最小。 5.5.3 依赖倒置原则 依赖关系尽量依赖接口(或抽象类),而不是依赖具体类。与结构化设计方法相反。 高层的类依赖抽象类和接口,具体的实现类也只与抽象类和接口有关,具体细节的改变不会对高层的类产生影响。 5.5.4 接口分离原则 设计时采用多个与特定客户类有关的接口比采用一个通用的接口好。 一个类要给多个客户类使用,那么可以为每个客户类创建一个接口,然后这个类实现所有这些接口,而不是只创建一

文档评论(0)

134****7356 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档