类与类关系的UML图与代码表现

Java基础:UML类图 文章目录1. 可见性符号2. 类之间的关系2.1 泛化(Generalization)2.2 实现(Realization)2.3 关联(Association)2.5 聚合(Aggregation)2.6 组合(Composition) 本文介绍Java开发中的软技能之一,UML图。UML 即统一建模语言,它是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的... 阅读详情


先把原文地址贴上 —— 原文地址 JavaEye

      

类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。
类与类之间存在以下关系:
(1)泛化(Generalization)
(2)关联(Association)
(3)依赖(Dependency)
(4)聚合(Aggregation)

UML图与应用代码例子:
1.泛化(Generalization)
[泛化]
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。
[具体表现]
父类 父类实例=new 子类()
[UML图](图1.1)

图1.1 Animal类与Tiger类,Dog类的泛化关系

[代码表现]
  1.  class Animal{}   
  2.  class Tiger extends Animal{}   
  3.  public class Test   
  4.  {   
  5.      public void test()   
  6.      {   
  7.          Animal a=new Tiger();   
  8.      }   
  9.  }  

2.依赖(Dependency)
[依赖]
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
[具体表现]
依赖关系表现在局部变量,方法的参数,以及对静态方法的调用
[现实例子]
比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作
[UML表现](图1.2)

图1.2 Person类与Screwdriver类的依赖关系
[代码表现]
  1. public class Person{   
  2.      /** 拧螺丝 */  
  3.      public void screw(Screwdriver screwdriver){   
  4.          screwdriver.screw();   
  5.      }   
  6. }  

3.关联(Association)
[关联]
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
[具体表现]
关联关系是使用实例变量来实现
[现实例子]
比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
[UML图] (图1.3)

图1.3 公司和员工的关联关系
[代码表现]
  1. public class Company{   
  2.      private Employee employee;   
  3.      public Employee getEmployee(){   
  4.          return employee;   
  5.      }   
  6.      public void setEmployee(Employee employee){   
  7.          this.employee=employee;   
  8.      }   
  9.      //公司运作   
  10.      public void run(){   
  11.          employee.startWorking();   
  12.      }   
  13. }  

(4)聚合(Aggregation)
[聚合]
当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。
[具体表现]
与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。
[关联与聚合的区别]
(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。
(2)对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的 对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存) 拆了下来。
[UML图](图1.4)

图1.3 电脑和组件的聚合关系
  1. public class Computer{   
  2.      private CPU cpu;   
  3.      public CPU getCPU(){   
  4.          return cpu;   
  5.      }   
  6.      public void setCPU(CPU cpu){   
  7.          this.cpu=cpu;   
  8.      }   
  9.      //开启电脑   
  10.      public void start(){   
  11.          //cpu运作   
  12.          cpu.run();   
  13.      }   
  14. }  

UML类图类之间的关系 根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关系,关联关系,聚合关系,组合关系,泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。 1、依赖关系 依赖(Dependency)关系是一种使用关系,它是对象之间耦合度最弱的一种关联关系,是临时性的关联。在代码中,某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些职责。 在UML类图中,依赖关系使用带箭头的虚线来表示,箭头从使用类指向被依赖的类。 图 4 所示. 阅读详情

相关推荐

一个UML的例子

一、需求分析 二、UML图型概览

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 1402

主题: 类与类关系的UML图与代码表现

类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。类与类之间存在以下关系:(1)泛化(Generalization)(2)关联(Association)(3)依赖(Dependency)(4)聚合(Aggregation)UML图与应用代码例子:1.泛化(Generalization)[泛化]表示类与类之间的继承关系,接口与接口之间的继

ming_huang的专栏 1221

《湖科大教书匠计算机网络》学习笔记总目录+思维导图

本篇文章是对《湖科大教书匠计算机网络》所有知识点的笔记总结归档和计算机网络的思维导图

weixin_73077810的博客 8249

UML图中包含(include)和扩展(extend)关系的区别

在软件工程中的UML那一块知识有一个知识点就是包含和扩展关系很容易混淆,所以今天特此记下二者的区别方便自己以后学习以及理解。以下面例子为例: 如图所示: >登记外借信息与用户登录属于包含关系(include),因为登记外借信息必然需要使用用户登录来进行,所以区分包含关系就是某个用例必然会使用另外一个用例 >查询书籍信息与修改图书信息属于扩展关系(extend),因为我们查询书...

