设计模式中类的关系

类与类的表示关系 一 关联关系 关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。先介绍一般关联。 关联又可以分为单向关联,双向关联,自关联。 1 单向关联 在UML类图中单向关联用一个带箭头的实线表示。上图表示每个顾客都有一个地址,这通过让Customer类持有一个类型为Address的成员变量类实现。 2 双向关联 从上图中很容易看出,所谓的双向关联就是双方各自持有对方类型的成员 阅读详情

作者:卡奴达摩

原文地址:http://blog.youkuaiyun.com/zhengzhb/article/details/7187278


在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中继承使用extends关键字,实现使用implements关键字,很直观。就不代码演示了。



【简易设计模式02】UML中的类图关系及类图符号表示法 总第54篇在第53篇中,我们已经对设计模式进行了系统性的介绍,为了更好地理解设计模式,本文将对UML(Unified Modeling Language) 描述的类图关系进行详细地介绍,并对其相应的符号表示方法进行归纳。1.面向对象中的类间关系在进行面向对象系统设计时,我需要根据系统的需求来抽象出一些类,并设计类与类之间的关系,这就是我们常说的业务建模。设计优良的类间关系是我们实现“高内聚、低耦合... 阅读详情

相关推荐

java做的开心农场

基于java的课程设计,有完整的代码和相关注释,并配有课设文档,拿来直接用,绝对ok! 还可以关注我,这里有很多课设、毕业设计资源!

java类关系图_类图和对象图

类图的概念一、概述类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalizat...

weixin_42110533的博客 3254

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

java关系图_Java类之间的关系图_动力节点Java学院整理

Java类之间的关系图在Java以及其他的面向对象设计模式中,类与类之间主要有6种关系,他们分别是:依赖、关联、聚合、组合、继承、实现。他们的耦合度依次增强。1.依赖(Dependence)依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用...

weixin_42314860的博客 1381

ThunderScope开源示波器

4CH,1GSa/S 开源示波器。前端很简洁,BUF802+LMH6518,ADC是HMCAD1511,用Xilinx A7 FPGA进行控制,数据通过PCIE总线传输到上位机处理。目前这个项目已经被挂到了Xilinx官网,强。设计日志:https://hackaday.io/project/180090-thunderscope开源地址:https://github.com/EEVengers/ThunderScope。

leida_wt的博客 8191

国产麒麟系统下Kettle安装避坑指南:解决aarch64架构不支持问题

本文详细解析了在国产麒麟系统上部署Kettle时遇到的aarch64架构不支持问题,提供了从获取适配的SWT库、修改启动脚本到生产环境调优的完整解决方案。文章重点解决了ARM架构与Java GUI工具的兼容性挑战,并分享了内存配置、字体显示及Carte服务部署等实战经验,助力用户在国产化环境中稳定运行ETL流程。

weixin_29197835的博客 560

设计模式中类与类之间的关系

在设计模式中类与类之间的关系主要有6种:依赖、关联、聚合、组合、继承、实现,它们之间的耦合度依次增加。一、继承关系      继承是一种“is-a”关系。继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用一条带空心三角箭头的实线表示,...

ZytheMoon的博客 1518

保姆级教程:用ArcGIS Pro搞定云南30米分辨率DEM地形图(附数据下载与配色方案)

本文提供了一份详细的ArcGIS Pro教程,指导用户如何制作云南30米分辨率DEM地形图。从数据下载、预处理到镶嵌与质量控制,再到地形分析与可视化,全流程覆盖云南复杂地形的处理要点。特别包含数据下载链接、配色方案及常见问题解决方案,适合地理信息分析新手和专业人士。

weixin_30467199的博客 309

【设计模式】UML类图及Java的类之间的关系

UML类图展示 设计模式中的对象关系 关联和依赖的对比 依赖关系  虚线箭头 依赖是a类成员方法中有b类的属性,动物新陈代谢方法中有水和空气的属性,只有调这个方法的时候,才可能临时用一下 关联关系  实线 类与类的连接,(它使一个类知道另一个类的属性和方法,关联关系一般用成员变量实现) 关联是a类中存在b类对象,企鹅类中有气候类的属性 组合和聚合的对比 组合关系  实心菱形 组合有相同的生命...

Hello World 1262

公文流转系统

公文录入区 | QLineEdit(文号/标题)、QComboBox(公文类型/紧急程度)、QTextEdit(正文)、QListWidget(附件列表)、QPushButton(上传附件/保存草稿/提交审批) |// 按时间范围获取。QStringList userNames = {"张三", "李四", "王五", "赵六", "钱七", "孙八", "周九", "吴十", "郑十一", "王十二"};

寒寒豆豆软件公司的博客 550

无线传感网络的Matlab实现

Matlab是一种功能强大的数值计算和数据分析工具,也可以用于无线传感网络的建模和仿真。根据实际需求,可以进一步扩展和优化模型,例如考虑节点能量消耗、网络路由、数据融合等方面的问题。函数用于绘制节点之间的连接关系,其中第一个参数是邻接矩阵,描述了节点之间的连接关系。这里使用了一个4个节点的简单例子,可以根据实际需求修改节点数量和连接关系。可以使用Matlab中的图形绘制函数来可视化节点的位置和连接关系。在无线传感网络中,节点的能量是一个关键因素。通过计算节点的剩余能量,可以评估节点的能量消耗情况。

