你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

类图和对象图

2022/9/7 8:06:57

概述

定义
类图(Class Diagram)是用于显示一组类、接口以及它们之间关系的图。

类图用于对系统中的各种概念进行建模,并描绘出它们之间的关系,主要通过系统中的类以及类之间的关系来描述系统的静态结构。

主要模型元素:
类、接口、关系(依赖、泛化、关联和实现)。也可以创建包、注解等。
image

注意
类图是最复杂的图

类图

对象图

关系

类与类之间的关系最常见,通常有3种:

  • 关联(Association)
  • 泛化(Generalization)
  • 依赖(Dependency)
    类与接口之间的关系,一般有两种:
  • 实现(Realization)
  • 依赖(Dependency)

接口之间可以有关联和泛化关系,但较少用。

关联(Association)关系

定义
关联关系表示对象之间的结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接。

关联可以分为单向关联、双向关联。

关联关系靠近类的连接点被称为关联端,有名称、角色、可见性、多重性等特性。
image

种类
一元关联(自身关联)
一个类与自身的关联
image

二元关联
两个类之间的关联,最普通、最常用。

N元关联
是在3个或3个以上类之间的关联,用菱形向外引出关联路径。
不建议使用N元关联,大多数N元关联经过细致分析,都可转成二元关联 。

Rose、SU等工具不能直接表示N元关联;EA可以表示。

特性
除了连接类元素的关联路径之外,关联还有名称、角色、多重性、导航性、限定符等可选的特性。
名称
角色(role)
多重性(multiplicity)
构造型(stereotype)
导航性(navigation)
限定符(qualifier)
约束(constraint)

名称
一般使用一个动词或动词短语来命名关联,还可以在关联上标识阅读方向指示符,以消除阅读的歧义。
角色
是指在关联关系中,一个类通过关联对另外一个类所表现出来的职责。
如果在关联上没有标出角色名,则隐含的用类名作为角色名。

多重性
是指在关联关系中,一个类的一个实例与另一个类的多个实例相关。
多重性表示形式:minimum..maximum
image
分类
1:1 和 1:n 和 m:n

构造型
在关联关系中,也可以根据具体的语义设置一些构造型。

导航性
导航性根据方向不同,分为单向关联和双向关联。

限定符(qualifier)
限定符定义了被参考对象的一个属性,并可以将该属性作为直接访问被参考对象的关键字。

当需要使用某些信息作为关键字,来识别对象集合中的一个唯一对象时可以使用限定符,使用限定符的关联被称为受限关联。
限定符会影响关联的多重性。

解决查找问题
image

泛化(继承)关系

含义
继承
指一个类继承另一个类的属性和操作;
泛化
image
泛化就是指一般化的过程。
箭头:子类指向父类
image

例如:
image
可以描述为:

  • Horse类继承Mammal类
  • Mammal类泛化Horse类

一般描述的类被称作父类,特殊描述的类被称作子类。
泛化关系描述的是“is a kind of”的关系。
接口之间也可以存在泛化关系(子接口与父接口)。
image
继承的识别
image

泛化关系特点:
特殊事物完全符合一般事物;
在一般事物出现的地方,能够替换成特殊事物;
通过从特殊事物泛化或从一般事物特化可以创建泛化层次。
泛化可能跨越多个层次。一个子类的父类也可以是另一个父类的子类。

用途
自底向上的实例替换。可以使得子类的实例用于任何父类被声明使用的地方,实现多态。
尽管每个子类的
实现方法不同,
但外界调用方式
完全一样。

自顶向下的成员继承。可以让子类共享父类的属性和操作,实现继承。
public、protected属性和操作可被继承。
继承的方式有两种:单继承( C#、Java )和多继承(C++)。

image

小结
image

依赖和实现

类与接口可构成(依赖和实现)关系。

依赖关系

依赖表示两个类之间或类与接口之间的使用关系。
类A使用类B的信息和服务,并且提供者类B的变化可能会影响到客户类A。

分类

  • 客户类的操作使用提供者类的对象
  • 客户类的操作调用提供者类的操作
  • 客户类的操作需要提供者类的参数
  • 客户类的操作返回提供者类的对象

B类依赖于A类的常见原因:

  • A类是B类某数据成员的类型
  • A类是B类某方法中的局部变量或参数的类型
  • A类向B类发送消息,从而影响B类发生变化

表示

public class Train{
    public void move(){}
}

public class Person{
    public void move(Train train){
        train.move();
    }
}

类图表示为
依赖者-->被依赖者
image

实现关系

image
实现关系用来表示规格说明与实现之间的关系。

在类图中,实现关系主要用于接口与实现该接口的类之间。

一个类可以实现多个接口,一个接口也可以被多个类实现。

实现关系的两种表示法:

  • 当接口以带构造型的类符号表示时,用虚线三角箭头表示。

  • 当接口元素以小圆圈方式表示时,用实线表示。
    image
    image

约束
image

小结
image

聚合和组合

关联关系有两种非常重要的特殊形式:
聚合(Aggregation)关系
组合(Composition)关系

用于表示整体与部分的关系

聚合关系

聚合(聚集)描述的是部分和整体关系的关联,描述了“has a”的关系。

部分可独立于整体而存在,是松散的关联关系。

聚合(聚集)就像计算机和它的外围设备:
计算机只是很松散地和外部设备关联;
外围设备可有可无;
外围设备可以被其它计算机所共享。

表示
image

组合关系

组合(组成)关系是更强形式的聚合,描述了“contains a”的关系。

整体与部分一般具有同样的生存期,部分完全依赖于整体。

整体唯一地负责处理它的部分,包括创建和销毁。

组合(组成)就像是树和树叶:
一片树叶只能被一棵树所拥有;
一片树叶不能由几棵树所共享;
当树死去时,它的树叶也随之死去。

要求
image

不允许部分类游离于整体之外。

表示
image

异同点:

都是描述部分与整体关系的特殊关联。
聚合松散,组合紧密。
一个部分事物对象可以属于多个聚合对象,但一个部分事物对象仅能属于一个组合对象。
聚合的对象生命周期可以不同,但组合对象则是同存同亡。