chapter10面向对象的设计方法

上传人:小** 文档编号:55337449 上传时间:2018-09-27 格式:PPT 页数:167 大小:8.06MB
返回 下载 相关 举报
chapter10面向对象的设计方法_第1页
第1页 / 共167页
chapter10面向对象的设计方法_第2页
第2页 / 共167页
chapter10面向对象的设计方法_第3页
第3页 / 共167页
chapter10面向对象的设计方法_第4页
第4页 / 共167页
chapter10面向对象的设计方法_第5页
第5页 / 共167页
点击查看更多>>
资源描述

《chapter10面向对象的设计方法》由会员分享,可在线阅读,更多相关《chapter10面向对象的设计方法(167页珍藏版)》请在金锄头文库上搜索。

1、第10章 面向对象的设计方法,本章内容,概述 10.1 面向对象设计 10.2 设计类和设计类图 10.3 交互图实现用例和定义方法 10.4 用顺序图设计 10.5 用协作图设计 10.6 更新设计类图 10.7 包图将主要部分结构化 10.8 三层设计的实现问题 要点回顾 阅读章节要求,2/183,10.1 OO设计分析和程序设计的桥梁,OO设计是一个建立一系列OO设计模型的过程,程序员利用这些模型对系统进行编码和测试。 在软件设计中,细节设计规范主要是由软件设计专家完成的,用户只是偶尔参与主要是为了对设计进行纠正。,3/183,10.1.1 OO程序设计,1. OO程序如何工作 2. 谁

2、在控制 3. 模块的实例化 4. OO设计目标 5. 简化设计类例,第10章 面向对象的设计方法,4/183,1. OO程序如何工作,OO程序是由一系列对象组成,协同完成某一任务 每个程序对象有程序逻辑和一些必要的属性,这些逻辑和属性封装在一个单元中。 对象之间通过互相传递消息来协调工作,它们共同工作来完成主程序的功能。,第10章 面向对象的设计方法,5/183,2. 谁在控制,没有模块能进行控制。 有一个启动程序,但一旦程序开始执行,就没有哪个模块或对象来控制了。(与结构化程序不同,没有主控模块) 结构化程序主机-终端(指令) OO程序计算机网络(中心任务),第10章 面向对象的设计方法,6

3、/183,3. 模块的实例化,实例化:根据类定义所提供的模板创建对象。 分析员通过一个类来定义程序的逻辑结构和数据字段。类定义描述一个执行对象的结构或模板。 只有当程序开始执行时,对象才能存在。 该过程称为类模块的实例化,或基于类定义所提供的模板生成对象实例。,第10章 面向对象的设计方法,7/183,4. OO设计目标,识别并确定所有对象,并生成每个用例,比如用户界面对象、问题域对象及DB访问对象。 用足够的细节说明每个类,使程序员能理解对象是如何协同工作以生成用例,并可为每一个类编写OO的代码。,第10章 面向对象的设计方法,8/183,5. 简化设计类例,OO设计的主要部分是设计类图、交

4、互图,还要设计有些类的状态图。 通过代码可以帮助了解设计和编程实现之间的联系。,9/183,Student 类 的 简 化 设 计 类,第10章 面向对象的设计方法,10/183,10.1.2 OO设计过程和模型,1. 设计过程 2. 输入的模型 3. 用例的实现,11/183,1. 设计过程-步骤,创建设计类图的初步模型:包含属性名称等基本信息 为每一个用例产生一个交互图:决定哪些对象一起工作,及怎样协同工作。 (系统设计的核心)。 根据开发交互图时得到的信息,进一步设计类图,确定类中的方法 用包图将设计类图分割成相关的功能。,第10章 面向对象的设计方法,12/183,2. 输入的模型,交

5、互图:用例图、用例描述、活动图、系统顺序图、设计类图 设计类图:域模型类图、交互图 包图:设计类图,13/183,3. 用例的实现,用例的实现:即设计模型的最终开发结果。 术语实现:对每个用例的详细系统过程进行说明,而不是实现用例,换言之,是制定了软件的蓝图。 OO的设计也是用例驱动的(设计是由一个用例接着一个用例完成的)。,第10章 面向对象的设计方法,14/183,10.2 设计类和设计类图,10.2.0 设计类图与域模型类图 10.2.1 设计类图符号 10.2.2 设计类符号 10.2.3 一些基本的设计准则 10.2.4 开发初步设计类图,第10章 面向对象的设计方法,15/183,

