面向对象的uml与java类和对象_第1页
面向对象的uml与java类和对象_第2页
面向对象的uml与java类和对象_第3页
面向对象的uml与java类和对象_第4页
面向对象的uml与java类和对象_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、静态图:类图、对象图和包图静态图:类图、对象图和包图杨天剑杨天剑北京邮电大学经济管理学院北京邮电大学经济管理学院2000 年年 8月月第一部分第一部分 静态图:类图、对象图和包图静态图:类图、对象图和包图u类和对象的基本概念;类和对象的基本概念;u三个层次的观点;三个层次的观点;u类图和对象图的基本要素;类图和对象图的基本要素; u小小 结。结。 I 类和对象的基本概念类和对象的基本概念u引引 言;言;u对象和类;对象和类;u类和对象的实例;类和对象的实例;u类和对象的表示;类和对象的表示;u三个层次的观点。三个层次的观点。u 引引 言言u类图技术是类图技术是OO方法的核心技术方法的核心技术,

2、应用非常广,应用非常广 泛,其中泛,其中类、对象以及它们之间的关系是最基类、对象以及它们之间的关系是最基 本的建模元素本的建模元素。类模型和对象模型揭示了系统。类模型和对象模型揭示了系统的结构。的结构。u分类可以有效地使复杂问题简化。建立类模型分类可以有效地使复杂问题简化。建立类模型的过程,是把现实世界中与问题有关的各种对的过程,是把现实世界中与问题有关的各种对象及其相互关系进行抽象和分类的过程。象及其相互关系进行抽象和分类的过程。class Car int color_number; int door_number; int speed; void brake() void speedUp(

3、) ; void slowDown() 计算机中的对象的原型 现实生活中的对象 数据抽象类型数据抽象类型l什么是类?l类是描述对象的“基本原型”,它定义一种对象所能拥有的数据和能完成的操作,在面向对象的程序设计中,类是程序的基本单元。variablesmethods 程序中的对象程序中的对象 是类的一个实例,是类的一个实例,是一个软件单元,是一个软件单元,它由一组结构化它由一组结构化的数据和在其上的数据和在其上的一组操作构成的一组操作构成。l变量:即指对象的所知道的状态l方法:指对象的功能单元。l什么是消息?l软件对象通过相互间传递消息来相互作用和通信l 一个消息由三部分组成:l1. 接受消息

4、的对象l2. 要完成方法的名字l3. 方法需要的参数对象对象B对象对象 Amessagel一个例子l在程序中操作对象是类的一个实例:即对象l创建一个对象 Hello obj=new Hello();l调用方法 obj.showString(“Hello World!”)class Hello extend Object private String s;public Hello () Super();public void showString (String s) System.out.println(s);public String changeString(String str) s=s

5、tr; return s; l什么是封装?l封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际 私有数据私有数据 方法方法上使用方法将类上使用方法将类的数据隐藏起来,的数据隐藏起来,控制用户对类的控制用户对类的修改和访问数据修改和访问数据的程度。的程度。 方法方法数据数据对象对象A对象对象B公有数据公有数据l什么是子类?l子类是作为另一个类的扩充或修正所定义的一个类.bicycle(super class)Mountain bikesRacing bikesTandem bikessub classclass Car int color_number; int doo

6、r_number; int speed; push_break() add_oil() class Trash_Car extends Car double amount; fill_trash() 什么是继承什么是继承? 继承是子类利用父类中定义的方法和变量就继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样像它们属于子类本身一样.l什么是方法的覆盖?l在子类中重新定义父类中已有的方法。class Car int color_number; int door_number; int speed; push_break() speed=0; add_oil() class Trash

7、_Car extends Car double amount; fill_trash() push_break() speed=speed-10; l什么是方法的重载(多态性)?l在同一个类中至少有两个方法用同一个名字,但有不同的参数。类类void show(int int_num)void show(double double_num)void show(nit nit_ um, float float_um)1231.23123,1.23lApplicationlAppletlCaru 对象和类对象和类u对象是指某个事物,大多对应于真实世界中的某个对象是指某个事物,大多对应于真实世界中的某

