SoftEng 版 (精华区)

发信人: alai (alai), 信区: SoftEng
标  题: 标准建模语言UML的静态建模机制(三)
发信站: 紫 丁 香 (Sat Apr  8 04:08:00 2000), 转信

(接上期)
2. 类图、对象图和包
    数千年以前,人类就已经开始采用分类的方法有效地简化复杂问题,帮助人们了解客观
世界。在面向对象建模技术中,我们使用同样的方法将客观世界的实体映射为对象,并归纳
成一个个类。类(Class)、对象(Object)和它们之间的关联是面向对象技术中最基本的元素
。对于一个想要描述的系统,其类模型和对象模型揭示了系统的结构。在UML中,类和对象
模型分别由类图和对象图表示。类图技术是OO方法的核心。

(1) 类图
    类图(Class Diagram)描述类和类之间的静态关系。与数据模型不同,它不仅显示了信
息的结构,同时还描述了系统的行为。类图是定义其它图的基础。在类图的基础上,状态图
、合作图等进一步描述了系统其他方面的特性。

(2) 类和对象
    对象(Object)与我们对客观世界的理解相关。我们通常用对象描述客观世界中某个具
体的实体。所谓类(Class)是对一类具有相同特征的对象的描述。而对象是类的实例(Inst
ance)。建立类模型时,我们应尽量与应用领域的概念保持一致,以使模型更符合客观事实,
易修改、易理解和易交流。

    类描述一类对象的属性(Attribute)和行为(Behavior)。在UML中,类的可视化表示为一
个划分成三个格子的长方形(下面两个格子可省略)。

    
    类的获取和命名 最顶部的格子包含类的名字。类的命名应尽量用应用领域中的术语,
应明确、无歧义,以利于开发人员与用户之间的相互理解和交流。类的获取是一个依赖于人
的创造力的过程,必须与领域专家合作,对研究领域仔细地分析,抽象出领域中的概念,定义
其含义及相互关系,分析出系统类,并用领域中的术语为类命名。一般而言,类的名字是名词
。 
类的属性 中间的格子包含类的属性,用以描述该类对象的共同特点。该项可省略。

属性的选取应考虑以下因素:

*原则上来说,类的属性应能描述并区分每个特定的对象;
*只有系统感兴趣的特征才包含在类的属性中;
*系统建模的目的也会影响到属性的选取。
  根据图的详细程度,每条属性可以包括属性的可见性、属性名称、类型、缺省值和约束特
性。

UML规定类的属性的语法为:
可见性 属性名 : 类型 = 缺省值 {约束特性}
   
   不同属性具有不同可见性。常用的可见性有Public、Private和Protected三种,在UML中
分别表示为"+"、"-"和"#"。

   类型表示该属性的种类。它可以是基本数据类型,例如整数、实数、布尔型等,也可以是
用户自定义的类型。一般它由所涉及的程序设计语言确定。

   约束特性则是用户对该属性性质一个约束的说明。例如"{只读}"说明该属性是只读属性

   类的操作(Operation) 该项可省略。操作用于修改、检索类的属性或执行某些动作。
操作通常也被称为功能,但是它们被约束在类的内部,只能作用到该类的对象上。操作名、
返回类型和参数表组成操作界面。

UML规定操作的语法为:
可见性 操作名 (参数表) : 返回类型 {约束特性}

    类图描述了类和类之间的静态关系。定义了类之后,就可以定义类之间的各种关系了。

(3) 关联关系

    关联(Association)表示两个类之间存在某种语义上的联系。例如,一个人为一家公司
工作,一家公司有许多办公室。我们就认为人和公司、公司和办公室之间存在某种语义上的
联系。在分析设计的类图模型中,则在对应人类和公司类、公司类和办公室类之间建立关联
关系。
    
关联的方向 关联可以有方向,表示该关联单方向被使用。关联上加上箭头表示方向,在UML
            中称为导航(Navigability)。我们将只在一个方向上存在导航表示的关联,称
            作单向关联 ( Uni-directional Association ),在两个方向上都有导航表示
            的关联,称作双向关联 ( Bi-directional Association )。 

关联的命名 既然关联可以是双向的,最复杂的命名方法是每个方向上给出一个名字,这样
            的关联有两个名字,可以用小黑三角表示名字的方向为关联命名有几种方法,
            其原则是该命名是否有助于理解该模型。

角色 关联两头的类以某种角色参与关联。如果在关联上没有标出角色名,则隐含地用类的
      名称作为角色名。角色还具有多重性(Multiplicity),表示可以有多少个对象参与该
      关联。多重性表示参与对象的数目的上下界限制。

关联类 一个关联可能要记录一些信息,可以引入一个关联类来记录。图3是在图2的基础上
       引入了关联类。关联类通过一根虚线与关联连接。

聚集和组成 聚集(Aggregation)是一种特殊形式的关联。聚集表示类之间的关系是整体与
            部分的关系。一辆轿车包含四个车轮、一个方向盘、一个发动机和一个底盘,
            这是聚集的一个例子。在需求分析中,"包含"、"组成"、"分为……部分"等经
            常设计成聚集关系。聚集可以进一步划分成共享聚集(Shared Aggregation)
            和组成。例如,课题组包含许多成员,但是每个成员又可以是另一个课题组的
            成员,即部分可以参加多个整体,我们称之为共享聚集。另一种情况是整体拥
            有各部分,部分与整体共存,如整体不存在了,部分也会随之消失,这称为组成
            (Composition)。例如,我们打开一个视窗口,它就由标题、外框和显示区所组
            成。一旦消亡则各部分同时消失。在UML中,聚集表示为空心菱形,组成表示为
            实心菱形。需要注意的是,一些面向对象大师对聚集的定义并不一样。大家应
            注意其他面向对象方法与UML中所定义的聚集的差别。

(4) 继承关系
    人们将具有共同特性的元素抽象成类别,并通过增加其内涵而进一步分类。例如,动物
可分为飞鸟和走兽,人可分为男人和女人。在面向对象方法中将前者称为一般元素、基类元
素或父元素,将后者称为特殊元素或子元素。继承(Generalization)定义了一般元素和特殊
元素之间的分类关系。在UML中,继承表示为一头为空心三角形的连线。

在UML定义中对继承有三个要求:
*特殊元素应与一般元素完全一致,一般元素所具有的关联、属性和操作,特殊元素也都隐含
 性地具有;
*特殊元素还应包含额外信息;
*允许使用一般元素实例的地方,也应能使用特殊元素。

(5) 依赖关系
    有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称
元素Y依赖(Dependency)于元素X。在类中,依赖由各种原因引起,如:一个类向另一个类发消
息;一个类是另一个类的数据成员;一个类是另一个类的某个操作参数。如果一个类的界面
改变,它发出的任何消息可能不再合法。





 










--
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.224.232]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.684毫秒