科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道统一建模语言UML轻松入门之类和对象

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

类是一种对本质相同事物的抽象,人类软件开发技术的发展历史,就是还事物以本源的历史

作者:宋宝华 来源:天极软件 2007年10月13日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

(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而已。
 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章