RSS
热门关键字:
当前位置 : 主页>编程开发>软件工程>列表

统一建模语言UML轻松入门之类和对象

来源:我要研发网 作者: 时间:1970-01-01 点击:



同类相从,同声相应,固天之理也。——《庄子·渔父》

字串8

  类是一种对本质相同事物抽象,人类软件开发技术发展历史,就是还事物以本源历史,开发技术、名词越来越接近世界真实,“面向对象”、“类”就是这样产物。

字串1

  3.1类图

字串7

  在UML中,类图显示了一组类、接口、协作以及它们之间关系。在UML静态机制中类图是一个重点,它不但为设计人员所关心,更为实现人员所关注,建模工具也主要依据类图来产生代码(正向)工程。因此,类图在UML各种图中占据了相当重要地位。

字串8

  类

字串7

  在类图中类用矩形框来表示,它属性和操作分别列在分格中,若不需要表达详细信息时,分格可以省略。一个类可能出现在几个图中。同一个类属性和操作只在一种图中列出,在其他图中可省略。图3.1给出Student类和MFC中CObject类。

字串4

  图3.1类表示 字串8

  类间关系

字串9

  在类图中,除了需要描述单独名称、属性和操作外,我们还需要描述类之间联系,因为没有类是单独存在,它们通常需要和别类协作,创造比单独工作更大语义。在UML类图中,关系用类框之间连线来表示,连线上和连线端头处不同修饰符表示不同关系。类之间关系有继承(泛化)、关联、聚合和组合。 字串9


字串7

  (1)继承:指是一个类(称为子类)继承另外一个类(称为基类)功能,并增加它自己新功能能力,继承是类与类之间最常见关系。类图中继承表示方法是从子类拉出一条闭合、单键头(或三角形)实线指向基类。例如,图3.2给出了MFC中CObject类和菜单类CMenu继承关系。

字串6

  图3.2 类继承

字串8

  类继承在C 中呈现为:

字串8

  class B { }

字串3

  class A : public B{ }

字串8

  (2)关联:指是模型元素之间一种语义联系,是类之间一种很弱联系。关联可以有方向,可以是单向关联,也可以是双向关联。可以给关联加上关联名来描述关联作用。关联两端类也可以以某种角色参与关联,角色可以具有多重性,表示可以有多少个对象参与关联。可以通过关联类进一步描述关联属性、操作以及其他信息。关联类通过一条虚线与关联连接。对于关联可以加上一些约束,以加强关联含义。 字串9

  关联在C 中呈现为:

字串5

  class A{...} 字串3

  class B{ ...} 字串3

  A::Function1(B &b) //或A::Function1(B b) //或A::Function1(B *b)

字串5

  即一个类作为另一个类方法参数。 字串5

  (3)聚合:指是整体与部分关系。通常在定义一个整体类后,再去分析这个整体类组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。

字串7

  图3.3 类聚合

字串5


字串9

(4)组合:也表示类之间整体和部分关系,但是组合关系中部分和整体具有统一生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死关系。 字串2

  聚合和组合区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分关系比较弱,而组合比较强;聚合关系中代表部分事物对象与代表聚合事物对象生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物对象。 字串1

  我们用浅显例子来说明聚合和组合区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反,计算机和它外设之间就是聚合关系,因为它们之间关系相对松散,计算机没了,外设还可以独立存在,还可以接在别计算机上。在聚合关系中,部分可以独立于聚合而存在,部分所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用。

字串4

  在C 语言中,从实现角度讲,聚合可以表示为:

字串3

  class A {...}

字串1

  class B { A* a; .....}

字串4

  即类B包含类A指针; 字串2

  而组合可表示为: 字串1

  class A{...} 字串3

  class B{ A a; ...}

字串9

  即类B包含类A对象。

字串6

  准确UML类图中用空心和实心菱形对聚合和组合进行了区分。 字串9

  图3.4 聚合和组合

字串6


字串7

  图3.5 银行管理系统类图 字串9

  图3.5给出了一个典型银行管理系统类图,基本上一看就懂:

字串7

  银行类聚合了账号库(AccountSet)、客户库(EmployeeSet)和员工库(EmployeeSet);

字串6

  账号库中包含了n个账号(Account)、客户库中包含了n个客户(Employee),员工库包含了n个员工(Employee);

字串5

  员工类和客户类都继承自人(Person)类,而员工类中又有一种特殊员工,即员工管理者类(EmployeeAdmin);

字串4

  账号类和客户类之间体现出一种关联关系; 字串2

  单独元素PersonSex定义了枚举类,其中包括Male和Female两种性别。 字串4

  我们再给出一个类图实例(图3.6),它来源于软件无线电SCA(软件通讯架构)标准。软件无线电技术是目前电信产品、军用电台中研究大热门,在其定义SCA体系中,核心框架即以类图形式呈现,它定义了应用程序基本框架和标准控制服务接口。 字串4

  实际上,软件无线电核心框架即由类以及类之间继承、关联和聚合关系组成。 字串2

  图3.6 软件无线电核心框架

字串1

  接下来,我们给出建立类图步骤: 字串6

  (1)研究分析问题领域确定系统需求;

字串2

  类识别是一个需要大量技巧工作,寻找类一些技巧包括

最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
相关文章