【JavaSE】类与类的关系--UML

类(对象/接口)之间的关系 -- UML类图展现



2019-07-14  14:37:19  by冲冲

在面向对象程序设计时,类与类之间的关系主要分为:继承,实现,依赖,关联,聚合,组合等6种关系。

各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚集 > 关联 > 依赖 。其中前两种理解很简单,重点是比较容易混淆的后四种。

1. 继承 -- "a is kind of A"

继承(Generalization):亦称泛化,表示一般与特殊的关系。继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加自己的新功能。

【箭头指向】带三角箭头的实线,箭头指向父类。

                               

1 class Athlete {...}
2 class BallAthlete extends Athlete {...}
3 class FootBallAthlete extends BallAthlete {...}
4
5 interface Action {...}
6 interface Speak extends Action {...}

2. 实现 -- "A realize Ia,Ib..."

实现(realization):指的是一个class类实现interface接口(可以是多个)的功能。

【箭头指向】带三角箭头的虚线,箭头指向接口。

1 interface Speak {...}
2 interface Run {...}
3 interface Jump {...}
4
5 class Athlete implements Speak,Run,Jump {....}

3. 依赖 -- "A use B"

依赖(dependency):指的是类A调用类B。类B的变化会影响到类A,但是类A的变化不会影响到类B。表示一种使用关系,一个类的功能实现需要另一个类协助。

【代码表现】类B是类A的局部变量、类B是类A的方法参数、类A调用类B的静态方法。

【特点】依赖关系具有偶然性,临时性,是比较弱的关系。

【例子】比如,我要过河,需要调用一只船,我和船的关系就是依赖关系。

【箭头指向】带箭头>的虚线,箭头指向被使用者。

1 class Ball {...}
2
3 class BallAthlete {
4   public void sport(Ball ball){...}
5 }

4. 关联 -- "A has B"

关联(association):指的是类B作为类A的类属性/成员变量。表示一种拥有关系,一个类知道另一个类的属性和方法。

【代码表现】类B是类A的类属性/成员变量。

【特点】关联关系属于强依赖关系,具有强烈性,长期性。

【箭头指向】带箭头>的实线,箭头指向被拥有者。

【多重性关联】关联的两端都存在一个基数,表示该关联类可以有几个实例。0..1表示可以有0或1个实例;0..*表示对实例的数目没有限制;1表示只能有一个实例;1..*表示至少有一个实例。

①单向关联--使用单箭头

1 public class BallAthlete {
2     private Price price;
3     ......
4 }
5
6 public class Price {
7     ......
8 }

②双向关联--使用双箭头或者不使用箭头

1 public class Teacher {
2     private Student students[];
3     ......
4 }
5
6 public class Student {
7     private Teacher teachers[];
8     ......
9 }

③自身关联--使用单箭头,构成自回路

特点:类的属性对象类型为该类本身。

1 public class Node {
2     private Node subNode;
3     ……
4 }

5. 聚合 -- "A has B"

聚合(Aggregation):表示整体与部分的关系,部分可以离开整体单独存在。

【代码表现】类B是类A的类属性/成员变量。

【特点】聚合关系属于关联关系的一种,但是比关联关系更强。语法上无法区分聚合关系和关联关系,必须根据具体逻辑区分。

【例子】车和车轮是整体与部分的关系,但是车轮离开车还是可以独立存在的。

【箭头指向】带空心菱形的实线,菱形指向整体。

 1 public class Car {
 2     private Engine engine;
 3
 4     //构造注入
 5     public Car(Engine engine) {
 6         this.engine = engine;
 7     }
 8
 9     //设值注入
10     public void setEngine(Engine engine) {
11         this.engine = engine;
12     }
13     ……
14 }
15
16 public class Engine {
17     ……
18 } 

6. 组合 -- "A contains B"

组合(Composition):表示整体与部分的关系,部分不能离开整体单独存在。

【代码表现】类B是类A的类属性/成员变量。

【特点】组合关系属于关联关系的一种,但是比聚合关系更强。它要求普通的聚合关系中代表整体的对象,负责代表部分的对象的生命周期。

【例子】公司和部门是整体和部分的关系,但是没有公司,部门也就不存在。