8、个客观实体;但有些对象在真实世界中没有直接的对客观实体;但有些对象在真实世界中没有直接的对应物,是人们对某个事物的一种抽象描述。应物,是人们对某个事物的一种抽象描述。u对象的基本特征可以归纳为对象的属性和行为两类对象的基本特征可以归纳为对象的属性和行为两类。u类是指对一组具有相同特征的对象的抽象描述;任类是指对一组具有相同特征的对象的抽象描述;任何对象都是某个类的实例。何对象都是某个类的实例。u我们采用类的概念来研究系统的构成,划分问题域我们采用类的概念来研究系统的构成,划分问题域中涉及到的各种对象。类之间的继承关系是中涉及到的各种对象。类之间的继承关系是OO方法方法中的一个重要概念。中的一个

9、重要概念。u类与对象的关系:类与对象的关系:u元素与原子元素与原子u汽车与蓝鸟汽车汽车与蓝鸟汽车u 类和对象的实例类和对象的实例u在一个信息系统中:在一个信息系统中:客户(Customer)、合同(Agreement)、发票(Invoice)、债务(Debt)、资产(Asset)、报价单(Quotation)u在一个技术系统中:在一个技术系统中:感应器(Sensor)、显示器(Display)、输入输出卡(I/O Card)、按键(Button)u在 软 件 系 统 中 :在 软 件 系 统 中 : 文 件 ( F i l e ) 、 执 行 程 序(Executable program)、

10、设备(Device)、 图标(Icon) 、窗口(Window)、 滚动条(Scrollbar) .u在人类社会中:社团、俱乐部、大学、公司、商在人类社会中:社团、俱乐部、大学、公司、商店、企业店、企业.例例:客户类的表示客户类的表示客户姓名单位电话Email客户姓名单位电话Email客户付款(金额)客户付款(金额)客户产品单价数量发票客户姓名客户单位产品单价数量发票合计()合计()*Class InvoiceCustomer customer;.例例:客户类的表示客户类的表示u 类和对象的表示类和对象的表示 类图和对象图类图和对象图u类图描述系统中的类及其相互之间的各种关系,反类图描述系统中

11、的类及其相互之间的各种关系,反映了系统中包含的各种对象的类型以及对象间的各映了系统中包含的各种对象的类型以及对象间的各种静态关系,主要是:种静态关系,主要是:关联和子类型关联和子类型。类图也可描。类图也可描述类的述类的属性和行为属性和行为以及对模型中各种成分的约束。以及对模型中各种成分的约束。u对象图是类图的实例,描述系统中各种对象对象图是类图的实例,描述系统中各种对象( (类的类的实例实例) )以以及对象之间的各种静态关系。及对象之间的各种静态关系。u类图类图( (和对象图和对象图) )中各个区间的文法:独立于实现时中各个区间的文法:独立于实现时所使用的程序设计语言,也可以选用某种语言的文所

12、使用的程序设计语言,也可以选用某种语言的文法规则,如法规则,如C+,Java,。u类中的一个类中的一个操作操作可以有多种不同的实现,每一个实可以有多种不同的实现,每一个实现称作一个方法。现称作一个方法。u 类和对象的表示类和对象的表示( (续续) ) 类图和对象图类图和对象图类类 名名(Class Name)类类 名名属属 性性 (Attributes)类类 名名属属 性性(Attributes)操作操作 (Operations)类的表示类的表示对象名对象名(Object Name)对象名对象名属性属性值值(AValues)对象名对象名属性属性值值 (AValues)方法方法 (Methods

13、)对象的表示对象的表示II 类类图图和和对象对象图的基本要素图的基本要素u关关 联;联;u属属 性;性;u操操 作;作;u泛泛 化;化;u授授 权;权;u约束规则约束规则;u聚集和组成聚集和组成;u限定关联限定关联II.1 关关 联联u一个典型的类图;一个典型的类图;u基本概念;基本概念;u角色及其命名;角色及其命名;u角色的多元性;角色的多元性;u三个层次中的关联;三个层次中的关联;u导航特性。导航特性。一个典型的类图一个典型的类图多重性:限制性的多重性:限制性的1*0.1雇员雇员销售代表销售代表多重性:选择多重性:选择关联关联订单订单客户客户nameaddress泛化泛化类类团体客户团体客

