版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1软件需求分析与建模- 静态图:类图、对象图姓名:姓名:xxx (xxx ( suxxxxd ) )单位:计算机科学与工程学院单位:计算机科学与工程学院时间:时间: 静态图:类图、对象图静态图:类图、对象图v类和对象的基本概念;类和对象的基本概念;v三个层次的观点;三个层次的观点;v类图和对象图的基本要素;类图和对象图的基本要素; v小小 结。结。 i 类和对象的基本概念类和对象的基本概念v引引 言;言;v对象和类;对象和类;v类和对象的实例;类和对象的实例;v类和对象的表示;类和对象的表示;v三个层次的观点。三个层次的观点。u 引引 言言v类图类图技术是技术是oooo方法的核心技术,应用非方
2、法的核心技术,应用非常广泛,其中类、对象以及它们之间的关常广泛,其中类、对象以及它们之间的关系是最基本的建模元素。类模型和对象模系是最基本的建模元素。类模型和对象模型揭示了系统的结构。型揭示了系统的结构。v分类可以有效地使复杂问题简化。分类可以有效地使复杂问题简化。建立类建立类模型的过程,是把现实世界中与问题有关模型的过程,是把现实世界中与问题有关的各种对象及其相互关系进行抽象和分类的各种对象及其相互关系进行抽象和分类的过程。的过程。u 对象和类对象和类v对象对象是指某个事物,大多对应于真实世界中的是指某个事物,大多对应于真实世界中的某个客观实体;但有些对象在真实世界中没有某个客观实体;但有些
3、对象在真实世界中没有直接的对应物,是人们对某个事物的一种抽象直接的对应物,是人们对某个事物的一种抽象描述。描述。v所有的对象都是有唯一标识的独立实体。对象所有的对象都是有唯一标识的独立实体。对象之间的区别是由它们固有的存在性所决定的,之间的区别是由它们固有的存在性所决定的,而与它们的特征是否相同无关。对象的基本特而与它们的特征是否相同无关。对象的基本特征可以归纳为对象的征可以归纳为对象的属性属性和和行为行为两类。两类。v类是指对一组具有类是指对一组具有相同特征相同特征的对象的抽象的对象的抽象描述;任何对象都是某个类的实例。描述;任何对象都是某个类的实例。v我们采用类的概念来研究系统的构成,划我
4、们采用类的概念来研究系统的构成,划分问题域中涉及到的各种对象。类之间的分问题域中涉及到的各种对象。类之间的继承关系是继承关系是oooo方法中的一个重要概念。方法中的一个重要概念。u 类和对象的实例类和对象的实例u在一个信息系统中:客户在一个信息系统中:客户(customer)(customer)、合同、合同(agreement)(agreement)、发票、发票(invoice)(invoice)、债务、债务(debt)(debt)、资产、资产(asset)(asset)、报价单、报价单(quotation)(quotation)u在一个技术系统中:感应器在一个技术系统中:感应器(sensor
5、)(sensor)、显示器、显示器(display)(display)、输入输出卡、输入输出卡(i/o card)(i/o card)、按键、按键(button)(button)u在软件系统中:文件在软件系统中:文件(file)(file)、 执行程序执行程序(executable (executable program)program)、 设备设备(device)(device)、 图标图标(icon) (icon) 、窗口、窗口(window)(window)、 滚动条滚动条(scrollbar) .(scrollbar) .u在人类社会中:社团、俱乐部、大学、公司、商在人类社会中:社团、
6、俱乐部、大学、公司、商店、企业店、企业. .例例:客户类的表示客户类的表示u 类和对象的表示类和对象的表示 :类图和对象图类图和对象图u类图描述系统中的类图描述系统中的类及其相互之间的各种关类及其相互之间的各种关系系,反映了系统中包含的各种对象的类型以,反映了系统中包含的各种对象的类型以及对象间的各种静态关系,主要是:关联和及对象间的各种静态关系,主要是:关联和子类型。类图也可描述类的属性和行为以及子类型。类图也可描述类的属性和行为以及对模型中各种成分的约束。对模型中各种成分的约束。u对象图是类图的实例,描述系统中各种对象对象图是类图的实例,描述系统中各种对象( (类的实例类的实例) )以及对
7、象之间的各种静态关系。以及对象之间的各种静态关系。u类图类图( (和对象图和对象图) )中各个区间的文法:独立于中各个区间的文法:独立于实现时所使用的程序设计语言,也可以选实现时所使用的程序设计语言,也可以选用某种语言的文法规则,如用某种语言的文法规则,如c+c+,javajava,。u类中的一个操作可以有多种不同的实现,类中的一个操作可以有多种不同的实现,每一个实现称作一个方法。每一个实现称作一个方法。u 类和对象的表示类和对象的表示( (续续) ) :类图和对象图类图和对象图类类 名名(class name)类类 名名属属 性性 (attributes)类类 名名属属 性性(attribu
8、tes)操作操作 (operations)类的表示类的表示对象名对象名(object name)对象名对象名属性属性值值(avalues)对象名对象名属性属性值值 (avalues)方法方法 (methods)对象的表示对象的表示u 三个层次的观点u画类图和理解类图时都应采用三个层次的观点。画类图和理解类图时都应采用三个层次的观点。这些观点也适用于其它模型。这些观点也适用于其它模型。u三个层次的观点不是三个层次的观点不是umluml的组成部分,但对建的组成部分,但对建造模型或评价模型都非常有用,且都可应用于造模型或评价模型都非常有用,且都可应用于umluml。u三个层次:三个层次:u概念层概念
9、层u说明层说明层u实现层实现层u概念层概念层描述应用域中的概念,是对现实世描述应用域中的概念,是对现实世界的直接描述,与实现它们的类有关,但界的直接描述,与实现它们的类有关,但与实现方案和实现语言无关。与实现方案和实现语言无关。u说明层说明层描述软件的接口,而不是软件的实描述软件的接口,而不是软件的实现。一个类型描述一个接口,但可能有多现。一个类型描述一个接口,但可能有多种实现。种实现。u实现层实现层从实现的角度定义类及其实现,揭从实现的角度定义类及其实现,揭示了软件实现体的构成情况。示了软件实现体的构成情况。ii 类类图图和和对象对象图的基本要素图的基本要素u关关 联;联;u属属 性;性;u
10、操操 作;作;u泛泛 化;化;u授授 权;权;u约束规则。约束规则。ii.1 关关 联联u一个典型的类图;一个典型的类图;u基本概念;基本概念;u角色及其命名;角色及其命名;u角色的多元性;角色的多元性;u三个层次中的关联;三个层次中的关联;u导航特性。导航特性。u 一个典型的类图一个典型的类图多重性:限制性多重性:限制性的的1*0.1雇员雇员销售代表销售代表多重性:选择多重性:选择关联关联订单订单客户客户nameaddress泛化泛化类类团体客户团体客户个人客户个人客户多重性:多值多重性:多值产品产品1 项项*角色名称角色名称1订单项订单项关联关联*个人客户信用卡号数量:integer价格:
11、money确认:boolean定货单收到日期预付款数量价格发货()结束()客户姓名地址信用等级():string集团客户联系人姓名信用等级信用限额余额()月帐单(integer)信用等级()=低定单栏目雇员产品*1*110.1采购员if 定货单.客户.信用等级=低then 定货单.预付款 必须是 真 栏目u 关联的表示关联的表示u关联关联的表示:的表示:u用一条无向线段表示,是一种双向关系。用一条无向线段表示,是一种双向关系。例如客户和订单的关联:从客户看,订单例如客户和订单的关联:从客户看,订单是他提交的;从订单看,它有一个客户。是他提交的;从订单看,它有一个客户。 u用一条有向线段表示,是
12、一种单向关系用一条有向线段表示,是一种单向关系u关联的命名:可以用关联的命名:可以用动词词组动词词组或或名词名词命名。命名。但只要这个关联的含义明确,则可省略这个但只要这个关联的含义明确,则可省略这个名字。名字。u 角色及其命名u关联的两端与类之间关联的两端与类之间( (或与类的实例之间或与类的实例之间) )的接口表示该类的接口表示该类( (或该类的实体或该类的实体) )在这个关在这个关联中的行为,称之为角色。联中的行为,称之为角色。u每个关联有两个角色。例如,对于客户每个关联有两个角色。例如,对于客户和订单之间的关联是:客户和订单。和订单之间的关联是:客户和订单。carpersonteach
13、erstudent订单客户u可将引出角色的类称作可将引出角色的类称作源源,将引入角色的类称作,将引入角色的类称作目标目标。例如,从订单到客户的角色的源是订单,。例如,从订单到客户的角色的源是订单,目标是客户。目标是客户。u为了明确对象在关联中的角色,可以为角色命名。例为了明确对象在关联中的角色,可以为角色命名。例如从订单到订单项方向上的角色可以命名为项。如从订单到订单项方向上的角色可以命名为项。u如果在关联上没有标出角色名,则隐含地用该角色的如果在关联上没有标出角色名,则隐含地用该角色的目标类的名称作为它的名称。例如,从订单到客户的目标类的名称作为它的名称。例如,从订单到客户的角色应叫做客户。
14、角色应叫做客户。订单客户u 角色的多角色的多元元性性u角色可具有角色可具有多元多元性性( (一个角色可以有多个对象来扮一个角色可以有多个对象来扮演演) )。例如,每个客户对象可以有零或多个订单对象。例如,每个客户对象可以有零或多个订单对象。u多元性的表示。多元性的表示。1 1 表示表示 1.1 1.1 ;* *代表零到无穷;代表零到无穷;0.10.1是选择符,表示没有或仅有是选择符,表示没有或仅有1 1个;一个数;一个范个;一个数;一个范围;数字和范围不连续的组合。围;数字和范围不连续的组合。 * b a表示表示 a 和零个、一个或多个和零个、一个或多个 b 关联。关联。0.1 b a表示表示
15、 a 和零个或一个和零个或一个 b 关联关联1.* a a表示表示 a 和一个或多个和一个或多个 b 关联关联1 b a表示表示 a 和一个和一个 b 关联关联v(1 1)关联的名称)关联的名称v(2 2)端点)端点v(3 3)多重性)多重性v(4 4)有序)有序v(5 5)多元关联)多元关联三个层面中,关联性意味着什么?三个层面中,关联性意味着什么?v概念层概念层:在应用域中两类对象之间存在的某种关:在应用域中两类对象之间存在的某种关系系v说明层说明层:表示一种职责:表示一种职责(responsibility),(responsibility),一方向另一一方向另一方请求或发送某种消息或服务
16、方请求或发送某种消息或服务, , 但并不涉及实现但并不涉及实现这种服务的具体方法这种服务的具体方法(methods)(methods) 例例, , 定单的一个职责是记住和报告它的所有者定单的一个职责是记住和报告它的所有者是谁是谁v实现层实现层:意味着:意味着( (用指针来用指针来) )建立某种关联性。建立某种关联性。u 实现层实现层中的关联(续)中的关联(续)v对双向关联:相关联的两个类中都有指向对方的对双向关联:相关联的两个类中都有指向对方的指针。指针。 例如,订单有一个指针集指向订单项,有一个例如,订单有一个指针集指向订单项,有一个指针指向客户。指针指向客户。class order cla
17、ss order private customer _customer;private customer _customer;private vector _orderlines;private vector _orderlines;.class customer private vector _orders;.u 导航特性1导航导航订订 单单*收到日期收到日期预付款预付款数量数量价格价格发货()发货()结束()结束()客客 户户姓名姓名地址地址信用等级()信用等级(): string产产 品品1*1 项项*订单项订单项数量:数量:integer价格:价格:money确认:确认:boolean
18、u 导航特性(续)v箭头表示箭头表示导航导航特性。如果只在一个方向上特性。如果只在一个方向上有导航表示,称作有导航表示,称作单向关联单向关联。如果在两个。如果在两个方向上都有导航表示,称作方向上都有导航表示,称作双向关联双向关联。如。如果不带箭头,表示未知或尚未确定。果不带箭头,表示未知或尚未确定。v单向关联时,说明模型中的订单指出它是单向关联时,说明模型中的订单指出它是由哪个客户发出的;实现模型中的订单包由哪个客户发出的;实现模型中的订单包含一个指向客户的指针。含一个指向客户的指针。v对双向关联的限制是两个角色必须互逆。对双向关联的限制是两个角色必须互逆。 ii.2 属 性v在三个层面中的属
19、性;在三个层面中的属性;v属性的语法;属性的语法;v补充说明。补充说明。u 在三个层面中的属性v在在概念层概念层,描述类具有的一些属性,描述类具有的一些属性( (客户客户对象的名字属性表示客户有名字对象的名字属性表示客户有名字) )。v在在说明层说明层,规定类对象属性的值并给出设,规定类对象属性的值并给出设定这些值的方法定这些值的方法( (表示客户对象的名字并表示客户对象的名字并有一些设置名字的方法有一些设置名字的方法) )。v在在实现层实现层,设置一个物理存储区来保存属,设置一个物理存储区来保存属性的值性的值( (也可称做一个实例变量或一个数也可称做一个实例变量或一个数据成员据成员) )。u
20、 属性的语法 uml规定其语法为:规定其语法为: 可见性可见性 名称名称 多重性多重性:类型类型 = = 缺省值缺省值 约束特性约束特性 v可见性可见性:表示该属性对类外的元素是否可见。:表示该属性对类外的元素是否可见。v 常用的有常用的有公有、受保护和私有公有、受保护和私有三种。三种。v名称名称:属性的名称,:属性的名称, 是一个字符串。是一个字符串。v多重性多重性:任选项,用多值表达式表示,表达格式为:任选项,用多值表达式表示,表达格式为“低值低值. .高值。(低值、高值、高值。(低值、高值、0. . 0. . * *、1.11.1)v类型类型:定义属性的种类:定义属性的种类( (基本数据
21、类型或用户自定义的类型基本数据类型或用户自定义的类型) )。v缺省值缺省值:属性的初始值。:属性的初始值。v约束特性约束特性:描述对属性的约束。:描述对属性的约束。u 补充说明u客户属性的名称可以定义为一个单独的类:定客户属性的名称可以定义为一个单独的类:定义名字的属性及其相关的操作;然后在客户类义名字的属性及其相关的操作;然后在客户类和该属性名称类之间建立关联。和该属性名称类之间建立关联。u对于任何一个对象,其每个属性都具有一个确对于任何一个对象,其每个属性都具有一个确定的值。而且,一般来讲,属性总是单值的。定的值。而且,一般来讲,属性总是单值的。u目前只须将属性看成是一个小而简单的类,诸目
22、前只须将属性看成是一个小而简单的类,诸如字符串、日期、资金对象以及非对象的值如字符串、日期、资金对象以及非对象的值( (例例如整型和实型如整型和实型) )。类的派生属性类的派生属性人姓名年龄人姓名生日/年龄年龄=今天-生日personname: char *birthday:date-age:integerage():integer ii.3 操 作u在三个层面中的在三个层面中的 操作;操作;u操作操作 的语法;的语法;u补充说明。补充说明。u 在三个层面中的操作 u在在概念层概念层,操作不是定义类的接口,而是,操作不是定义类的接口,而是指出类的主要职责,描述类的动态行为。指出类的主要职责,描
23、述类的动态行为。u在在说明层说明层,主要给出重要的公有操作;然,主要给出重要的公有操作;然而有可能需要指明哪些属性是只读的或是而有可能需要指明哪些属性是只读的或是不可修改的。不可修改的。u在在实现层实现层,给出操作的不同实现方法,有,给出操作的不同实现方法,有可能会显示一些私有的和受保护的操作。可能会显示一些私有的和受保护的操作。操作是施于对象的过程调用,而方法是过操作是施于对象的过程调用,而方法是过程体,是操作的一个具体实现程体,是操作的一个具体实现 。u 操作的语法操作的语法 可见性可见性 名称名称( (参数表参数表):):返回类型表达式返回类型表达式 约束特性约束特性 v可见性可见性:“
24、+”+”表示公有操作,表示公有操作,“#”#”表示受保表示受保护的操作,护的操作,“-”-”表示私有操作。表示私有操作。v名称:操作的名称,是一个字符串。名称:操作的名称,是一个字符串。v参数表参数表:其语法与属性的参数相同,参数个数:其语法与属性的参数相同,参数个数是任意的。是任意的。v返回类型表达式返回类型表达式( (可选项可选项) ):依赖于语言的描述。:依赖于语言的描述。v约束特性:用以描述对此操作的约束。约束特性:用以描述对此操作的约束。u 补充说明u两类操作:不改变类两类操作:不改变类( (对象对象) )的可见状态的的可见状态的查询操查询操作作;例如,查询操作仅从类中取值,但不改变
25、其;例如,查询操作仅从类中取值,但不改变其可见状态。改变类可见状态。改变类( (对象对象) )的可见状态的操作称为的可见状态的操作称为修改操作修改操作。u查询操作可以按任意的顺序执行,但修改操作的查询操作可以按任意的顺序执行,但修改操作的顺序是重要的,如果不按照预定的顺序执行修改顺序是重要的,如果不按照预定的顺序执行修改操作,有可能得到不同的结果。为了保证这两类操作,有可能得到不同的结果。为了保证这两类操作相互独立,应避免从修改操作中返回值。操作相互独立,应避免从修改操作中返回值。 xiv 可见性u+(public)+(public):公有成员在程序的任何位置都是可公有成员在程序的任何位置都是
26、可见的,系统中的任何对象都可以使用它。见的,系统中的任何对象都可以使用它。u-(private)-(private):私有成员仅可以由定义它的类使用。私有成员仅可以由定义它的类使用。u#(protected)#(protected):受保护的成员仅可以由定义它的受保护的成员仅可以由定义它的类和该类的子类中的对象使用。类和该类的子类中的对象使用。 对对“publicpublic”、“privateprivate”和和“protectedprotected”等三个可等三个可见性标识符的含义,各种语言都有它自己的规定。见性标识符的含义,各种语言都有它自己的规定。umluml的定义是:的定义是:操作操
27、作(operations)与方法与方法(methods)v 操作操作(operations)(operations):界面:界面 可见性可见性 名称(参数表):返回类型表达式名称(参数表):返回类型表达式 约束特性约束特性 例:例:+ age+ age(date todaydate today):):integerintegerv 方法方法(methods)(methods):操作的一个具体的实现:操作的一个具体的实现class person class person string name;string name;date birthday;date birthday;publicpubli
28、c integer age(date today) return(year(today) - integer age(date today) return(year(today) - year(this.birthday); year(this.birthday); ii.4 泛泛 化化 泛化的定义;泛化的定义; 在三个层面中的泛化;在三个层面中的泛化; 继承与泛化。继承与泛化。u 泛化的定义泛化的定义泛化关系泛化关系( (继承关系继承关系) )定义定义类和包之间的一般元素类和包之间的一般元素和特殊元素之间的分类和特殊元素之间的分类关系。关系。例如,个人客户和团体例如,个人客户和团体客户都是客
29、户,可以把客户都是客户,可以把他们的相似之处放到客他们的相似之处放到客户类户类( (超类型超类型) )中,用个人中,用个人客户和团体客户作为它客户和团体客户作为它的子类型。的子类型。客客 户户nameaddress泛化泛化超类型超类型团体客户团体客户个人客户个人客户超类型超类型v例如,前面会议管理系统中存在以下的泛例如,前面会议管理系统中存在以下的泛化关系。化关系。u 在三个层面中的泛化在三个层面中的泛化u在在概念层概念层,如果团体客户的所有实例都是客户,如果团体客户的所有实例都是客户的实例,那么团体客户类型是客户类型的一个的实例,那么团体客户类型是客户类型的一个子类型。子类型。u在在说明层说
30、明层,泛化意味着子类型的接口必须包括,泛化意味着子类型的接口必须包括超类型的接口中的每个元素,即两者必须保持超类型的接口中的每个元素,即两者必须保持一致。一致。u在在实现层实现层,子类继承超类的所有属性和方法,子类继承超类的所有属性和方法,并可覆盖继承来的方法。例如,凡适用于客户并可覆盖继承来的方法。例如,凡适用于客户的代码,只要将将客户替换成团体客户,都适的代码,只要将将客户替换成团体客户,都适用于团体客户。用于团体客户。泛化(泛化(generalization)u泛化泛化(generalization): (generalization): 抽象化抽象化u特化特化(specializati
31、on): (specialization): 实例化实例化u继承继承(inheritance): (inheritance): u泛化关系的一种实现机制泛化关系的一种实现机制u并非所有的泛化关系都适合用继承关系实现并非所有的泛化关系都适合用继承关系实现u 继承与泛化u继承是实现泛化的一种机制。继承是实现泛化的一种机制。在这种机制中,在这种机制中,超类的任何一个子类都须具有其超类的所有行超类的任何一个子类都须具有其超类的所有行为:不仅要求其操作界面在文法上一致,而且为:不仅要求其操作界面在文法上一致,而且要求其行为在语义上一致。要求其行为在语义上一致。u当子类中的一个操作重载其超类中相应的操作当
32、子类中的一个操作重载其超类中相应的操作时,必须确保它提供与超类中的操作相同的服时,必须确保它提供与超类中的操作相同的服务务( (内容可以更多或更具体内容可以更多或更具体) )。u如没有证明子类的行为是否与父类相同,就试如没有证明子类的行为是否与父类相同,就试图用继承来实现新类中的行为,当两者不一致图用继承来实现新类中的行为,当两者不一致时,会导致难以预测的错误。时,会导致难以预测的错误。静态方法和数据静态方法和数据u类的类的静态方法静态方法不仅可以用于整个类的本身,而且还可用于不仅可以用于整个类的本身,而且还可用于该类的对象中,而类静态数据只能在多个对象之间实现共该类的对象中,而类静态数据只能
33、在多个对象之间实现共享,不能被复制。享,不能被复制。uc+c+中类静态方法和数据是依靠关键字中类静态方法和数据是依靠关键字staticstatic来说明的,类来说明的,类的静态数据还必须在声明进行初始化,否则就会出错。的静态数据还必须在声明进行初始化,否则就会出错。ujavajava使用与使用与c+c+相同的关键字相同的关键字staticstatic来定义静态方法和数据来定义静态方法和数据的。由于全局函数的存在,使得静态方法变得非常常用。的。由于全局函数的存在,使得静态方法变得非常常用。静态数据能直接在类的声明中直接初始化。静态数据能直接在类的声明中直接初始化。聚合和组合聚合和组合v(1 1)
34、聚合)聚合v聚合也是表示类和类之聚合也是表示类和类之间的间的“整体部分整体部分”关关系,用空心菱形表示。系,用空心菱形表示。v(2 2)组合)组合v组合是聚合的一种特殊组合是聚合的一种特殊情形,用实心菱形表示。情形,用实心菱形表示。 ii.5 授 权u利用继承实现栈;利用继承实现栈;u授权的定义;授权的定义;u利用队列实现栈利用队列实现栈。u 利用继承实现栈u栈是队列的特例,其元素的加入和删除只能在栈栈是队列的特例,其元素的加入和删除只能在栈顶进行。栈和队列之间存在泛化关系。顶进行。栈和队列之间存在泛化关系。u但若采用继承机制来实现这种泛化关系,则存在但若采用继承机制来实现这种泛化关系,则存在
35、两个问题:两个问题:u如重载队列类中的插入和删除操作,则名称与习惯用法如重载队列类中的插入和删除操作,则名称与习惯用法不一致;如增加不一致;如增加 push push 和和 pop pop 操作,则子类操作,则子类 stack stack 继承了继承了超类超类 list list 中的操作中的操作 add add 和和 removeremove,这可能破坏栈的结构。,这可能破坏栈的结构。u如子类如子类 stack stack 继承超类继承超类 list list 中的中的 first first 和和 lastlast操作,同样操作,同样可能破坏栈的结构。可能破坏栈的结构。u 授权的定义u授权
36、授权:把原来属于类:把原来属于类a a的部分责任或任务转交给的部分责任或任务转交给( (授权授权) )类类b b来完成。这时,类来完成。这时,类b b应看作是类应看作是类a a的不的不可分割的一个组成部分。可分割的一个组成部分。u目前常用的目前常用的 oopl(oopl(如如c+c+或或java)java)所提供的继承所提供的继承机制,难以直接实现多元继承和动态继承等泛机制,难以直接实现多元继承和动态继承等泛化关系,而授权技术是一种非常有效的实现技化关系,而授权技术是一种非常有效的实现技术。术。u 利用队列实现栈不推荐不推荐addremovefirstlastliststackpushpop推
37、推 荐荐-body: liststackpus hpopaddremovefirstlastlist ii.6 约束规则u约束规则的语法;约束规则的语法;u约束规则实例。约束规则实例。u 约束规则的语法u在画类图的过程中,关联、属性和操作等基本在画类图的过程中,关联、属性和操作等基本要素都要为模型加注约束条件。要素都要为模型加注约束条件。u约束规则的语法:将约束条件放在括号约束规则的语法:将约束条件放在括号 中,中,用自然语言或其他常见的设计语言来描述,其用自然语言或其他常见的设计语言来描述,其描述要简洁准确。描述要简洁准确。u在理想的情况下,在所使用的程序设计语言在理想的情况下,在所使用的程
38、序设计语言 中,规则应该作为断言来实现,并在调试代码中,规则应该作为断言来实现,并在调试代码时调用它。时调用它。u 约束规则实例 if 定货单、客户、信用等级定货单、客户、信用等级=“低低” then 定货单、预付款定货单、预付款 必须是必须是“真真”1* 项项订单项订单项数量:数量:integer价格:价格:money确认:确认:boolean订单订单收到日期收到日期预付款预付款数量数量价格价格发货()发货()结束()结束()u 使用类图的几点建议使用类图的几点建议u1. 1. 在项目初始阶段,不要使用所有的符号,应从在项目初始阶段,不要使用所有的符号,应从简单的概念开始。简单的概念开始。u
39、2. 2. 不同的开发阶段应用不同的观点画类图:分析不同的开发阶段应用不同的观点画类图:分析阶段用概念层类图;设计阶段用说明层类图;实阶段用概念层类图;设计阶段用说明层类图;实现阶段用实现层类图。现阶段用实现层类图。u3. 3. 不要为每个事物都画一个模型,应把精力放在不要为每个事物都画一个模型,应把精力放在关键的领域,画几张较为关键的图,经常使用,关键的领域,画几张较为关键的图,经常使用,不断更新。不断更新。u4. 4. 使用类图的最大危险是过早地陷入实现的细节,使用类图的最大危险是过早地陷入实现的细节,应将重点放在概念层和说明层。应将重点放在概念层和说明层。类图和对象图小结类图和对象图小结
40、v 1. 1.类和对象的表示法类和对象的表示法 (1 1)名称;()名称;(2 2)属性;()属性;(3 3)行为;)行为;v 2. 2.类之间的各种关系类之间的各种关系 (1 1)继承:子类继承了超类的所有属性和行为;)继承:子类继承了超类的所有属性和行为; (2 2)关联:两个不同类之间关联,可以单向或双向;)关联:两个不同类之间关联,可以单向或双向; (3 3)聚合:强关联关系,整体与部分的生命周期分开;)聚合:强关联关系,整体与部分的生命周期分开;(4 4)组合:强聚合,整体与部分的生命周期相同;)组合:强聚合,整体与部分的生命周期相同;v 3. 3.三个概念层次三个概念层次 (1 1
41、)概念层;()概念层;(2 2)说明层;()说明层;(3 3)实现层)实现层类图的建模分析步骤类图的建模分析步骤v(1 1)寻找出需求中的名词)寻找出需求中的名词( (候选对象候选对象) )。v(2 2)合并含义相同的名词,排除范围以外的名词,)合并含义相同的名词,排除范围以外的名词,并寻找隐含的名词。并寻找隐含的名词。v(3 3)去掉只能作为类属性的名词。)去掉只能作为类属性的名词。v(4 4)剩下的名词就是要找的分析类(候选类)剩下的名词就是要找的分析类(候选类) )。v(5 5)根据常识、问题域、系统责任确定该类有那)根据常识、问题域、系统责任确定该类有那些属性。些属性。v(6 6)补充
42、该类动态属性,如状态、对象间联系)补充该类动态属性,如状态、对象间联系(如聚合、关联)等属性。(如聚合、关联)等属性。v(7 7)从需求中的动词、功能或系统责任中寻找类)从需求中的动词、功能或系统责任中寻找类的操作(候选操作)。的操作(候选操作)。v(8 8)从状态转换,流程跟踪、系统管理等)从状态转换,流程跟踪、系统管理等方面补充类的操作。方面补充类的操作。v(9 9)对所寻找的操作进行合并、筛选。)对所寻找的操作进行合并、筛选。v(1010)对所寻找的操作在类间进行合理分)对所寻找的操作在类间进行合理分配(职责分配),形成每个类候选操作。配(职责分配),形成每个类候选操作。v(1111)补
43、充每个类的的分析文档,为类的)补充每个类的的分析文档,为类的进一步设计打下基础。进一步设计打下基础。会议管理系统类图中的分析过程(会议管理系统类图中的分析过程(1)主要分析类)主要分析类v(1)主要分析类)主要分析类v每一系统都有一个或几个主要分析类,并且有一每一系统都有一个或几个主要分析类,并且有一些其他类围绕在这个类的周围,辅助主要分析类些其他类围绕在这个类的周围,辅助主要分析类完成它的生命周期。完成它的生命周期。v例如,对于会议管理子系统来讲,显然会议是主例如,对于会议管理子系统来讲,显然会议是主要的分析类,主要分析类是在需求采集阶段就要要的分析类,主要分析类是在需求采集阶段就要确定的类
44、,在画类图时只画主要分析类呢?确定的类,在画类图时只画主要分析类呢?v当然不是,一个孤零零的类什么作用都没有,只当然不是,一个孤零零的类什么作用都没有,只有类和类之间发生关系才能形成业务,所以第一有类和类之间发生关系才能形成业务,所以第一步是要找到其他的支持类,从哪儿找呢?回答原步是要找到其他的支持类,从哪儿找呢?回答原始需求文档。始需求文档。(2)辅助类)辅助类v首先我们从原始需求文档中找到名词和隐含的名首先我们从原始需求文档中找到名词和隐含的名词,在软件开发以后,这些名词可以演化为类或词,在软件开发以后,这些名词可以演化为类或类的属性,对于会议管理系统来讲,前半部分文类的属性,对于会议管理
45、系统来讲,前半部分文档所包含的名词有:档所包含的名词有:会议、行政管理、手段、会会议、行政管理、手段、会议类别、会议室、会议申请、会议通知、会议纪议类别、会议室、会议申请、会议通知、会议纪要、基础、信息、会议性质名称、备注、会议室要、基础、信息、会议性质名称、备注、会议室名称、容纳人数、会议室资源、说明、使用情况、名称、容纳人数、会议室资源、说明、使用情况、会议申请人、会议安排、会议性质、会议议题、会议申请人、会议安排、会议性质、会议议题、预算、会议附件、主持人、记录人员、参加人员、预算、会议附件、主持人、记录人员、参加人员、会议地点、会议室、会议开始时间、会议结束时会议地点、会议室、会议开始时间、会议结束时间、会议内容、审批人间、会议内容、审批人。v其次要合并含义相同的名词,如把备注和说明合其次要合并含义相同的名词,如把备注和说明合并为说明、把会议性质和会议性质名称合并为会并为说明、把会议性质和会议性质名称合并为会议性质。还要排除范围以外的名词,行政管理、议性质。还要排除范围以外的名词,行政管理、手段、基础、信息都是一些概括性的名词,只能手段、基础、信息都是一些概括性的名词,只能作为抽象类或子系统、系统名称,可以暂时不考作为抽象类或子系统、系统名称,可以暂时不考虑,最后还需要找到一些隐含的名词,由于在会虑,最后还需要找到一些隐含的名词,由于在会议管理中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南京工业大学浦江学院《图形与标志设计》2021-2022学年第一学期期末试卷
- 非特异性免疫说课稿
- 深圳市万豪御景苑施工组织设计
- 南京工业大学浦江学院《企业家精神》2022-2023学年第一学期期末试卷
- 【初中化学】化学反应的定量关系单元综合题-2024-2025学年九年级化学人教版上册
- 南京工业大学浦江学院《公益组织内部治理和战略管理》2022-2023学年第一学期期末试卷
- 精神科责任自负协议书(2篇)
- 南京工业大学《有机波谱分析》2022-2023学年第一学期期末试卷
- 南京工业大学《无机非金属材料工学》2021-2022学年第一学期期末试卷
- 教育4-5岁幼儿尊重并接纳不同群体的实施方案
- 收费站冬季安全注意事项
- (外研版3起)英语四年级上册单词字帖书写练习(手写体)高清打印版
- 《泡沫灭火系统》课件
- 小学教学质量提升关键培养学生良好的学习习惯
- 古代辞章领略古代辞章的风华与韵味
- 开放性指骨骨折的护理查房课件
- Part3-4 Unit5 Ancient Civilization教案-【中职专用】高一英语精研课堂(高教版2021·基础模块2)
- 2023年山东济南市文化和旅游局所属事业单位招聘42人笔试参考题库(共500题)答案详解版
- 开拓海外市场:2024年新年计划
- 2023-2024学年辽宁省沈阳126中八年级(上)期中数学试卷(含解析)
- 生产检验记录表
评论
0/150
提交评论