第3讲类与对象关系建模_第1页
第3讲类与对象关系建模_第2页
第3讲类与对象关系建模_第3页
第3讲类与对象关系建模_第4页
第3讲类与对象关系建模_第5页
已阅读5页,还剩224页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江苏大学计算机工程系面向对象技术第第3讲讲 类与对象关系建模类与对象关系建模面面向向对对象象技技术术内容提要概念数据建模概述概念数据建模概述类图与对象图类图与对象图类的确定类的确定类间关系确定类间关系确定建模方法与实例建模方法与实例面面向向对对象象技技术术概念数据建模概述在完成用例建模之后,便可以进行其他系在完成用例建模之后,便可以进行其他系统分析活动,而概念数据建模是最重要的统分析活动,而概念数据建模是最重要的分析活动之一。分析活动之一。概念数据建模是对组织数据的描绘,它以概念数据建模是对组织数据的描绘,它以一种独立于实现的方式说明了数据的结构一种独立于实现的方式说明了数据的结构和数据之间的

2、相互关系,为后续的分析设和数据之间的相互关系,为后续的分析设计提供了基础。计提供了基础。面面向向对对象象技技术术概念数据建模概述概念数据建模的过程概念数据建模的过程面面向向对对象象技技术术概念数据建模概述概念数据建模在系统分析中的作用概念数据建模在系统分析中的作用面面向向对对象象技技术术概念数据建模概述如何进行概念数据建模?如何进行概念数据建模?n必须包括以数据为中心的问题和调查,而不是必须包括以数据为中心的问题和调查,而不是以过程、逻辑或用户界面为中心,从对业务性以过程、逻辑或用户界面为中心,从对业务性质的透彻理解导出数据模型,也可以通过审查质的透彻理解导出数据模型,也可以通过审查系统内部处

3、理的特定业务文档系统内部处理的特定业务文档计算机显示、计算机显示、报表和业务表单来收集。报表和业务表单来收集。n开发准确而完整的数据模型要考虑的问题开发准确而完整的数据模型要考虑的问题w类:业务的主题类:业务的主题/客体是什么?什么类型的人、地客体是什么?什么类型的人、地点、事物和材料被用于这个业务或者和这个业务交点、事物和材料被用于这个业务或者和这个业务交互?每个对象可能存在多少实例?互?每个对象可能存在多少实例?面面向向对对象象技技术术概念数据建模概述如何进行概念数据建模?如何进行概念数据建模?n开发准确而完整的数据模型要考虑的问题(续)开发准确而完整的数据模型要考虑的问题(续)w属性:需

4、要维护关于对象的什么数据?什么特征描述各个对属性:需要维护关于对象的什么数据?什么特征描述各个对象?对象在什么基础上被引用、选择、限定、整理和分类?象?对象在什么基础上被引用、选择、限定、整理和分类?对象的一个特性能有多少个值?对给定的一个对象,特性是对象的一个特性能有多少个值?对给定的一个对象,特性是必须的还是可选的?必须的还是可选的?w标识符:什么独有特性区分相同类型的各个对象?这个区别标识符:什么独有特性区分相同类型的各个对象?这个区别特性是随着时间变化还是持久的?即使在我们知道一个对象特性是随着时间变化还是持久的?即使在我们知道一个对象存在的时候,该对象的这个特性可以缺少吗?对象可以通

5、过存在的时候,该对象的这个特性可以缺少吗?对象可以通过一个数字序列标识吗?一个数字序列标识吗?w关联、聚合和组合:对象之间存在什么关系?一个关系是部关联、聚合和组合:对象之间存在什么关系?一个关系是部分整体的那种吗?如果是,一个对象可以在没有另一个时存分整体的那种吗?如果是,一个对象可以在没有另一个时存在吗?一个关系中涉及了多个对象吗?关系是同类对象之间在吗?一个关系中涉及了多个对象吗?关系是同类对象之间的吗?参与一个关系的对象的基数是什么?的吗?参与一个关系的对象的基数是什么?面面向向对对象象技技术术概念数据建模概述如何进行概念数据建模?如何进行概念数据建模?n开发准确而完整的数据模型要考虑

6、的问题(续)开发准确而完整的数据模型要考虑的问题(续)w泛化:一个对象是泛化:一个对象是“一种一种”或另一个对象的或另一个对象的“一种一种”吗?对象形成一个比较一般到比较特殊的层次吗?吗?对象形成一个比较一般到比较特殊的层次吗?面面向向对对象象技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n加热器,开关加热器,开关n保温盘,开关保温盘,开关n保温盘传感器保温盘传感器n加热传感器加热传感器n冲煮按钮冲煮按钮n减压阀门减压阀门面面向向对对象象技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n基本接口基本接口namespace coffeemaker pub

7、lic enum warmerplatestatus /保温盘 warmer_empty,pot_empty,pot_not_empty public enum boilerstatus /加热器 empty,not_empty public enum brewbuttonstatus /冲煮按钮 pushed,not_pushed public enum warmerstate /保温 on,off public enum indicatorstate /指示灯 on,off public enum reliefvalvestate /减压阀 open,closed 面面向向对对象象技技术术