14、户个人客户个人客户多重性:多值多重性:多值产品产品1 项项*角色名称角色名称1订单项订单项关联关联*个人客户信用卡号数量:Integer价格:Money确认:Boolean定货单收到日期预付款栏目发货()结束()客户姓名地址信用等级():String集团客户联系人姓名信用等级信用限额余额()月帐单(Integer)信用等级()=低定单栏目雇员产品*1*110.1采购员if 定货单.客户.信用等级=低then 定货单.预付款 必须是 真 栏目u 关联的表示关联的表示u关联表示需要交流的对象之间的关系关联表示需要交流的对象之间的关系u用一条无向线段表示,是一种双向关系。例如客户和用一条无向线段表示

15、,是一种双向关系。例如客户和订单的关联:从客户看,订单是他提交的;从订单看,订单的关联:从客户看,订单是他提交的;从订单看,它有一个客户。它有一个客户。 u用一条有向线段表示,是一种单向关系用一条有向线段表示,是一种单向关系u关联的命名:可以用动词词组或名词命名。但只关联的命名:可以用动词词组或名词命名。但只要这个关联的含义明确,则可省略这个名字。要这个关联的含义明确,则可省略这个名字。u可以将关联视为一条通讯线路可以将关联视为一条通讯线路u 角色及其命名角色及其命名u关联的两端与类之间关联的两端与类之间( (或与类的实例之间或与类的实例之间) )的接口表示该的接口表示该类类( (或该类的实体

16、或该类的实体) )在这个关联中的行为,称之为角色。在这个关联中的行为,称之为角色。u每个关联有两个角色。例如,对于客户和订单之间的关每个关联有两个角色。例如,对于客户和订单之间的关联是联是:客户和订单。:客户和订单。u可将引出角色的类称作源,将引入角色的类称作目标。可将引出角色的类称作源,将引入角色的类称作目标。例如,从订单到客户的角色的源是订单,目标是客户。例如,从订单到客户的角色的源是订单,目标是客户。u为了明确对象在关联中的角色,可以为角色命名。例如为了明确对象在关联中的角色,可以为角色命名。例如从订单到订单项方向上的角色可以命名为项从订单到订单项方向上的角色可以命名为项。u如果在关联上

17、没有标出角色名,则隐含地用该角色的目如果在关联上没有标出角色名,则隐含地用该角色的目标类的名称作为它的名称。例如,从订单到客户的角色标类的名称作为它的名称。例如,从订单到客户的角色应叫做客户。应叫做客户。u 角色的多角色的多元元性性u角色可以具有多元性角色可以具有多元性( (一个角色可以有多个对象来一个角色可以有多个对象来扮演扮演) )。例如,每一个客户对象可以有零个或多个。例如,每一个客户对象可以有零个或多个订单对象。订单对象。u多元性的表示。多元性的表示。1 表示表示 1.1 ;*代表零到无穷;代表零到无穷;0.1是选择符,表示没有或仅有是选择符,表示没有或仅有1个;一个数;一个范个;一个

18、数;一个范围;数字和范围不连续的组合。围;数字和范围不连续的组合。 * B A表示表示 A 和零个、一个或多个和零个、一个或多个 B 关联。关联。0.1 B A表示表示 A 和零个或一个和零个或一个 B 关联关联1.* A A表示表示 A 和一个或多个和一个或多个 B 关联关联1 B A表示表示 A 和一个和一个 B 关联关联l一对一l一对多l多对多l概念层:在应用域中两类对象之间存在的某种关系l说明层:表示一种职责(Responsibility),一方向另一方请求或发送某种消息或服务, 但并不涉及实现这种服务的具体方法(methods) 例, 定单的一个职责是记住和报告它的所有者是谁l实现层