6、10.2.0 设计类图与域模型类图,设计类图是域模型类图的扩展(分析阶段可忽略属性或方法)。 域模型类图揭示问题域类和它们之间的联系。 设计类图是域设计模型类图更详细的体现。 通过集成来自交互图和其他模型的信息来完成。,16/183,域模型类图 设计类图,17/97,设计类图时,还要在以前的域模型的基础上增加很多类。 系统中的类能被分解到各种不同的类图中,比如用户界面类。 也用子系统来开发各种类图。,18/183,注意:,19/183,额外类的对象例子,10.2.1 设计类图的符号,1. 构造型 2. 标准的构造型,20/183,1. 构造型,构造型是UML扩展机制,防止UML变得复杂,允许用

7、户进行必要的扩展和调整。 它必须在UML中已经定义的内容基础之上,为已有的元素增加新的语义而非语法。 基于一个已存在的模型元素定义一种新的模型元素。 可应用于所有的模型元素(类、节点、组件、关系、包、操作),21/183,例:参与者的三种表示形式,参与者可用构造型表示。 如果参与者是一个类,也可给其添加属性和操作。,第10章 面向对象的设计方法,22/183,参与者及其操作,构造型的描述,构造型将模型元素以特定的类型分类。通过说明要强调的特征来扩展模型元素的基本定义。 构造型用符号描述。 开始设计一个用例图时,首先要定义一个构造型。,第10章 面向对象的设计方法,23/183,扩展机制示例,第

8、10章 面向对象的设计方法,24/183,衍型exception使得Overflow成为一个模型元素,EventQueue中版本和作者是标记值,add上的约束ordered使得EvenrQueue中的事件按序排列, ,2. 标准的构造型,(0)设计模型中的标准构造型 实体类 边界类 控制类 数据访问类,第10章 面向对象的设计方法,25/183,设计模型中的标准构造型,构造型类,构造型的速记 符号,称图标,第10章 面向对象的设计方法,26/97,实体类,实体类:是问题域中的核心类。 从客观世界中的实体对象归纳和抽象出来(来自域模型)。用于长期保存在系统中的信息以及提供针对这些信息的相关处理行

9、为。实体类的对象是永久性的,即持久类。 持久类:程序结束后仍然存在的实体类。在系统关闭后这些数据仍存在。 实现方法:将它们写入文件或DB。实体类在DB中有相应的表,其属性对应DB中的字段。,27/183,边界类(设计阶段),从系统和外界进行交互的对象中归纳、抽象出来。 是系统内对象和系统外的参与者的联系媒介,外界消息通过边界类的对象实例发送给系统。(窗体、对话框、报表) 边界类:存在于系统的自动化边界上的类。,第10章 面向对象的设计方法,28/183,控制类(设计阶段),控制类:在边界类和实体类中间起协调作用的类,在域层和可视层之间起开关控制的作用(它包含了事件的应用逻辑或业务规则)。 它负

10、责从边界类对象获取信息,然后发送到适当的实体类对象,就像是域层和可视层之间的一个开关或控制器 在一个用例中,一个控制类应该同一个且仅一个参与者相关联。 其协调边界类和实体类之间的消息及消息发送的顺序。,第10章 面向对象的设计方法,29/183,数据访问类(设计阶段),数据访问类:从DB获取信息。 从DB获取信息或向DB发送信息的类。 不同于向实体类方法中插入DB访问逻辑(包括SQL语句),在设计中通常包含一个访问DB的独立的类的层次。,第10章 面向对象的设计方法,30/183,10.2.2 设计类符号,1. 定义设计类的内部符号 2. 属性的格式 3. 方法特征包括内容,第10章 面向对象

