0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用UML(图)表示类之间的6种关系

jf_78858299 来源:技术工作笔记 作者:HarmonySpring 2023-05-05 10:18 次阅读

java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强

1. 依赖(Dependence)

图片

依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。类上面的图例中:People类依赖于Book类和Food类,Book类和Food类是作为类中方法的参数形式出现在People类中的。

public class People{   
    //Book作为read方法的形参   
     public void read(Book book){   
        System.out.println(“读的书是”+book.getName());   
    }   
}

2.关联(Association)图片图片图片

单向关联:

图片

双向关联:

图片

对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。关联关系分为单向关联和双向关联。在java中,单向关联表现为:类A当中使用了类B,其中类B是作为类A的成员变量。双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。

public class Son{
   //关联关系中作为成员变量的类一般会在类中赋值
    Father father = new Father();
    public void getGift(){
        System.out.println(“从”+father.getName()+”获得礼物”);
    }
}

public class Father{
    Son son = new Son();
    public void giveGift(){
        System.out.println(“送给”+son.getName()+“礼物”);
    }
}

3.聚合(Aggregation)图片

图片

聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

public class People{
    Car car;
    House house; 
    //聚合关系中作为成员变量的类一般使用set方法赋值
     public void setCar(Car car){
        This.car = car;
    }
    public void setHouse(House house){
        This.house = house;
    }

    public void driver(){
        System.out.println(“车的型号:”+car.getType());
    }
    public void sleep(){
        System.out.println(“我在房子里睡觉:”+house.getAddress());
    }
}

4.组合(Composition)图片

图片

相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。在下图的例子中,People与Soul、Body之间是组合关系,当人的生命周期开始时,必须同时有灵魂和肉体;当人的生命周期结束时,灵魂肉体随之消亡;无论是灵魂还是肉体,都不能单独存在,他们必须作为人的组成部分存在。

Public class People{
    Soul soul;
    Body body; 
    //组合关系中的成员变量一般会在构造方法中赋值
     Public People(Soul soul, Body body){ 
        This.soul = soul;
        This.body = body;
    }

    Public void study(){
        System.out.println(“学习要用灵魂”+soul.getName());
    }
    Public void eat(){
        System.out.println(“吃饭用身体:”+body.getName());
    }
}

5.继承(Generalization)图片

图片

继承表示类与类(或者接口与接口)之间的父子关系。在java中,用关键字extends表示继承关系。UML图例中,继承关系用实线+空心箭头表示,箭头指向父类。

6.实现(Implementation)图片

图片

表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2954

    浏览量

    104513
  • UML
    UML
    +关注

    关注

    0

    文章

    122

    浏览量

    30842
  • 面向对象
    +关注

    关注

    0

    文章

    64

    浏览量

    9976
收藏 人收藏

    评论

    相关推荐

    UML详解

    UML
    电子学习
    发布于 :2023年01月14日 10:12:47

    UML状态和Petri网络在测试用例生成的应用

    【作者】:陈志德;曾凡平;【来源】:《小型微型计算机系统》2010年03期【摘要】:分析和研究UML状态、扩展状态机和Petri网在测试用例生成的特点,提出结合三者优势的测试用例
    发表于 04-24 09:52

    编写电视TV,UML和说明

    编写电视TV,UML和说明如下:注意:(1)电视只有在打开的状态下才可以调音量和设置新频道;(2)设置音量和频道时,应该在规定的范围,如音量值为1-7。解题要求:编写测试
    发表于 10-29 06:09

    基于UML的考试管理系统设计

    文中着重解决UML在完成各阶段任务中的应用、分析设计流程等问题,就与时序两者设计次序进行探讨。UML有利于各类人员
    发表于 12-22 17:14 35次下载
    基于<b class='flag-5'>UML</b>的考试管理系统设计

    时序关系

    和时序是在软件系统设计中直接和程序代码相关联的,准确地说,程序代码是由直接产生,而时
    发表于 10-29 11:21 6773次阅读
    时序<b class='flag-5'>图</b>和<b class='flag-5'>类</b><b class='flag-5'>图</b>的<b class='flag-5'>关系</b>

    UML可向OWL转换原理

    本体语言是OWL,其体系是开放的,它被定义成3 个表达能力递增的子语言OWL Lite,OWL DL与OWL Full。其中OWL DL 的表达能力较强,推理支持能力也较强。UML 是软件工程技术中一标准的建模语言,被广大的软件工程技术人员所接受与使用。如何对
    发表于 10-31 16:05 4次下载
    <b class='flag-5'>UML</b><b class='flag-5'>类</b>可向OWL<b class='flag-5'>类</b>转换原理

    Uml建模三模型_uml建模的步骤

    描述系统内部对象及其关系的静态结构。模型由构建,图中节点表示
    的头像 发表于 09-25 09:51 1.6w次阅读
    <b class='flag-5'>Uml</b>建模三<b class='flag-5'>种</b>模型_<b class='flag-5'>uml</b>建模的步骤

    UML之间关系

    UML中描述对象和之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Gene
    的头像 发表于 09-25 09:57 3835次阅读
    <b class='flag-5'>UML</b><b class='flag-5'>类</b><b class='flag-5'>图</b><b class='flag-5'>之间</b>的<b class='flag-5'>关系</b>

    什么是UML?常见的UML工具有哪些?

    UML是统一建模语言,又称标准建模语言。是对软件设计开发过程可视化建模的一语言。多应用在一些软件系统工程上,有时在应用在机械系统和业务流程上有所应用。这种模型通常以图表方式呈现。 UML
    的头像 发表于 06-22 14:10 4591次阅读
    什么是<b class='flag-5'>UML</b><b class='flag-5'>图</b>?常见的<b class='flag-5'>UML</b><b class='flag-5'>图</b>工具有哪些?

    UML简介与详解

    本篇介绍了UML的基础知识,包括26关系
    的头像 发表于 05-05 09:07 3990次阅读
    <b class='flag-5'>UML</b>简介与<b class='flag-5'>类</b><b class='flag-5'>图</b>详解

    UML相关基本知识介绍

    UML - Unified modeling language UML (统一建模语言),是一用于软件系统分析和设计的语 言工具, 用于帮助软件开发人员进行思考和记录思路的结果。简单说,UM
    的头像 发表于 05-05 10:22 622次阅读
    <b class='flag-5'>UML</b>相关基本知识介绍

    UML学习笔记

    表示之间的联系,如关联、依赖、聚合等,也包括的属性和操作,
    的头像 发表于 05-05 10:26 686次阅读
    <b class='flag-5'>UML</b><b class='flag-5'>图</b>学习笔记

    UML图符号等详细介绍

    UML中描述对象和之间相互关系的方式包括:依赖(Dependency),关联(Association),聚合(Aggregation),组合(Composition),泛化(Gene
    的头像 发表于 05-05 10:41 988次阅读
    <b class='flag-5'>UML</b><b class='flag-5'>类</b>图符号等详细介绍

    解析UML和时序

    这里不会将UML的各种元素都提到,我只想讲讲图中各个之间关系; 能看懂图中各个
    的头像 发表于 05-05 11:03 645次阅读
    解析<b class='flag-5'>UML</b><b class='flag-5'>类</b><b class='flag-5'>图</b>和时序<b class='flag-5'>图</b>

    一文带你读懂UML

    UML表示法的主要内容可由下列五(共9来定义: (1)用例(Use Case
    的头像 发表于 05-05 11:19 643次阅读