19、:意味着(用指针来)建立某种关联性。u 实现层实现层中的关联(续)中的关联(续)l对双向关联:相关联的两个类中都有指向对方的对双向关联:相关联的两个类中都有指向对方的指针。指针。 例如,订单有一个指针集指向订单项,有一个指针指例如,订单有一个指针集指向订单项,有一个指针指向客户。向客户。Class Order private Customer _customer;private Vector _orderLines;.Class Customer private Vector _orders;.u 导航特性导航特性1导航导航订订 单单*收到日期收到日期预付款预付款数量数量价格价格发货()发货(

20、)结束()结束()客客 户户姓名姓名地址地址信用等级()信用等级(): String产产 品品1*1 项项*订单项订单项数量:数量:Integer价格:价格:Money确认:确认:Boolean返回u 导航特性导航特性( (续续) )u箭头表示导航特性。如果只在一个方向上有导航箭头表示导航特性。如果只在一个方向上有导航表示,称作单向关联。如果在两个方向上都有导表示,称作单向关联。如果在两个方向上都有导航表示,称作双向关联。如果不带箭头,表示未航表示,称作双向关联。如果不带箭头,表示未知或尚未确定。知或尚未确定。u单向关联时,说明模型中的订单指出它是由哪个单向关联时,说明模型中的订单指出它是由哪

21、个客户发出的;实现模型中的订单包含一个指向客客户发出的;实现模型中的订单包含一个指向客户的指针。户的指针。 II.2 属属 性性u在三个层面中的属性;在三个层面中的属性;u属性属性的的语法;语法;u补充说明。补充说明。u 在三个层面中的属性在三个层面中的属性u在概念层,在概念层,描述类具有的一些属性描述类具有的一些属性( (客户对象的客户对象的名字属性表示客户有名字名字属性表示客户有名字) )。u在说明层,规定类对象属性的值并给出设定这在说明层,规定类对象属性的值并给出设定这些值的方法些值的方法( (表示客户对象的名字并有一些设置表示客户对象的名字并有一些设置名字的方法名字的方法) )。u在实

22、现层,设置一个物理存储区来保存属性的在实现层,设置一个物理存储区来保存属性的值值( (也可称做一个实例变量或一个数据成员也可称做一个实例变量或一个数据成员) )。u 属性属性的的语法语法 UML规定其语法为:规定其语法为: 可见性可见性 名称名称: :类型类型 = = 缺省值缺省值 约束特性约束特性 u可见性:表示该属性对类外的元素是否可见。可见性:表示该属性对类外的元素是否可见。常用的有公有、受保护和私有三种。常用的有公有、受保护和私有三种。u名称:属性的名称,名称:属性的名称, 是一个字符串。是一个字符串。u类型:类型:定义属性的种类定义属性的种类( (基本数据类型或用户基本数据类型或用户

23、自定义的类型自定义的类型) )。u缺省值:属性的初始值。缺省值:属性的初始值。u约束特性:描述对属性的约束。约束特性:描述对属性的约束。u 补充说明补充说明u客户属性的名称可以定义为一个单独的类:定义名客户属性的名称可以定义为一个单独的类:定义名字的属性及其相关的操作;然后在客户类和该属性字的属性及其相关的操作;然后在客户类和该属性名称类之间建立关联。名称类之间建立关联。u对于任何一个对象,其每个属性都具有一个确定的对于任何一个对象,其每个属性都具有一个确定的值。而且,一般来讲,属性总是单值的。值。而且,一般来讲,属性总是单值的。u目前只须将属性看成是一个小而简单的类,诸如字目前只须将属性看成

24、是一个小而简单的类,诸如字符串、日期、符串、日期、资金对象以及非对象的值资金对象以及非对象的值( (例如整型例如整型和实型和实型) )。人姓名年龄人姓名生日/年龄年龄=今天-生日personName: Char *BirthDay:Date-age:IntegerAge():Integer II.3 操操 作作u在三个层面中的在三个层面中的 操作;操作;u操作操作 的的语法;语法;u补充说明。补充说明。u 在三个层面中的操作在三个层面中的操作u在概念层,操作不是定义类的接口,而是指出类在概念层,操作不是定义类的接口,而是指出类的主要职责,描述类的动态行为。的主要职责,描述类的动态行为。u在说明

