面向对象分析与设计 课件 第5章 类图建模_第1页
面向对象分析与设计 课件 第5章 类图建模_第2页
面向对象分析与设计 课件 第5章 类图建模_第3页
面向对象分析与设计 课件 第5章 类图建模_第4页
面向对象分析与设计 课件 第5章 类图建模_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第5章类图建模学习目标

理解和掌握类图的概念,理解和掌握类图的构成元素及其表示法

理解和掌握从用例图导出结构模型的一般方法

理解和掌握类图的基本建模策略和一般建模方法

深刻理解和领会类图的意义和作用第5章类图建模面向对象分析过程中,用例建模过程的实质也是一个功能分析的过程,其直接结果是得到了目标系统的功能模型。但实际上我们可以得到的不仅仅是一个功能模型,事实上我们还可以如从这些用例以及这些用例的动作序列中找到与这个用例相关的业务逻辑、业务实体以及非功能属性等等,这些都是影响目标系统的重要因素。本节我们将主要讨论类图模型及其建模方法,同时还讨论如何从用例模型中找到相应的类(或对象),从而建立目标系统的类图模型(也称为概念模型或结构模型)。值得一提的是,在分析阶段建立的类图模型并不一定就是目标系统的最终结构模型,大多数情况下,分析阶段建立的类图模型仅仅是系统的概念模型,而到系统设计阶段还需要进一步细化为目标系统的结构模型。本章将讨论类图模型的表示和建模方法,以及如何从功能模型导出概念模型。5.1类图的构成元素类图模型的主要构成元素不外乎类和类之间的关系两大部分。其具体的构成元素包括:类、对象、继承、关联、聚合、组合和依赖等元素,还包括类型、接口、信号等模型元素。类图模型的主要用途在于描述系统的静态结构,它是软件模型中最重要的结构模型。本小节将详细介绍类图的主要构成元素和相关的基本概念。5.1.1类和对象类(class)被定义为具有相同属性和行为的全体对象构成的集合,实际上也代表了对对象的一种分类,分类的依据则是这些对象所具有的属性和方法。类所描述的并不是某个特定实体的特定行为,而仅用于描述同一类对象(一类对象)所具有的共同特征。UML中,使用带有类名、属性和操作的矩形框表示类。其中,类名是类的名字,在同一个上下文中,类名不允许重复。属性和操作分别表示类所拥有的属性和操作的集合。5.1.1类和对象UML类属性和方法的一般格式如下:[作用域][可见性]属性名[:数据类型[=缺省值]][作用域][可见性]方法名([[in/out]参数名[:数据类型],…]):参数列表中,关键字in表示输入参数,out表示输出参数。5.1.1类和对象例如,图5-1给出了一个类的图形表示实例,图中Employee是类名,Name、EmployeeID和Title是属性。GetPhoto(p:Photo)、GetPersonRecord()和GetContactInfomation()则是这个类的方法。图5-1类的图形表示5.1.1类和对象程序设计语言中,通常称不能实例化的类为抽象类,而称可以实例化的类为具体类。UML支持抽象类和具体类的描述,UML默认的类是具体类,其外观是类名用正常体表示。而抽象类的外观则是类名使用斜体的形式表示。如图5-1中的类就表示了一个抽象类。与类相关一个问题是属性和方法的可见性问题。UML中,类属性和方法的可见性被定义分为公共、私有和保护三个级别。在UML类的图形表示中,使用+、-和#分别表示公共、私有和保护这三种可见性。缺省的可见性是公共可见性。5.1.1类和对象如图5-1中,Name、EmployeeID和Title等三个属性的可见性均是私有可见性。GetPhoto()和GetContactInfo()方法的可见性则是公共的。5.1.1类和对象面向对象程序语言中,属性和方法的作用域被分为类作用域和实例作用域两种情况。类作用域是指类中不依赖类的实例而存在的属性和方法。无论是否创建类的实例,类中具有类作用域的属性和方法就已经存在并可以访问。而当创建了一个或多个类的实例时,类类作用域的属性和方法也没有因为这些实例的创建而建立多个不同的副本。与类作用域相反,实例作用域则是指类中其存在性和访问性均依赖于实例的属性和方法。UML类中,使用正常体和斜体的属性或方法名来表示具有作用域,斜体表示类作用域,正常体则表示实例作用域。UML默认的作用域是实例作用域。5.1.1类和对象与类属性和方法相关的最后一个问题是数据类型问题,UML以标准UML数据类型、程序设计语言的数据类型和自定义数据类型等三种方式支持数据类型。UML类中,属性、方法以及方法的形式参数和返回值等均可以使用这些数据类型。如图5-1中,属性EmployeeID的数据类型int就是一个标准的数据类型。而方法GetPhoto()的返回值类型(Photo)则可以看作是一个类或自定义的数据类型。5.1.2类(或对象)之间的关系严格地说,在面向对象系统中,类之间的关系主要是指类之间的泛化关系。而对象之间的关系却可以是多样的,面向对象方法将它们抽象成依赖、关联、聚合、组合等四种关系。虽然这些关系描述的是对象之间的关系,但UML却统一地使用类图来描述这些关系,并为它们定义了相应的表示法。因此,类图模型中的关系就被概括成依赖、关联、聚合、组合和泛化这五种关系。值得注意的是,在概念上严格地区分类关系与对象关系之间的联系和区别,将是从事面向对象分析与设计工作的极为重要的基本思维方式和工作基础。5.1.2类(或对象)之间的关系1.依赖关系(Dependency)对于两个对象来说,如果一个对象(或类)的属性或行为发生的某种变化将会引起另一个对象(或类)的属性或行为发生必要的改变,那么就称这两个对象(或类)之间存在某种依赖关系。UML使用类图描述对象之间的依赖关系,这种方式可以更容易地描述目标系统中对象(或类)之间存在的依赖关系。对象之间的依赖关系的实质是指系统中存在的某种耦合关系。UML使用一个带有箭头的虚线表示类之间的依赖关系。5.1.2类(或对象)之间的关系

