AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > 软件工程

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

51自学网 2015-09-08 http://www.51zixue.net

 

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

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

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

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

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

  即类B包含类A的指针;

  而组合可表示为:

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

  即类B包含类A的对象。

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

 
图3.4 聚合和组合

点击放大此图片
图3.5 银行管理系统类图

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

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

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

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

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

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

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

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


图3.6 软件无线电核心框架

  接下来,我们给出建立类图的步骤:

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

  类的识别是一个需要大量技巧的工作,寻找类的一些技巧包括:名词识别法;根据用例描述确定类;使用CRC分析法;根据边界类、控制类、实体类的划分来帮助分析系统中的类;参考设计模式确定类;对领域进行分析或利用已有领域分析结果得到类;利用RUP中如何在分析和设计中寻找类的步骤。

  (2)确定类,明确类的含义和职责、确定属性和操作;

  (3)确定类之间的关系。

  3.2对象图

  对象图显示某时刻对象和对象之间的关系,是类图的变化,一个对象图可看成一个类图的示例(example),对象图表示的是类的对象实例而不是真实的类。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。

  对象图中并无新的表示法(除了对象名下要加下划线以外),与类图中的表示法一样,可以认为,只有对象而无类的类图就是一个“对象图”。


图3.7 对象图

  在对象图中,对象名可以有三种表示形式:

  (1)对象名:类名

  (2):类名

  (3)对象名

  图3.7中的是第1种,即“对象名:类名”格式。

  实质上,对象图几乎很少被用到(它包含的信息量太小,仅仅用于呈现某一时刻对象的值,对软件的设计几乎没有太大的帮助),使用远没有类图广泛。我们可以这样类比类图和对象图之间的关系:

  “动词+名词”构成“动名词”,例如动词“爱”+名词“国”构成动名词“爱国”。

  我们可以看到,“动名词”的信息量很大,很抽象,而作为动名词的例子的“爱国”信息量很小,具体程度很高。

  动名词 ―――――> 类图

  爱国  ―――――> 对象图

  把“动名词”看作类图,把“爱国”看作对象图,很明显,对象图就是类图的一个example而已。

 
 

上一篇:统一建模语言UML轻松入门之用例  下一篇:返回列表