2301_79331387的博客 249

设计模式-UML类图和类之间的关系

1.设计模式是什么 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结,使用设计模式是为了可以重用代码,让代码可以更容易被他人理解并且提高代码的可靠性。 2.UML 2.1 UML特性 UML融合了多种优秀的面向对象建模方法以及多种得到认可的软件工程方法; UML是一种可视化建模语言,它通过一些便准的图形符号和文字对系统进行建模,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。 UML是一种语言,它有属于自己的标准表达规则。 2.2 UML结构 视图(View)

Onecat_j的博客 629

基于 MATLAB 的 FastICA 算法实现语音信号盲分离

FastICA 算法通过最大化信号的非高斯性,找到独立成分,从而实现信号的分离。这些混合的信号被称为盲源信号,我们希望通过分析混合信号,将它们分离出来以便进行进一步的处理和分析。FastICA 是一种常用的盲源信号分离算法,它基于统计学原理,通过寻找独立成分来实现信号的分离。FastICA(独立成分分析)是一种常用的盲源信号分离算法,在语音和图像处理领域都有广泛的应用。本文将介绍如何使用 MATLAB 实现 FastICA 算法来实现语音信号的盲分离,并提供相应的源代码。FastICA 算法原理。

学习使你进步。 2024

Java开发之设计模式中类的关系

设计模式第5篇--设计模式中类的关系

ZaneLove's blog 831

SystemVerilog从入门到实战

SystemVerilog复合数据类型概述 SystemVerilog增强了Verilog的数据建模能力,提供多种复合数据类型: 数组类型:包括定宽数组(固定大小)、动态数组(运行时分配)和多维数组,支持高效索引访问。 队列:结合数组和链表特性,支持两端快速插入/删除操作,提供push/pop等方法。 关联数组:键值对存储结构,支持稀疏数据存储和快速查找,提供exists/delete等方法。 结构体:组合不同类型数据成员,支持打包(packed)形式以优化存储空间。 枚举类型:为数值赋予语义名称,支持状态

2301_79143213的博客 1226

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java uml图中的关系_【设计模式】UML类图及Java的类之间的关系

UML类图展示 设计模式中的对象关系关联和依赖的对比依赖关系  虚线箭头依赖是a类成员方法中有b类的属性,动物新陈代谢方法中有水和空气的属性,只有调这个方法的时候,才可能临时用一下关联关系  实线 类与类的连接,(它使一个类知道另一个类的属性和方法,关联关系一般用成员变量实现)关联是a类中存在b类对象,企鹅类中有气候类的属性组合和聚合的对比组合关系  实心菱形组合有相同的生命周期,鸟有翅膀,鸟死了...

weixin_35752233的博客 207

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C++ 类的关系 vs C++设计模式

摘要: C++类的关系(如继承、组合、依赖)是设计模式的“基础积木”,而设计模式(如策略、工厂、单例)是对这些关系的“有目的、可复用的组合”,用于解决特定问题。类的关系是语法层面的静态连接(如class A: public B表示继承),设计模式则是动态解决方案(如策略模式通过“接口+组合”实现算法切换)。核心区别在于:类的关系描述“如何连接”,设计模式描述“如何用连接解决问题”。设计模式偏好低耦合关系(如优先组合而非继承),并依赖抽象接口实现解耦。两者是递进关系——类的关系是“零件”,设计模式是“用零件组

I Promise的博客 695

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C++设计模式:类间关系

类之间的关系强弱顺序是这样的:继承(含接口实现) > 组合 > 聚合 > 关联 > 依赖。在实际设计中,应优先使用低耦合关系(如关联、聚合、组合),避免过度依赖继承,以提高代码的灵活性和可维护性。

ikkkkkkkl的博客 431

寂然解读设计模式 - UML类图及类的六大关系

I walk very slowly, but I never walk backwards UML类图&类的六大关系 ​ 寂然 大家好~,我是寂然

weixin_44808014的博客 428

类图 关联关系 限定词 java实现_【设计模式】UML类图及Java的类之间的关系

UML类图展示设计模式中的对象关系关联和依赖的对比依赖关系  虚线箭头依赖是a类成员方法中有b类的属性,动物新陈代谢方法中有水和空气的属性,只有调这个方法的时候,才可能临时用一下关联关系  实线 类与类的连接,(它使一个类知道另一个类的属性和方法,关联关系一般用成员变量实现)关联是a类中存在b类对象,企鹅类中有气候类的属性组合和聚合的对比组合关系  实心菱形组合有相同的生命周期,鸟有翅膀,鸟死了,...

weixin_33914777的博客 352
上一篇: C++ 泛型算法及迭代器概述
下一篇: Matlab图示中的希腊字母和符号等
Scandinavians
博客等级 码龄19年 36粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值