25、层,主要给出重要的公有操作;然而有可在说明层,主要给出重要的公有操作;然而有可能需要指明哪些属性是只读的或是不可修改的。能需要指明哪些属性是只读的或是不可修改的。u在实现层,给出操作的不同实现方法,有可能会在实现层,给出操作的不同实现方法,有可能会显示一些私有的和受保护的操作。操作是施于对显示一些私有的和受保护的操作。操作是施于对象的过程调用,而方法是过程体,是操作的一个象的过程调用,而方法是过程体,是操作的一个具体实现具体实现 。u 操作的语法操作的语法 可见性可见性 名称名称( (参数表参数表):):返回类型表达式返回类型表达式 约束特性约束特性 u可见性:可见性:“+”表示公有操作,表示

26、公有操作,“#”表示受保表示受保护的操作,护的操作,“-”表示私有操作。表示私有操作。u名称:操作的名称,是一个字符串。名称:操作的名称,是一个字符串。u参数表:其语法与属性的参数相同,参数个数参数表:其语法与属性的参数相同,参数个数是任意的。是任意的。u返回类型表达式返回类型表达式( (可选项可选项) ):依赖于语言的描述依赖于语言的描述。u约束特性:用以描述对此操作的约束。约束特性:用以描述对此操作的约束。u 补充说明补充说明u两类操作:两类操作:不改变类不改变类( (对象对象) )的可见状态的操作;的可见状态的操作;例如,查询操作仅从类中取值,但不改变其可见例如,查询操作仅从类中取值,但

27、不改变其可见状态。改变类状态。改变类( (对象对象) )的可见状态的操作称为修改的可见状态的操作称为修改操作。操作。u查询操作可以按任意的顺序执行,但修改操作的查询操作可以按任意的顺序执行,但修改操作的顺序是重要的,如果不按照预定的顺序执行修改顺序是重要的,如果不按照预定的顺序执行修改操作,有可能得到不同的结果。为了保证这两类操作,有可能得到不同的结果。为了保证这两类操作相互独立,应避免从修改操作中返回值操作相互独立,应避免从修改操作中返回值。 XIV 可见性可见性u+( (Public) ):公有成员在程序的任何位置都是公有成员在程序的任何位置都是可见的,系统中的任何对象都可以使用它。可见的

28、,系统中的任何对象都可以使用它。u-( (Private) ):私有成员仅可以由定义它的类使私有成员仅可以由定义它的类使用。用。u#( (Protected) ):受保护的成员仅可以由定义它受保护的成员仅可以由定义它的类和该类的子类中的对象使用。的类和该类的子类中的对象使用。 对对“Public”、Private”和和“Protected”等三个可等三个可见性标识符的含义,各种语言都有它自己的规定见性标识符的含义,各种语言都有它自己的规定。UML的定义是:的定义是:lC+lSmalltalklJaval操作(Operations):界面 可见性 名称(参数表):返回类型表达式约束特性例:+ A