11、的设计方法,31/183,1. 定义设计类的内部符号,名字:类名、构造型 属性 方法,第10章 面向对象的设计方法,32/183,2. 属性的格式,属性可见性(+:可见,-:不可见。可见性表示其他对象是否能直接访问这些属性); 属性名称; 类型表达式(如字符型、字符串型、整型、数字型、货币型或日期型); 初值; 原型(在花括号内),比如关键字。,第10章 面向对象的设计方法,33/183,3. 方法特征包括内容,方法可见性; 方法名; 类型表达式(方法返回参数的类型); 方法参数列表(输入参数)。 方法特征:描述调用该方法所需的所有信息的符号,第10章 面向对象的设计方法,34/183,参数表

12、,在OO的程序设计中,分析员通过使用完整标识来识别每一个方法。 一些OO语言允许多个方法使用同一个名称,为了区分使用参数表。 在OO语言中,需要用方法名和参数表去激活相应的方法。,第10章 面向对象的设计方法,35/183,方法重载,要通过客户ID或客户名来取得客户记录,可建立两个方法,并为它们起同一个名字:“getCustomer(CustomerlD)”、“getCustomer(CustomerName)”。 方法重载:两个方法有同一名字(getCustomer)。 要知道哪个方法被激活,则编译器要知道包含参数是什么即输入的参数是数字(CustomerID)还是字符串(CustomerN

13、ame)。,第10章 面向对象的设计方法,36/183,类级方法,在OO方法中,类是创建个体对象和实例的模板。 对类的每个实例大多数方法都适用。 但是,分析员常常需要立即检查所有的实例。这种类型的方法称为类级方法,它们用下划线表示出来。 VB.NET: 该方法称为共享方法;Java: 是静态方法。 类级方法:由类(不是由类的某一对象)执行。 因为类级方法在类级别应用,它们不依赖于某一对象的存在,如果需要,就可以通过所有的对象访问数据。,第10章 面向对象的设计方法,37/183,域图和设计类图的学生类例子,38/183,构造器:建立类的新对象的方法。 使用创建语句来跟踪在交互图中使用的信息名称

14、。,+createStudent(name,address,major):student +createStudent(studentID):student,构造器自己填充学生其他信息。 访问DB获得字段值。,+findAboveHours(int hours):studentArray,类级方法:与类相关的方法。 审查类所有例子,返回那些总小时数比输入参数大的学生队列。,10.2.3 一些基本的设计准则,1. 封装和信息隐藏 2. 导航可见性 3. 耦合 4. 任务的聚合和分解,第10章 面向对象的设计方法,39/183,1. 封装和信息隐藏,封装:数据和程序逻辑包含在一个独立的单元中 对象

15、重用 :标准对象可以反复使用 信息隐藏:指和一个对象有关的数据对外部世界是不可见的,通过使用一组方法来访问和修改这些数据,第10章 面向对象的设计方法,40/183,2. 导航可见性,概念:一个对象可看到另一个对象并与之交互 简而言之,一个对象可发送消息到另一个对象 导航可见性可是单向也可是双向的。,第10章 面向对象的设计方法,41/183,Customer和Order间的导航可见性,Customer类的myOrder变量的值指向某个Order实例。 通常变量myOrder并不直接在设计类中出现。 导航的箭头表示一个类对另一个类有可见的要求。 在该例添加myOrder变量来强调这个概念。 若

16、导航是双向的, 则Order对象也有指向Customer对象的变量,42/183,3. 耦合,用来度量设计类图中的类与类之间连接关系紧密程度。 表征:设计类图中导航箭头的个数 对系统来说,弱耦合比强耦合好。 因为较少的导航可见性箭头说明系统更易于理解和维护,43/183,互相通信的对象必须有导航可见性,所以它们是耦合的。 若使输入窗口对象也可访问DB对象,则该用例的整体耦合性将会增加。 无规则的连接和导航可见性会导致很强的耦合,使系统很复杂,44/183,4. 任务的聚合和分解,聚合 任务分解,第10章 面向对象的设计方法,45/183,聚合,对一个类中功能一致性的定性度量。 低聚合的类的负效应:难于维护、很难重用、难于理解。 聚合类型:极低、低、中等、高聚合,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 宣传企划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号