类和类之间的关系

举报
chenyu 发表于 2021/07/26 23:53:27 2021/07/26
【摘要】 一、类和类之间的关系 UML类图中,常见以下几种关系: 1、泛化(Generalization)  是一种继承关系,比如动物类和老虎类,老虎继承动物,子类如何特化父类的所有特征和行为  箭头指向:带三角箭头的实线,箭头指向父类  我们使用类图如下 代码表示如下 Class Animal {}Class Tiger extends...

一、类和类之间的关系

UML类图中,常见以下几种关系:

1、泛化(Generalization)

 是一种继承关系,比如动物类和老虎类,老虎继承动物,子类如何特化父类的所有特征和行为

 箭头指向:带三角箭头的实线,箭头指向父类

 我们使用类图如下

代码表示如下


  
  1. Class Animal {}
  2. Class Tiger extends Animal {}

 

 

 

2、实现(Realization)

 类与接口的关系,类是接口所有特征和行为的实现

 箭头指向:带三角箭头的虚线,箭头指向接口

 我们使用类图如下

  代码表示如下


  
  1. interface A {}
  2. class B implement A {}

 

 

 

3、关联(Association)

是一种拥有(has)的关系,一个类的成员变量是另一个类的实例对象,可以双向的也可以是单向

箭头指向:带普通箭头的实心线,指向被拥有者 

类图如下,表示A类关联B类

代码表示如下


  
  1. class B {}
  2. class A {
  3. private B b;
  4. }

 

 

 

4、依赖(Dependency)

是一种使用(use)的关系,即一个类的实现需要另一个类的协助,一般不使用双向的互相依赖.

箭头及指向:带箭头的虚线,指向被使用者

类图如下,这里表示A依赖于B

   但是这里需要注意,依赖一般可以通过形式参数局部变量、静态方法的调用、返回值来表示

  • 形式参数代码如下
    
        
    1. class B {}
    2. class A {
    3. public A() {}
    4. public void method(B b) {}
    5. }
  • 局部变量代码如下,一般指方法里面的局部变量
    
        
    1. class B {}
    2. class A {
    3. public A() {}
    4. public void method() {
    5. B b = new B();
    6. }
    7. }
  • 静态方法的调用代码如下
    
        
    1. class B {
    2. public static void staticMethod() {}
    3. }
    4. class A {
    5. public A() {}
    6. public void method() {
    7. B.staticMethod();
    8. }
    9. }
  • 返回值代码如下
    
        
    1. class B {}
    2. class A {
    3. public A() {}
    4. public B method() {
    5. return null;
    6. }
    7. }

 

5、聚合(Aggregation)

 整体与部分的关系,表示聚合在一起,部分可以离开整体而单独存在,车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法一样,须考察具体的逻辑关系。

箭头及指向:带空心菱形的实心线,菱形指向整体

代码实现和上面的关联是一样的。

 

 

6、组合(Composition)

是整体与部分的关系,但部分不能离开整体而单独存,比如人的肺和人体,肺不能离开人单独存在,有人肺在人体才能存活

箭头指向:带实心菱形的实线,菱形指向整体

组合关系是关联关系的一种,是比聚合关系还要强的关系

类图如下

代码实现和上面的关联是一样的。

 

 

 

二、依赖和关联之间的区别

关联是“HAS”关系,依赖是“USE”关系
A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。
A类依赖B类,指的是B的对象作为A类的方法形式参数存在,称为“use”关系。一般也包括函数参数、局部变量、返回值类型和静态方法调用这四种场景。
生命周期不同
如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。
如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。

 

 

三、关联和组合和聚合之间的关系

组合和聚合都是关联关系的一种,只不够 组合 > 聚合 > 关联

 

 

 

 

四、各种关系的强弱顺序

依赖 < 关联 < 聚合 < 组合 <  实现 = 泛化(继承)

 

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/104164112

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。