【箭头指向】带实心菱形的虚线,菱形指向整体。

 1 public class Head {
 2     private Mouth mouth;
 3     public Head() {
 4         mouth = new Mouth(); //实例化成员类
 5     }
 6     ……
 7 }
 8
 9 public class Mouth {
10     ……
11 } 

原文地址:https://www.cnblogs.com/yadiel-cc/p/11072776.html

时间: 2024-11-05 18:35:39

【JavaSE】类与类的关系--UML的相关文章

转 UML类图几种关系的总结

UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) [泛化关系]:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为.例如:老虎是动物的一种,即有老虎的特性也有动物的共性. [箭头指向]:带三角箭头的实线,箭头指向

UML类图符号 各种关系说明以及举例

UML类图符号 各种关系说明以及举例 UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等. 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A:类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述.uml中用带箭头的虚线表示D

[转发]UML类图符号 各种关系说明以及举例

UML中描述对象和类之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Generalization),实现(Realization)等. 依赖(Dependency):元素A的变化会影响元素B,但反之不成立,那么B和A的关系是依赖关系,B依赖A:类属关系和实现关系在语义上讲也是依赖关系,但由于其有更特殊的用途,所以被单独描述.uml中用带箭头的虚线表示Dependency关系,箭头指向被依赖

UML 类与类之间的四大关系的一些图标及代码含义

UML 类与类之间的四大关系的一些图标及代码含义 另一个版本: 关联:连接模型元素及链接实例,用一条实线来表示: 依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示: 聚合:表示整体与部分的关系,用一条实线加空心菱形来表示: 组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示: 泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示: 实现:表示类与接口的关系,用一条虚线加空心箭头来表示:类与类之间存在以下关系:(1)泛化(Generalization)(2)关

java 类与类之间的关系 及uml图

类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(association) 聚合关系(aggregation) 合成关系 (compostion) 依赖关系 (dependency) 1.泛化(Generalization)[泛化]表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系.一般化的关系是从子类指向父类的,与继承或实现的方法相反.

UML类图简单学习 各种对象、关系UML表示法

<大话设计模式>上面的UML类图: 类的UML表示 动物 的矩形框 表示是一个类. 类图分为三层,第一层显示类的名称,如果是抽象类,则用斜体表示:第二层是类的特性,通常就是类的字段和属性:第三层显示类的操作,通常就是方法或行为. 前面的“+”表示是public,“-”表示是private,“#”表示是protected. 接口的UML表示 接口的UML表示与类图的区别主要是顶端有<<interface>>显示,第一行是接口名称,第二行是接口的方法. 接口还有另外一种表示

设计模式之UML类图的常见关系

设计模式之UML类图的常见关系 本文来自转载 烧点饭博客 本篇会讲解在UML类图中,常见几种关系: 泛化(Generalization),依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition). 1.泛化关系 泛化关系是继承或实现的关系,是is a关系,具体表现为类与类的继承,接口与接口的继承,类对接口的实现关系. 2.依赖关系 依赖关系表示为一个类使用另一个类,这种使用关系是具有偶然性的.临时性的.非常弱的,一个类的变化会影

uml描述类与类之间的关系

工作时培训的时候公司同事讲过UML,当时没怎么听,后在在看相关技术书籍的时候,发现用到还不少,于是恶补了些.UML体系庞杂,非十天半月可以掌握,但是作为简单的工具使用,去看清楚系统的内在逻辑还是可以速成的.(非设计系统),股票市场是一场拼图游戏,而UML也可以作为拼图工具去参与面向对象体系软件设计的! 废话不多说,进入正题. 先介绍几款画UML的工具,三大知名VISIO,RationalRose,PowerDesign不多说,个人喜欢用开源的,一是免费,二是通常体积较小,运行起来比较快.我用的是

UML类图画法及类之间几种关系

文章目录如下: 一.类图画法 二.类之间的几种关系:泛化(Generalization).实现(Realization).关联(Association)(又分一般关联.聚合(Aggregation).组合(Composition)).依赖(Dependency) 一.类图画法 1.  类图的概念 A.显示出类.接口以及它们之间的静态结构和关系 B.用于描述系统的结构化设计 2.  类图的元素 类.接口.协作.关系,我们只简单介绍一下这四种元素. 同其他的图一样,类图也可以包含注解和限制. 类图中