8、概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n基本接口基本接口namespace coffeemaker public interface coffeemakerapi warmerplatestatus getwarmerplatestatus(); boilerstatus getboilerstatus(); brewbuttonstatus getbrewbuttonstatus(); void setboilerstate(boilerstate s); void setwarmerstate(warmerstate s); void setindicatorstat

9、e(indicatorstate s); void setreliefvalvelstate(reliefvalvelstate s); 面面向向对对象象技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n类设计类设计面面向向对对象象技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n存在问题存在问题w如何实现这些类,只是一个函数调用的转换器,水蒸气类如何实现这些类,只是一个函数调用的转换器,水蒸气类public class lightpublic void on()coffeemaker.api.setindicatorstate(indicatorsta

10、te.on);public void off()coffeemaker.api.setindicatorstate(indicatorstate.off);面面向向对对象象技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n存在问题存在问题w虚构的抽象虚构的抽象public interface heatervoid turnon();void turnoff();public interface sensorint sensor();面面向向对对象象技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n如何改进如何改进:根据功能抽象根据功能抽象面面向向对对象象

11、技技术术概念数据建模概述mark咖啡机控制软件设计咖啡机控制软件设计n如何改进如何改进:追加用户界面追加用户界面面面向向对对象象技技术术类图的概念对象是指与应用问题有一定关联的某个事对象是指与应用问题有一定关联的某个事物,或者说是对某个事物的抽象描述。物,或者说是对某个事物的抽象描述。类是对一类具有相同特性的对象的描述类是对一类具有相同特性的对象的描述,或者说是类属事物或系统的表示形式。类或者说是类属事物或系统的表示形式。类可以具有状态(通过使用自己的特性数据可以具有状态(通过使用自己的特性数据来描述),并且可以提供功能(通过使用来描述),并且可以提供功能(通过使用其操作或方法来表示)其操作或

12、方法来表示)面面向向对对象象技技术术类图的概念类图描述类、接口、协作及它们之间关系类图描述类、接口、协作及它们之间关系的图。的图。类图显示系统中各个类的静态结构。类图显示系统中各个类的静态结构。 面面向向对对象象技技术术类图的概念类图中的图示元素:类图中的图示元素:n类(类(class)n接口(接口(interface)n协作(协作(collaboration)n依赖关系(依赖关系(dependency)n泛化关系(泛化关系(generalization)n关联关系(关联关系(association)n实现关系(实现关系(realization)面面向向对对象象技技术术类面向对象系统组织结构的

13、核心。面向对象系统组织结构的核心。对一组具有相同属性、操作、关系和语义对一组具有相同属性、操作、关系和语义的对象的抽象。的对象的抽象。包括名称部分、属性部分和操作部分。包括名称部分、属性部分和操作部分。 面面向向对对象象技技术术类dialer类类public class dialer private string digits; private int ndigits; public void digit(int n); protected bool recorddigit(int n);面面向向对对象象技技术术类类的名称类的名称n应该来自系统的问题域。应该来自系统的问题域。 n应该是一个名词

14、,且不应该有前缀或后缀。应该是一个名词,且不应该有前缀或后缀。 n分为简单名称和路径名称。分为简单名称和路径名称。 面面向向对对象象技技术术类属性属性n描述了类在软件系统中代表的事物(即对象)描述了类在软件系统中代表的事物(即对象)所具备的特性。所具备的特性。 n类可以有任意数目的属性,也可以没有属性。类可以有任意数目的属性,也可以没有属性。 n在在uml中,类属性的语法为:中,类属性的语法为:可见性可见性 属性名属性名 :类型类型 =初始值初始值 属属性字符串性字符串面面向向对对象象技技术术类属性属性n可见性可见性w公有(公有(public) “”w私有(私有(private)“”w受保护(

15、受保护(protected)“” 面面向向对对象象技技术术类属性属性n属性名属性名w每个属性都必须有一个名字以区别于类中的其他属每个属性都必须有一个名字以区别于类中的其他属性。性。 w属性名由描述所属类的特性的名词或名词短语组成。属性名由描述所属类的特性的名词或名词短语组成。 w单字属性名小写,如果属性名包含了多个单词,这单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首些单词要合并,且除了第一个单词外其余单词的首字母要大写。字母要大写。 面面向向对对象象技技术术类属性属性n类型类型w简单类型:简单类型:n整型整型n布尔型布尔型n实型实型n枚举类型枚举类型

16、w系统中的其他类系统中的其他类 面面向向对对象象技技术术类属性属性n初始值初始值w目的:目的:n保护系统的完整性,防止漏掉取值或被非法的值破坏系统保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。的完整性。n为用户提供易用性。为用户提供易用性。 面面向向对对象象技技术术类属性属性n属性字符串属性字符串w指定关于属性的其他信息,往往是约束条件。指定关于属性的其他信息,往往是约束条件。w任何希望添加在属性定义字符串值但又没有合适地任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。方可以加入的规则,都可以放在属性字符串里。 n实例实例name:strin

17、g readonly面面向向对对象象技技术术类操作操作n对类的对象所能做的事务的抽象。对类的对象所能做的事务的抽象。n一个类可以有任意数量的操作或者根本没有操一个类可以有任意数量的操作或者根本没有操作。作。 n返回类型、名称和参数一起被称为操作签名。返回类型、名称和参数一起被称为操作签名。 n在在uml中,类操作的语法为:中,类操作的语法为:可见性可见性 操作名操作名 (参数表参数表) :返回类型返回类型 属性字符串属性字符串面面向向对对象象技技术术类操作操作n可见性可见性w公有(公有(public) “”w私有(私有(private) “”w受保护(受保护(protected) “”w包内公

18、有(包内公有(package) “”面面向向对对象象技技术术类操作操作n操作名操作名w用来描述所属类的行为的动词或动词短语。用来描述所属类的行为的动词或动词短语。w单字操作名小写,如果操作名包含了多个单词,这单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的些单词要合并,并且除了第一个单词外其余单词的首字母要大写。首字母要大写。 面面向向对对象象技技术术类操作操作n参数表参数表w一些按顺序排列的属性定义了操作的输入。一些按顺序排列的属性定义了操作的输入。 w是可选的,即操作不一定必须有参数才行。是可选的,即操作不一定必须有参数才行。 w定义方式:定义方式:

19、“方向方向 名称:类型默认值名称:类型默认值”。w若存在多个参数,将各个参数用逗号隔开。若存在多个参数,将各个参数用逗号隔开。w参数可以具有默认值。参数可以具有默认值。面面向向对对象象技技术术类操作操作n返回类型返回类型w是可选的,即操作不一定必须有返回类型。是可选的,即操作不一定必须有返回类型。 w绝大部分编程语言只支持一个返回值。绝大部分编程语言只支持一个返回值。 w具体的编程语言一般要加一个关键字具体的编程语言一般要加一个关键字void来表示无来表示无返回值。返回值。 面面向向对对象象技技术术类操作操作n属性字符串属性字符串w在操作的定义中加入一些除了预定义元素之外的信在操作的定义中加入

20、一些除了预定义元素之外的信息。息。 w往往也是定义约束往往也是定义约束面面向向对对象象技技术术类职责职责n类或其他元素的契约或义务。类或其他元素的契约或义务。 n以自由形式的文本形式存在,即非形式化的方以自由形式的文本形式存在,即非形式化的方法来描述。法来描述。 职责内容职责内容面面向向对对象象技技术术类约束约束n指定了类所要满足的一个或多个规则。指定了类所要满足的一个或多个规则。 n形式化的方法。形式化的方法。 面面向向对对象象技技术术类注释注释 n注释可以包含图形也可以包含文本。注释可以包含图形也可以包含文本。 面面向向对对象象技技术术类范例范例面面向向对对象象技技术术接口与抽象类接口接口

21、n在没有给出对象的实现和状态的情况下对对象在没有给出对象的实现和状态的情况下对对象行为的描述。行为的描述。 n包含操作但不包含属性包含操作但不包含属性。n一个类可以实现一个或多个接口一个类可以实现一个或多个接口。面面向向对对象象技技术术接口与抽象类接口类:接口类:面面向向对对象象技技术术接口与抽象类抽象类抽象类n是一种不能够被直接实例化的类,也就是说不能够创是一种不能够被直接实例化的类,也就是说不能够创建一个属于抽象类的对象建一个属于抽象类的对象面面向向对对象象技技术术接口与抽象类抽象类抽象类n实例实例面面向向对对象象技技术术类之间的关系 依赖关系依赖关系泛化关系泛化关系关联关系关联关系实现关

22、系实现关系面面向向对对象象技技术术类之间的关系 依赖关系依赖关系n表示两个或多个模型元素之间语义上的关系。表示两个或多个模型元素之间语义上的关系。 n客户以某种形式依赖于提供者。客户以某种形式依赖于提供者。 n关联、实现和泛化都是依赖关系。关联、实现和泛化都是依赖关系。 面面向向对对象象技技术术类之间的关系 依赖关系依赖关系n如果两个类的对象之间存在着下面的情形,且两个类如果两个类的对象之间存在着下面的情形,且两个类之间不存在结构方面的联系(例如:供应类以成员变之间不存在结构方面的联系(例如:供应类以成员变量的形式作为客户类的一部分),就可以建模成为具量的形式作为客户类的一部分),就可以建模成

23、为具有依赖关系,这些情形是:有依赖关系,这些情形是: (1)客户类访问定义在供应类内部的值)客户类访问定义在供应类内部的值(常量或常量或 变量变量)。 (2)客户类的操作启动了定义在供应类内的操作。)客户类的操作启动了定义在供应类内的操作。 (3)客户类的返回类或参数是供应类的实例。)客户类的返回类或参数是供应类的实例。n序列图中的两个对象,如果存在着消息的发送。且它序列图中的两个对象,如果存在着消息的发送。且它们之间又没有结构方面的连接,就可以在类图上用依们之间又没有结构方面的连接,就可以在类图上用依赖关系对它们建模。赖关系对它们建模。面面向向对对象象技技术术类之间的关系 泛化关系泛化关系n

24、存在于一般元素和特殊元素间的分类关系。存在于一般元素和特殊元素间的分类关系。 n可以用于类、用例以及其他模型元素。可以用于类、用例以及其他模型元素。 n描述了一种描述了一种“is a kind of” 的关系。的关系。面面向向对对象象技技术术类之间的关系 泛化关系泛化关系n范例范例public class employeepublic class salariedemployee:employee面面向向对对象象技技术术类之间的关系 泛化关系泛化关系n泛化主要用途:泛化主要用途:w多态多态 :后代的实例可以用于任何祖先被声明使用的:后代的实例可以用于任何祖先被声明使用的地方,从而使多态操作成为

25、可能,即操作的实现方地方,从而使多态操作成为可能,即操作的实现方法由实际对象的类来确定法由实际对象的类来确定w继承继承 :共享祖先描述,并允许对元素进行增量描述:共享祖先描述,并允许对元素进行增量描述n单继承单继承n多重继承多重继承面面向向对对象象技技术术类之间的关系 泛化关系泛化关系n泛化主要用途:泛化主要用途:面面向向对对象象技技术术类之间的关系 泛化关系泛化关系n泛化主要用途:泛化主要用途:面面向向对对象象技技术术类之间的关系 泛化关系泛化关系n泛化主要用途:泛化主要用途:基类shapeoriginmove()resize()display()rectanglecorner : poin

26、tcircleradius : floatpolygonpoints : listdisplay()square泛化关系叶子类面面向向对对象象技技术术类之间的关系 关联关系关联关系n一种结构关系。一种结构关系。 n指明事物的对象之间的联系。指明事物的对象之间的联系。n最普通的关联是二元关联。最普通的关联是二元关联。 面面向向对对象象技技术术类之间的关系 关联关系关联关系n范例范例 public class phoneprivate button itsbuttons15面面向向对对象象技技术术类之间的关系 关联关系关联关系n关联关系并不是仅仅一个抽象的概念,它在实关联关系并不是仅仅一个抽象的概

27、念,它在实现为程序设计语言源代码时,会有对应的映射。现为程序设计语言源代码时,会有对应的映射。n通常,当把两个有关联关系的类映射为特定的通常,当把两个有关联关系的类映射为特定的程序设计语言代码时,每一个类都会被定义为程序设计语言代码时,每一个类都会被定义为一个可以引用对方的类的对象的成员变量,这一个可以引用对方的类的对象的成员变量,这个成员变量视对关联关系的修饰的不同,可能个成员变量视对关联关系的修饰的不同,可能会采取不同的形式,如:它可以指向对方的类会采取不同的形式,如:它可以指向对方的类的指针,也可能是对方类的对象。的指针,也可能是对方类的对象。面面向向对对象象技技术术类之间的关系 关联关

28、系关联关系面面向向对对象象技技术术类之间的关系 关联关系关联关系n名称(名称(name)n角色(角色(role)n多重性(多重性(multiplicity)n聚合关系(聚合关系(aggregation)n组合关系(组合关系(composition)n导航性(导航性(navigation)面面向向对对象象技技术术类之间的关系 关联关系关联关系n名称(名称(name)w使用一个动词或动词短语来命名关联。使用一个动词或动词短语来命名关联。w清晰而简洁地说明对象间关系。清晰而简洁地说明对象间关系。w关联的名称并不是必需的。关联的名称并不是必需的。 w可以前缀或后缀一个指引阅读方向的方向指示符,可以前缀

29、或后缀一个指引阅读方向的方向指示符,以消除歧义。以消除歧义。面面向向对对象象技技术术类之间的关系 关联关系关联关系n角色(角色(role)w关联关系中一个类对另一个类所表现出来的职责。关联关系中一个类对另一个类所表现出来的职责。 w角色的名称应该是名词或名词短语,以解释对象是角色的名称应该是名词或名词短语,以解释对象是如何参与关系的。如何参与关系的。 面面向向对对象象技技术术类之间的关系 关联关系关联关系n多重性(多重性(multiplicity)w指有多少对象可以参与该关联。指有多少对象可以参与该关联。w可以表达一个取值范围、特定值、无限定的范围或可以表达一个取值范围、特定值、无限定的范围或

30、一组离散值。一组离散值。 w格式:格式:“minimum.maximum” (均为(均为int型)。型)。w赋给一个端点的多重性表示该端点可以有多少个对赋给一个端点的多重性表示该端点可以有多少个对象与另一个端点的一个对象关联。象与另一个端点的一个对象关联。 面面向向对对象象技技术术类之间的关系 关联关系关联关系n聚合关系(聚合关系(aggregation)w一种特殊类型的关联。一种特殊类型的关联。 w表示整体与部分关系的关联。表示整体与部分关系的关联。 w描述了描述了“has a”的关系。的关系。 面面向向对对象象技技术术类之间的关系 关联关系关联关系n组合关系(组合关系(compositio

31、n)w聚合关系中的一种特殊情况,是更强形式的聚合,聚合关系中的一种特殊情况,是更强形式的聚合,又称强聚合。又称强聚合。w成员对象的生命周期取决于聚合的生命周期。成员对象的生命周期取决于聚合的生命周期。 w聚合不仅控制着成员对象的行为,而且控制着成员聚合不仅控制着成员对象的行为,而且控制着成员对象的创建和解构。对象的创建和解构。 面面向向对对象象技技术术类之间的关系 关联关系关联关系n导航性(导航性(navigation)w描述一个对象通过链进行导航访问另一个对象。描述一个对象通过链进行导航访问另一个对象。w使用导航性可以降低类间的耦合度。使用导航性可以降低类间的耦合度。 w包括:单向关联和双向

32、关联。包括:单向关联和双向关联。面面向向对对象象技技术术类之间的关系 关联关系关联关系面面向向对对象象技技术术类之间的关系 关联关系关联关系inventorypartproduct0.*110.*flywheelcogafterburnerstickermanufacturerepairassemblerrepairmanfccinventoryclerk2.*11.31maintained bybuilt byrepaired by面面向向对对象象技技术术类之间的关系 关联关系关联关系n关联类关联类:在有些问题中,关联关系不仅需要一个在有些问题中,关联关系不仅需要一个名称、需要定义相关对象的

33、角色及其参与这些名称、需要定义相关对象的角色及其参与这些角色的对象数量(多重性),而且还需要设置角色的对象数量(多重性),而且还需要设置一些属性、操作以及其它特性,此时一般需要一些属性、操作以及其它特性,此时一般需要引入关联类。引入关联类。人公司雇用period:datarange*0.1雇主关联类面面向向对对象象技技术术类之间的关系 关联关系关联关系n关联类关联类面面向向对对象象技技术术类之间的关系 实现关系实现关系n规格说明和其实现之间的关系。规格说明和其实现之间的关系。 n客户必须至少支持提供者的所有操作。客户必须至少支持提供者的所有操作。 n泛化和实现都可以将一般描述与具体描述联系泛化

34、和实现都可以将一般描述与具体描述联系起来:起来:w泛化将同一语义层上的元素连接起来,并且通常在泛化将同一语义层上的元素连接起来,并且通常在同一模型内。同一模型内。w实现将不同语义层内的元素连接起来,并且通常建实现将不同语义层内的元素连接起来,并且通常建立在不同的模型内。立在不同的模型内。面面向向对对象象技技术术类类图实例类图实例面面向向对对象象技技术术类类图说明类图说明n标识符:是一个属性或属性组合,它被选择用标识符:是一个属性或属性组合,它被选择用作一个类的唯一特征。作一个类的唯一特征。n多值属性:可以具有多于一个的值,在概念设多值属性:可以具有多于一个的值,在概念设计期间处理多值属性有两种

35、方法:多值构造型;计期间处理多值属性有两种方法:多值构造型;为多值属性创建一个类;为多值属性创建一个类;n组合属性:具有多个子属性的属性,例如地址组合属性:具有多个子属性的属性,例如地址面面向向对对象象技技术术类类图说明类图说明面面向向对对象象技技术术分析类如何发现类如何发现类n类的种类:类的种类:w实体类实体类w边界类边界类w控制类控制类n实体类:实体类的判别特征是它的对象持有应实体类:实体类的判别特征是它的对象持有应用的大部分数据,一般实体类的对象是持久的,用的大部分数据,一般实体类的对象是持久的,也就是说它们的存在超过一个会话的生命期,也就是说它们的存在超过一个会话的生命期,或者有时存在

36、于系统的整个生命期间。或者有时存在于系统的整个生命期间。面面向向对对象象技技术术分析类如何发现类如何发现类n边界类:参与者用边界类的对象与系统交互,边界类:参与者用边界类的对象与系统交互,例如表单、对话框、菜单和其他交互屏幕等,例如表单、对话框、菜单和其他交互屏幕等,边界类还可以用于建立与另一个系统的通信,边界类还可以用于建立与另一个系统的通信,例如遗留系统。因此边界类将系统与系统外部例如遗留系统。因此边界类将系统与系统外部的变化隔离开。的变化隔离开。n控制类:协调任务并捕捉用例中的主要应用逻控制类:协调任务并捕捉用例中的主要应用逻辑。辑。面面向向对对象象技技术术分析类如何发现类如何发现类n通

37、过事件流寻找类(名词动词分析法)通过事件流寻找类(名词动词分析法)w分析事件流中的名词,将性质相同的归为一类;分析事件流中的名词,将性质相同的归为一类;w去除不恰当的或含糊的,去除应归为属性的项目。去除不恰当的或含糊的,去除应归为属性的项目。w命名所获取的类。命名所获取的类。面面向向对对象象技技术术分析类如何发现类如何发现类n如何确定属性如何确定属性w注意需求中的名词;注意需求中的名词;w注意用例模型或需求文档中的名词,数据表。注意用例模型或需求文档中的名词,数据表。n如何确定方法如何确定方法w实现:实现业务功能,通过事件流中的动词分析进实现:实现业务功能,通过事件流中的动词分析进行捕捉;行捕

38、捉;w管理:管理对象的创建或构造;管理:管理对象的创建或构造;w访问:查询或修改每个类的属性;访问:查询或修改每个类的属性;w帮助:说明类完成任务所需要的操作。帮助:说明类完成任务所需要的操作。面面向向对对象象技技术术分析类需求描述需求描述n小王是一个爱书之人,家里各类书籍已过千册,小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字

39、的组合按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计特定时间周期进行统计 面面向向对对象象技技术术分析类发现类发现类小王小王是一个爱书之是一个爱书之人人,家里家里各类各类书籍书籍已过

40、千册,而平已过千册,而平时又时常有时又时常有朋友朋友外借,因此需要一个外借,因此需要一个个人图书管理系个人图书管理系统统。该系统应该能够将书籍的。该系统应该能够将书籍的基本信息基本信息按按计算机类计算机类、非计算机类非计算机类分别建档,实现按分别建档,实现按书名书名、作者作者、类别类别、出出版社版社等等关键字关键字的组合查询的组合查询功能功能。在使用该系统录入。在使用该系统录入新新书籍书籍时时系统系统会自动按会自动按规则规则生成生成书号书号,可以修改,可以修改信息信息,但一经创建就不允许删除。该系统还应该能够对书籍但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行的外借情况进行记录记

41、录,可对,可对外借情况列表外借情况列表打印。另外,打印。另外,还希望能够对书籍的还希望能够对书籍的购买金额购买金额、册数册数按按特定时间周期特定时间周期进行统计进行统计 面面向向对对象象技技术术分析类筛选备选类筛选备选类n“小王小王”、“人人”、“家里家里”很明显是系统外的概念,无须对其很明显是系统外的概念,无须对其建模;建模;n而而“个人图书管理系统个人图书管理系统”、“系统系统”指的就是将要开发的系统,指的就是将要开发的系统,即系统本身,也无须对其进行建模;即系统本身,也无须对其进行建模;n很明显很明显“书籍书籍”是一个很重要的类,而是一个很重要的类,而“书名书名”、“作者作者”、“类别类

42、别”、“出版社出版社”、“书号书号”则都是用来描述书籍的基本信则都是用来描述书籍的基本信息的,因此应该作为息的,因此应该作为“书籍书籍”类的属性处理,而类的属性处理,而“规则规则”是指书是指书号的生成规则,而书号则是书籍的一个属性,因此号的生成规则,而书号则是书籍的一个属性,因此“规则规则”可以可以作为编写作为编写“书籍书籍”类构造函数的指南。类构造函数的指南。n“基本信息基本信息”则是书名、作者、类别等描述书籍的基本信息统称,则是书名、作者、类别等描述书籍的基本信息统称,“关键字关键字”则是代表其中之一,因此无需对其建模;则是代表其中之一,因此无需对其建模;n“功能功能”、“新书籍新书籍”、

43、“信息信息”、“记录记录”都是在描述需求时都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉;淘汰掉;面面向向对对象象技技术术分析类筛选备选类筛选备选类n“计算机类计算机类”、“非计算机类非计算机类”是该系统中图书的两大分类,因是该系统中图书的两大分类,因此应该对其建模,并改名为此应该对其建模,并改名为“计算机类书籍计算机类书籍”和和“非计算机类书非计算机类书籍籍”,以减少歧义;,以减少歧义;n“外借情况外借情况”则是用来表示一次借阅行为,应该成为一个候选类,则是用来表示一次借阅行为,应该成为一个候选类,多个外

44、借情况将组成多个外借情况将组成“外借情况列表外借情况列表”,而外借情况中一个很重,而外借情况中一个很重要的角色是要的角色是“朋友朋友”借阅主体。虽然到本系统中并不需要建立借阅主体。虽然到本系统中并不需要建立“朋友朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将况,因此还是将其列为候选类。为了能够更好地表述,将“外借外借情况情况”改名为改名为“借阅记录借阅记录”,而将,而将“外借情况列表外借情况列表”改名为改名为“借借阅记录列表阅记录列表”;n“购买金额购买金额”、“册数册数”都是统计的结果,

45、都是一个数字,因此都是统计的结果,都是一个数字,因此不用将其建模,而不用将其建模,而“特定时限特定时限”则是统计的范围,也无需将其建则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类着一个关键类书籍列表,也就是执行统计的主体。书籍列表,也就是执行统计的主体。面面向向对对象象技技术术分析类得到候选类得到候选类n在使用在使用“名词动词法名词动词法”寻找类的时候,很多团寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在

46、此主要的项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过目的是对问题领域建立概要的了解,无需太过咬文嚼字咬文嚼字 面面向向对对象象技技术术类的设计原则的方法1. 单一职责原则单一职责原则 (srp)含义:就一个类而言,应该仅有一个引起它变化的原因。含义:就一个类而言,应该仅有一个引起它变化的原因。范例说明:范例说明:面面向向对对象象技技术术类的设计原则的方法1. 单一职责原则单一职责原则 (srp)面面向向对对象象技技术术类的设计原则的方法1. 单一职责原则单一职责原则 (srp)面面向向对对象象技技术术类的设计原则的方法1. 单一职责原则单一职责原则 (srp

47、)总结总结srp是所有原则中最简单的原则之一;是所有原则中最简单的原则之一;也是最难正确应用的原则之一。也是最难正确应用的原则之一。面面向向对对象象技技术术类的设计原则的方法2. 开放开放封闭原则封闭原则 (ocp)含义:软件实体应该是可以扩展的,但是不可修改的;对于含义:软件实体应该是可以扩展的,但是不可修改的;对于扩展是开放的,对于修改是封闭的。扩展是开放的,对于修改是封闭的。范例说明:范例说明:面面向向对对象象技技术术类的设计原则的方法2. 开放开放封闭原则封闭原则 (ocp)面面向向对对象象技技术术类的设计原则的方法3. liskov替换原则替换原则 (lsp)含义:子类型必须能够替换

48、掉它们的基类型。含义:子类型必须能够替换掉它们的基类型。替换性质替换性质:若对于每个类型:若对于每个类型s s的对象的对象o1o1,都存在一个类型,都存在一个类型t t的对象的对象o2o2,使得在所有针对,使得在所有针对t t编写的程序编写的程序p p中,用中,用o2o2替换替换o1o1后,程序后,程序p p行为功能不变,则行为功能不变,则s s是是t t的子类型。的子类型。面面向向对对象象技技术术类的设计原则的方法3. liskov替换原则替换原则 (lsp)范例范例1:不满足:不满足lspstruct pointdouble x,y;public enum shapetype square

49、,circle;public class shape private shapetype type; public shape(shapetype t)tpye = t; public static void drawshape(shape s) if (s.type = shapetype.square) (s as square).draw(); else if (s.type = shapetype.circle) (s as circle).draw(); 面面向向对对象象技技术术类的设计原则的方法3. liskov替换原则替换原则 (lsp)public class circle:s

50、hape private point center; private double radius; public circle():base(shapetype.circle) public void draw() /*draw the circle*/public class square:shape private point topleft; private double side; public square():base(shapetype.square) public void draw() /*draw the square*/面面向向对对象象技技术术类的设计原则的方法3. li

51、skov替换原则替换原则 (lsp)范例范例2:不满足:不满足lsp面面向向对对象象技技术术类的设计原则的方法3. liskov替换原则替换原则 (lsp) 总结总结ocp是面向对象设计的核心原则是面向对象设计的核心原则lsp是使是使ocp成为可能的主要原则之一成为可能的主要原则之一面面向向对对象象技技术术类的设计原则的方法4. 依赖倒置原则依赖倒置原则 (dip)含义:高层模块不应依赖于低层模块,二者都应该依赖于抽含义:高层模块不应依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。象;抽象不应该依赖于细节,细节应该依赖于抽象。范例说明:范例说明:面面向向对对象象

52、技技术术类的设计原则的方法4. 依赖倒置原则依赖倒置原则 (dip)面面向向对对象象技技术术类的设计原则的方法4. 依赖倒置原则依赖倒置原则 (dip)任何变量都不应该持有一个指向具体类的引用任何变量都不应该持有一个指向具体类的引用任何类都不应该从一个具体类派生任何类都不应该从一个具体类派生任何方法不应该重写它的任何基类中的已经实现了的方任何方法不应该重写它的任何基类中的已经实现了的方法法面面向向对对象象技技术术类的设计原则的方法4. 依赖倒置原则依赖倒置原则 (dip)范例范例1:存在问题存在问题面面向向对对象象技技术术类的设计原则的方法4. 依赖倒置原则依赖倒置原则 (dip)范例范例1:

53、存在问题存在问题面面向向对对象象技技术术类的设计原则的方法5. 接口隔离原则接口隔离原则 (dip)含义:不应该强迫客户依赖于它们不用的方法。接口属于客含义:不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。户,不属于它所在的类层次结构。范例说明:范例说明:面面向向对对象象技技术术类的设计原则的方法5. 接口隔离原则接口隔离原则 (dip)使用委托分离接口面面向向对对象象技技术术类的设计原则的方法5. 接口隔离原则接口隔离原则 (dip)使用多重继承分离接口面面向向对对象象技技术术对象图 描述参与一个交互的各个对象在交互过程描述参与一个交互的各个对象在交互过程中某一时

54、刻的状态。中某一时刻的状态。 可以被看作是类图在某一时刻的实例。可以被看作是类图在某一时刻的实例。 面面向向对对象象技技术术类图和对象图的区别 类图类图 对象图对象图 类具有三个分栏:名称、属性和操类具有三个分栏:名称、属性和操作作对象只有两个分栏:名称和属性对象只有两个分栏:名称和属性在类的名称分栏中只有类名在类的名称分栏中只有类名对象的名称形式为对象的名称形式为“对象名:类对象名:类名名”,匿名对象的名称形式为,匿名对象的名称形式为“:类名类名”类中列出了操作类中列出了操作对象图中不包含操作,因为对于属对象图中不包含操作,因为对于属于同一个类的对象而言,其操作是于同一个类的对象而言,其操作

55、是相同的相同的类使用关联连接,关联使用名称、类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。角色、多重性以及约束等特征定义。类代表的是对对象的分类,所以必类代表的是对对象的分类,所以必须说明可以参与关联的对象的数目须说明可以参与关联的对象的数目对象使用链连接,链拥有名称、角对象使用链连接,链拥有名称、角色,但是没有多重性。对象代表的色,但是没有多重性。对象代表的是单独的实体,所有的链都是一对是单独的实体,所有的链都是一对一的,因此不涉及到多重性一的,因此不涉及到多重性类的属性分栏定义了所有属性的特类的属性分栏定义了所有属性的特征征对象则只定义了属性的当前值,以对象则只定义了属性的

56、当前值,以用于测试用例或例子中用于测试用例或例子中面面向向对对象象技技术术对象图范例面面向向对对象象技技术术对象图范例面面向向对对象象技技术术对象图的应用论证类模型的设计:当设计了类模型时,你可以论证类模型的设计:当设计了类模型时,你可以通过对象图来模拟出一个运行时的状态,这样就通过对象图来模拟出一个运行时的状态,这样就可以研究在运行时设计的合理性。同时,也可以可以研究在运行时设计的合理性。同时,也可以作为开发人员讨论的一个基础。作为开发人员讨论的一个基础。分析和说明源代码:由于类图只是展示了程序的分析和说明源代码:由于类图只是展示了程序的静态类结构,因此通过类图看懂代码的意图是很静态类结构,

57、因此通过类图看懂代码的意图是很困难的。因此在分析源代码时,可以通过对象图困难的。因此在分析源代码时,可以通过对象图来细化分析。而对于开发人员,对于逻辑较复杂来细化分析。而对于开发人员,对于逻辑较复杂的类交互时,可以考虑画出一些对象图来做补充的类交互时,可以考虑画出一些对象图来做补充说明说明 面面向向对对象象技技术术交互的概念一次交互就是指在特定语境中,为了实现一次交互就是指在特定语境中,为了实现某一个目标,而在一组对象之间进行交换某一个目标,而在一组对象之间进行交换的一组消息所表示的行为的一组消息所表示的行为 面面向向对对象象技技术术如何创建交互图用例图仅仅描述了系统的功能,以及功能的执行用例

58、图仅仅描述了系统的功能,以及功能的执行流程。它并没有从实现的层面来描述系统。流程。它并没有从实现的层面来描述系统。而要对用例进行实现描述,则需要描述相互影响而要对用例进行实现描述,则需要描述相互影响的对象的集合,这些对象用来支持用例所要求的的对象的集合,这些对象用来支持用例所要求的功能。功能。并且,给出系统用例的实现描述,是并且,给出系统用例的实现描述,是从外部视图从外部视图转到内部结构的第一步转到内部结构的第一步。在在uml中,用例的实现用交互图来描述,它通过中,用例的实现用交互图来描述,它通过显示对象之间的关系和对象之间处理的消息来对显示对象之间的关系和对象之间处理的消息来对系统的动态特性

59、建模。系统的动态特性建模。交互图包括序列图和协作图两种。交互图包括序列图和协作图两种。面面向向对对象象技技术术如何创建交互图交互图用来一步一步地描述用例地实现流交互图用来一步一步地描述用例地实现流程,包括流中需要什么对象,对象之间发程,包括流中需要什么对象,对象之间发送什么,什么角色启动流、消息按什么顺送什么,什么角色启动流、消息按什么顺序发送等。序发送等。交互图通过从用例建模中得到的用例文档交互图通过从用例建模中得到的用例文档说明、词汇表和用例图来创建说明、词汇表和用例图来创建。面面向向对对象象技技术术如何创建交互图范例范例n以选课系统中的选课用例以选课系统中的选课用例(select cou

60、rse)为例,来获为例,来获取对象和角色。取对象和角色。n分析:为了使问题更简单一些,不考虑学生的登录。分析:为了使问题更简单一些,不考虑学生的登录。假设学生已经成功登录系统,选课的事件流如下:假设学生已经成功登录系统,选课的事件流如下: (1)学生进入选课主界面。学生进入选课主界面。 (2)学生点击选课。学生点击选课。 (3)系统显示所有课程信息。系统显示所有课程信息。 (4)学生选择课程。学生选择课程。 (5)系统验证课程是否可选。系统验证课程是否可选。 a1:课程不可选:课程不可选 (6)系统提示课程选择成功,提示学生交费。系统提示课程选择成功,提示学生交费。 (7)用例结束。用例结束。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论