图5-2对象之间的依赖关系图5-2给出了对象间的依赖关系的类图表示。对于类来说,依赖的确切含义是A类的某个实例访问了某个(或某些)B类实例的某些属性或方法,当B类的属性或方法发生改变时,将会引起A类发生相应的改变。5.1.2类(或对象)之间的关系2.关联关系(Association)关联(Association)关系是对象(或类)之间存在的结构性的关系,其确切的定义是:对于两个对象(或类)来说,如果在一个对象的内部可以访问另一个对象的所有属性和方法时,我们就可以称这两个对象(或类)之间存在着关联关系。如汽车和轮胎、师傅和徒弟、班级和学生之间的关系等。显然,关联关系必然是一种依赖关系。在UML中,使用一条实线连接有关联关系的对象所属的类来表示对象之间的关联关系。而在程序设计语言中,通常采用将一个类的实例或实例引用作为另一个类的成员的方式来实现对象之间的关联关系。5.1.2类(或对象)之间的关系图5-3关联的UML表示关联可以是有方向的,也可以是无方向的。因此,关联可以分成单向关联和双向关联。图5-3给出了类关联的UML表示。其中,(a)给出了双向关联,(b)给出了单向关联的UML表示。双向关联的含义是相互关联的两个对象之间是可以互相访问的,即任何两个相互关联的对象之间可以互相访问;单向关联的含义则是相互关联的两个对象之间的访问则是单向的,如5.3(b)中的A类对象可以访问与之关联的B类对象,反之则不可以。5.1.2类(或对象)之间的关系2.关联关系(Association)关联(Association)关系是对象(或类)之间存在的结构性的关系,其确切的定义是:对于两个对象(或类)来说,如果在一个对象的内部可以访问另一个对象的所有属性和方法时,我们就可以称这两个对象(或类)之间存在着关联关系。如汽车和轮胎、师傅和徒弟、班级和学生之间的关系等。显然,关联关系必然是一种依赖关系。在UML中,使用一条实线连接有关联关系的对象所属的类来表示对象之间的关联关系。而在程序设计语言中,通常采用将一个类的实例或实例引用作为另一个类的成员的方式来实现对象之间的关联关系。5.1.2类(或对象)之间的关系关联角色(Associationrole)可以看成是对参与关联的对象(或实体)在关联中所充当的角色。一般情况下,每个关联都应该含有若干个关联角色。描述关联关系时,通常需要为关联命名和关联角色命名。关联名字用于标识实体间的某种特定联系。关联角色名则表示关联对象在与其关联的对象中所承担的职责。一个关联关系通常包含两个关联角色,角色名可以使类(对象)之间的关系更加明确。5.1.2类(或对象)之间的关系关联角色的多重性表示这种关联角色在与之关联的对象中存在的数量关系。同一个关联的两个关联角色可以有不同的多重性。多重性一般可用一个数值、一个变量或一个范围值来加以表示。其中,*表示多的,其可取值不固定。常见的多重性表示包括:0、1、*、0..1、0..*和1..*等多种形式。将关联角色映射到实现域时,关联角色(包括关联角色名及其多重性)将被映射成对应的类或对象的一个属性。5.1.2类(或对象)之间的关系例如,图5-4中的关联。其中,关联的名字为employ,表示两个对象之间的聘用关系。关联两端的关联角色名分别为cop和staff,其中cop表示Corporation对象在Staffmember对象中所充当的角色名。同样,staff表示Staffmember对象在Corporation对象中所充当的角色名。图5-4关联的角色名和多重性5.1.2类(或对象)之间的关系阅读下列程序代码,会更容易地理解图5-4中各个模型元素或符号的意义。publicclassCorporation{privatestringID;privatestringName;publicStaffmemberstaff[];publicCorporation(){}publicCorporation(stringid,stringname){ID=id;Name=name;}publicAddStaffmember(Staffmemberm){staff.Add(m);}}publicclassStaffmember{privatestringID;privatestringName;publicCorporationcop;publicStaffmember(){}publicStaffmember(stringid,stringname,Corporationc){ID=id;Name=name;Cop=c;}}5.1.2类(或对象)之间的关系最后一个问题是关联关系的实例化问题,实例化具有关联关系时,不仅要实例化相关对象,还需要建立起关联对象之间的链接。假设系统中的Corporation对象为Corporation(001,“阳光股份”),其员工包括:张三、“李四”和“王二”等三个员工。此时,这组对象及其关联关系的实例化过程可以描述如下。Corporationc=newCorporation(001,“阳光股份”);//实例化Corporation对象;Staffmembers1=newStaffmember(“01”,“张三”,c);//实例化Staffmember对象;Staffmembers2=newStaffmember(“02”,“李四”,c);Staffmembers3=newStaffmember(“03”,“王二”,c);c.AddStaffmember(s1);c.AddStaffmember(s2);c.AddStaffmember(s3);5.1.2类(或对象)之间的关系图5-5中的对象图给出了上述过程实例化出来的关联对象实例。