1万+

QT使用openssl实现RSA加解密

使用openssl生成公私钥,随后用QT对相应的信息进行RSA加解密

weixin_42098322的博客 3867

[官方培训]07-UE材质基础 孙丹璐 Epic 笔记

勾选允许自定义深度写入再在模型上勾选然后可以通过Scene Texture节点拿到渲染的自定义深度信息,有了自定义深度信息就可以与当前渲染的像素深度进行对比,自定义深度信息存放的是最靠近我们的深度,如果当前像素离自定义深度比较远我们就不要这个像素。效果如下这种方案的缺点也很明显,因为这样看不到第二层的透明了,如果是两层的半透明的裙摆,这样就看不到第二层的裙摆了。对于半透明排序问题最根本能解决的还是光线追踪,ue5中又加入了OIT(基于像素的排序)。官方透明材质的理解和应用。

Tcohneyn的博客 1562

类与类关系的UML图与代码表现(转载)

类与类关系的UML图与代码表现 关键字: OO UML,泛化,依赖,关联,聚合 类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。 类与类之间存在以下关系: (1)泛化(Generalizatio...

weixin_30662011的博客 77

计算机网络基础:揭开网络世界的神秘面纱

计算机网络基础:揭开网络世界的神秘面纱,计算机网络已深度融入现代生活,这篇文章对其基础内容展开全面阐述。开篇介绍计算机网络的定义,说明其由计算机设备、网络设备和传输介质构成。接着从地域范围和拓扑结构两个维度对计算机网络进行分类,并详细讲解 OSI 和 TCP/IP 参考模型,明晰各层功能与联系。随后阐述网络通信协议的定义及常见协议,如 TCP/IP、HTTP 等。最后聚焦网络安全,涵盖定义、重要性以及防火墙、加密技术等常用安全技术。文章旨在帮助读者构建计算机网络基础知识体系,理解其在生活和工作中的应用与价值

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

uml 类图_UML-"类图

统一建模语言中的类图就是表示类的图,类图主要包含两部分:类的定义、类之间的关系。类定义:用UML语言的方式表示某个类,类定义包含三个部分:类名称、类的属性、类的方法,如图:其中"+"表示public、"-"表示private、"#"表示protected;类关系: 表示类与类之间的关系,包括依赖、关联、聚合、组合、继承、实现,如图:依赖:短暂实时的关系,如我去电影院看电影,我与电影就是依赖关系;...

weixin_39557797的博客 213

美团mtgsig 1.2算法分析

mtgsig1.2的一些算法总结

记录一些web逆向的过程 3502

使用自己的数据跑通mmsegmentation

使用自己的数据跑通mmsegmentation,解决以下报错:1)type object 'FileClient' has no attribute 'infer_client' 2)It is expected output_size equals to 2, but got size 3 3)训练测试结果报NAN 4)KeyError: 'MyDataset is not in the dataset registry' 5)预训练模型和加载的网络结构层名有差异,unexpected key .....

猫猫与橙子的博客 1656

UML类图--类与类关系的UML图与代码表现

类与类之间的关系对于理解面向对象具有很重要的作用,以前在面试的时候也经常被问到这个问题,在这里我就介绍一下。 类与类之间存在以下关系:   (1)泛化(Generalization)   (2)关联(Association)   (3)依赖(Dependency)   (4)聚合(Aggregation) UML图与应用代码例子: 1.泛化(Generalizatio

yixiaoping的专栏 757

Python3+PCAN-USB基于PCAN-Basic二次开发实现上位机功能

一、环境搭建 1.概述 本文主要是通过Python3与CAN总线工具PCAN-USB基于官方PCAN-Basic库实现CAN总线消息读写功能。 2.PCANBasic.py和PCANBasic.dll下载地址 https://www.peak-system.com/fileadmin/media/files/pcan-basic.zip 3.Python安装 下载地址:https://www.p...

测试领域技术分享 5185
上一篇: 海阔天空
下一篇: VirtualBox分配U盘
Loadingo0
博客等级 码龄19年 53粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值