29、ge(Date Today):Integerl方法(methods):操作的一个具体的实现class Person String Name;Date Birthday;Integer Age(Date Today) return(Year(Today) - Year(this.Birthday); II.4 泛泛 化化u泛化的定义;泛化的定义;u在三个层面中的泛化;在三个层面中的泛化;u继承与泛化继承与泛化。u 泛化的定义泛化的定义泛化关系泛化关系( (继承关系继承关系) )定定义类和包之间的一般元义类和包之间的一般元素和特殊元素之间的分素和特殊元素之间的分类关系。例如,个人客类关系。例如,个

30、人客户和团体客户都是客户,户和团体客户都是客户,可以把他们的相似之处可以把他们的相似之处放到客户类放到客户类( (超类型超类型) )中,中,用个人客户和团体客户用个人客户和团体客户作为它的子类型。作为它的子类型。客客 户户nameaddress泛化泛化超类型超类型团体客户团体客户个人客户个人客户超类型超类型u 在三个层面中的泛化在三个层面中的泛化u在概念层,如果团体客户的所有实例都是客户在概念层,如果团体客户的所有实例都是客户的实例,那么团体客户类型是客户类型的一个的实例,那么团体客户类型是客户类型的一个子类型。子类型。u在说明层,泛化意味着子类型的接口必须包括在说明层,泛化意味着子类型的接口

31、必须包括超类型的接口中的每个元素,即两者必须保持超类型的接口中的每个元素,即两者必须保持一致。一致。u在实现层在实现层,子类继承超类的所有属性和方法,子类继承超类的所有属性和方法,并可覆盖继承来的方法。例如,凡适用于客户并可覆盖继承来的方法。例如,凡适用于客户的代码,只要将将客户替换成团体客户,都适的代码,只要将将客户替换成团体客户,都适用于团体客户。用于团体客户。l泛化(Generalization): 抽象化l特化(Specialization): 实例化l继承(Inheritance): 泛化关系的一种实现机制u 继承与泛化继承与泛化u继承是实现泛化的一种机制。在这种机制中,继承是实现泛

32、化的一种机制。在这种机制中,超类的任何一个子类都须具有其超类的所有行超类的任何一个子类都须具有其超类的所有行为:不仅要求其操作界面在文法上一致,而且为:不仅要求其操作界面在文法上一致,而且要求其行为在语义上一致。要求其行为在语义上一致。u当子类中的一个操作重载其超类中相应的操作当子类中的一个操作重载其超类中相应的操作时,必须确保它提供与超类中的操作相同的服时,必须确保它提供与超类中的操作相同的服务务( (内容可以更多或更具体内容可以更多或更具体) )。u如没有证明子类的行为是否与父类相同,就试如没有证明子类的行为是否与父类相同,就试图用继承来实现新类中的行为,当两者不一致图用继承来实现新类中的

33、行为,当两者不一致时,会导致难以预测的错误。时,会导致难以预测的错误。 II.5 授授 权权u利用继承实现栈;利用继承实现栈;u授权授权的的定义;定义;u利用队列实现栈。利用队列实现栈。u 利利用继承实现栈用继承实现栈u栈栈是是列表列表的特例,其元素的加入和删除只能在栈的特例,其元素的加入和删除只能在栈顶进行。栈和顶进行。栈和列表列表之间存在泛化关系。之间存在泛化关系。u但若采用继承机制来实现这种泛化关系,则存在但若采用继承机制来实现这种泛化关系,则存在两个问题:两个问题:u如重载如重载列表列表类中的插入和删除操作,则名称类中的插入和删除操作,则名称与习惯用法不一致;如增加与习惯用法不一致;如

34、增加 push 和和 pop 操作操作,则子类,则子类 Stack 继承了超类继承了超类 List 中的操作中的操作 add 和和 remove,这可能破坏栈的结构。,这可能破坏栈的结构。u如子类如子类 Stack 继承超类继承超类 List 中的中的 first 和和 last操操作作,同样可能破坏栈的结构。同样可能破坏栈的结构。u 授权授权的的定义定义u授权:把原来属于类授权:把原来属于类A的部分责任或任务转交的部分责任或任务转交给给( (授权授权) )类类B来完成。这时,类来完成。这时,类B应看作是类应看作是类A的不可分割的一个组成部分。的不可分割的一个组成部分。u目前常用的目前常用的

35、OOPL( (如如C+C+或或Java)Java)所提供的继承所提供的继承机制,难以直接实现多元继承和动态继承等泛机制,难以直接实现多元继承和动态继承等泛化关系,而授权技术是一种非常有效的实现技化关系,而授权技术是一种非常有效的实现技术。术。利用队列实现栈利用队列实现栈不推荐不推荐addremovefirstlastListStackpushpop推推 荐荐-Body: ListStackPushpopaddremovefirstlastList II.6 约束规则约束规则u约束规则的语法;约束规则的语法;u约束规则实例。约束规则实例。u 约束规则的语法约束规则的语法u在画类图的过程中,关联、

36、属性和操作等基本在画类图的过程中,关联、属性和操作等基本要素都要为模型加注约束条件。要素都要为模型加注约束条件。u约束规则的语法:将约束条件放在括号约束规则的语法:将约束条件放在括号 中,中,用自然语言或其他常见的设计语言来描述,其用自然语言或其他常见的设计语言来描述,其描述要简洁准确。描述要简洁准确。u在理想的情况下,在所使用的程序设计语言在理想的情况下,在所使用的程序设计语言 中,规则应该作为断言来实现,并在调试代码中,规则应该作为断言来实现,并在调试代码时调用它。时调用它。u 约束规则实例约束规则实例 if 订单订单.客户客户.信用等级信用等级=“低低” then 订单订单.预付款预付款

37、 = “真真”类图类图1* 项项订单项订单项数量:数量:Integer价格:价格:Money确认:确认:Boolean订单订单收到日期收到日期预付款预付款数量数量价格价格发货()发货()结束()结束() IV 聚集和组成聚集和组成u聚集聚集和和组成组成的基本概念;的基本概念;u聚集聚集和和组成组成的符号。的符号。聚集和组成的基本概念聚集和组成的基本概念l聚集描述类的对象之间的关系是整体与部聚集描述类的对象之间的关系是整体与部分分“是是.的一部分的一部分”或或“包含包含.”的关系的关系。l组成描述类的对象之间的关系是整体拥有组成描述类的对象之间的关系是整体拥有各部分各部分(一个部分对象仅属于一个

38、整体一个部分对象仅属于一个整体)且部且部分与整体共存亡分与整体共存亡:“由由组成组成”。l关联是指任意两个对象关联是指任意两个对象(或者多个对象甚至或者多个对象甚至一个对象的两种角色一个对象的两种角色)之间的某种联系,聚之间的某种联系,聚集和组成都是一种关联。集和组成都是一种关联。 XI 限定关联限定关联u限定关联是一对多或多对多关联的另一种表限定关联是一对多或多对多关联的另一种表示,它通过添加限定符来标识在这个关联的示,它通过添加限定符来标识在这个关联的一方出现的多个对象中的每一个对象。一方出现的多个对象中的每一个对象。u例如,紧贴关联目录例如,紧贴关联目录类一端的小矩形是一类一端的小矩形是

39、一个限定符,它限定目个限定符,它限定目录对象使用文件名来录对象使用文件名来标识属于它的每一个标识属于它的每一个文件。文件。文件名文件名目录目录文件文件*限定关联限定关联Row:1,2Colu:1,2BoardSquare1限定关联举例限定关联举例 XII 关联类关联类u关联类不仅有名称、关联类不仅有名称、有相关对象的角色以有相关对象的角色以及参与这些角色的对及参与这些角色的对象数量象数量(多重性多重性),而,而且还有属性且还有属性(如工作如工作时间时间)、操作以及其、操作以及其他一些特性。他一些特性。关联类关联类雇雇 佣佣Period:dateRange公司公司* 雇主雇主*人人u使用关联类时

40、,在任何两个相关的对象之间只能使用关联类时,在任何两个相关的对象之间只能存在关联类的一个实例。存在关联类的一个实例。u 使用类图的几点建议使用类图的几点建议u在项目初始阶段,不要使用所有的符号,应从简在项目初始阶段,不要使用所有的符号,应从简单的概念开始。单的概念开始。u不同的开发阶段应用不同的观点画类图:分析阶不同的开发阶段应用不同的观点画类图:分析阶段用概念层类图;设计阶段用说明层类图;实现段用概念层类图;设计阶段用说明层类图;实现阶段用实现层类图。阶段用实现层类图。u不要为每个事物都画一个模型,应把精力放在关不要为每个事物都画一个模型,应把精力放在关键的领域,画几张较为关键的图,经常使用,不键的领域,画几张较为关键的图,经常使用,不断更新。断更新。u使用类图的最大危险是过早地陷入实现的细节,使用类图的最大危险是过早地陷入实现的细节,应将重点放在概念层和说明层。应将重点放在概念层和说明层。u 类图术语类图术语的比较的比较Booch组成组成 (containing)继承继承 (inherit)使用使用 ( uses )UML泛化泛化(generalization)聚集聚集 (aggregation)关联关联 (association)类类 ( class)Odell子类型子类型 (

温馨提示

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

评论

0/150

提交评论