图5-5图5-4中关联的一个实例3.聚合与组合在关联关系中,聚合(Aggregation)关系描述的则是对象之间具有的一种整体和部分之间的关系。如果一个对象是另一个对象的一个组成部分,那么称两个对象之间的关系是一种聚合关系。特别地,当这两个对象具有相同的生命周期时,又称这个聚合关系为组合(Composition)关系。聚合关系可以用一个带有空心菱形框的直线表示,菱形框一端是整体对象,有时也称其为聚合,另一端是部分对象。当聚合关系也是一个组合关系时,这个表示中的菱形框就换成实心的菱形框表示。3.聚合与组合图5-6给出了表示了聚合和组合关系的UML类图表示。图5-6聚合和组合关系的类图表示需要特别指出的是,聚合关系是一种特殊的关联关系,关联关系的一切特性都适用于聚合关系。与一般的关联关系不同的是,聚合关系中,部分对象是整体对象的一个组成部分,它(或它们)承担了整体对象所承担的某个(或某些)系统责任,是整体对象所固有不可分割的一个组成部分。组合关系则强调了部分对象与整体对象之间联系的强度,强调了部分对象与整体对象在生存期方面的紧密联系。建模时,将关联关系建模成组合或聚合需要关注的是两个对象的系统责任与生存期之间的关系。3.聚合与组合在关联关系中,聚合(Aggregation)关系描述的则是对象之间具有的一种整体和部分之间的关系。如果一个对象是另一个对象的一个组成部分,那么称两个对象之间的关系是一种聚合关系。特别地,当这两个对象具有相同的生命周期时,又称这个聚合关系为组合(Composition)关系。聚合关系可以用一个带有空心菱形框的直线表示,菱形框一端是整体对象,有时也称其为聚合,另一端是部分对象。当聚合关系也是一个组合关系时,这个表示中的菱形框就换成实心的菱形框表示。3.聚合与组合例如,图5-6中,产品和零件之间就是一种整体与部分之间的关联关系,每个产品所具有的各项功能通常是由其各个零件及其相互协作承担的,二者是密不可分的。从生存期的角度来看,零件损坏时,只要跟换一个同类型的零件后,产品仍然可以继续使用。此时,产品和零件并不具备相同的生存期。因此,我们使用聚

温馨提示

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

评论

0/150

提交评论