staruml-uml程序员绘图工具简单使用与说明_春风霓裳的博客-程序员信息网

技术标签: 笔记  uml类图  uml  

uml:staruml:官网: https://staruml.io/download
在这里插入图片描述
类组件的基本操作介绍:
单击选择Class,至工作区域内单机左键,即可创建一个class实例。创建实例后,周围会出现一堆,功能按钮,去描述这个类,如图所示。图后会有介绍各个租价功能的介绍。

在这里插入图片描述
功能介绍:

  1. 用来标识Class的可见性(默认为public)
  2. 用来添加note的,比如:类的说明
  3. 增加类的属性
  4. 增加类的操作方法。
  5. 增加Reception
  6. 增加子类
  7. 增加父类
  8. 添加已有的接口
  9. 添加需要的接口
  10. 添加关联
  11. 添加聚合
  12. 添加组合
  13. 添加端口
  14. 添加部件

类关系
依赖、关联、聚合、组合、实现、继承,从松到紧的关系为:依赖<关联<聚合<组合<实现<继承。
在这里插入图片描述
1、上图分别表示为继承和实现
在这里插入图片描述
2)关联
关联是类与类之间的联接,使一个类知道另一个类的属性和方法。关联可以是双向,也可以是单向的。一般使用成员变量来实现。

在这里插入图片描述
1)依赖
依赖关系是类与类之间的联接。一个类依赖于另一个类的定义。如,一个人(Person)可以买车(Car)和房子(House),Person类依赖于Car和House的定义,因为Person引入了Car和House。与关联不同的是,Person类中没有Car和House的属性,Car和House的实例是以参量的方式传入到buy()方法中的。一般而言,依赖关系在Java语言中体现为局部变量,方法形参,或者对静态方法的调用。

在这里插入图片描述
3)聚合
聚合是一种强的关联关系。是整体和个体之间的关系。例如,汽车类与引擎类,轮胎类之间的关系就是整体与个体之间的关系。与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系涉及的两个类在同一层次,而聚合关系中两个类处在不平等的层次上,一个代表整体,一个代表部分。

4)组合
组合也是关联关系的一种,一种比聚合关系强的关系。组合关系中的部分类不能独立于整体类存在。整体类和部分类有相同的生命周期。如Person类和Leg类。

java–依赖、关联、聚合和组合之间区别的理解
在学习面向对象设计对象关系时,依赖、关联、聚合和组合这四种关系之间区别比较容易混淆。特别是后三种,仅仅是在语义上有所区别,所谓语义就是指上下文环境、特定情景等。

依赖(Dependency)关系:

是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。例如,一个人(Person)可以买车(car)和房子(House),Person类依赖于Car类和House类的定义,因为Person类引用了Car和House。与关联不同的是,Person类里并没有Car和House类型的属性,Car和House的实例是以参量的方式传入到buy()方法中去的。一般而言,依赖关系在Java语言中体现为局域变量、方法的形参,或者对静态方法的调用。

关联(Association)关系:

是类与类之间的联接,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。在Java语言中,关联关系一般使用成员变量来实现。

聚合(Aggregation) 关系:

是关联关系的一种,是强的关联关系。聚合是整体和个体之间的关系。例如,汽车类与引擎类、轮胎类,以及其它的零件类之间的关系便整体和个体的关系。与关联关系一样,聚合关系也是通过实例变量实现的。但是关联关系所涉及的两个类是处在同一层次上的,而在聚合关系中,两个类是处在不平等层次上的,一个代表整体,另一个代表部分。

组合(Composition) 关系:

是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分对象的生命周期,组合关系是不能共享的。代表整体的对象需要负责保持部分对象和存活,在一些情况下将负责代表部分的对象湮灭掉。代表整体的对象可以将代表部分的对象传递给另一个对象,由后者负责此对象的生命周期。换言之,代表部分的对象在每一个时刻只能与一个对象发生组合关系,由后者排他地负责生命周期。部分和整体的生命周期一样。

以上关系的耦合度依次增强(关于耦合度的概念将在以后具体讨论,这里可以暂时理解为当一个类发生变更时,对其他类造成的影响程度,影响越小则耦合度越弱,影响越大耦合度越强)。由定义我们已经知道,依赖关系实际上是一种比较弱的关联,聚合是一种比较强的关联,而组合则是一种更强的关联,所以笼统的来区分的话,实际上这四种关系、都是关联关系。 

例子:

 class Car {
     
  public static void run(){
     
    System.out.println("汽车在奔跑"); 
  } 
} 
class Driver {
     
  //使用形参方式发生依赖关系 
  public void drive1(Car car){
     
    car.run(); 
  } 
  //使用局部变量发生依赖关系 
  public void drive2(){
     
    Car car = new Car(); 
    car.run(); 
  } 
  //使用静态变量发生依赖关系 
  public void drive3(){
     
    Car.run(); 
  } 
} 

关联关系在java中一般使用成员变量来实现,有时也用方法形参的形式实现。依然使用Driver和Car的例子,使用方法参数形式可以表示依赖关系,也可以表示关联关系,毕竟我们无法在程序中太准确的表达语义。在本例中,使用成员变量表达这个意思:车是我自己的车,我“拥有”这个车。使用方法参数表达:车不是我的,我只是个司机,别人给我什么车我就开什么车,我使用这个车。

class Driver {
     
  //使用成员变量形式实现关联 
  Car mycar; 
  public void drive(){
     
    mycar.run(); 
  } 
  ... 
  //使用方法参数形式实现关联 
  public void drive(Car car){
     
    car.run(); 
  } 
} 

聚合关系是是一种比较强的关联关系,java中一般使用成员变量形式实现。对象之间存在着整体与部分的关系。例如上例中

class Driver {
     
  //使用成员变量形式实现聚合关系 
  Car mycar; 
  public void drive(){
     
    mycar.run(); 
  } 
} 

假如给上面代码赋予如下语义:车是一辆私家车,是司机财产的一部分。则相同的代码即表示聚合关系了。聚合关系一般使用setter方法给成员变量赋值。
假如赋予如下语义:车是司机的必须有的财产,要想成为一个司机必须要先有辆车,车要是没了,司机也不想活了。而且司机要是不干司机了,这个车就砸了,别人谁也别想用。那就表示组合关系了。一般来说,为了表示组合关系,常常会使用构造方法来达到初始化的目的,例如上例中,加上一个以Car为参数的构造方法

public Driver(Car car){
     
  mycar = car; 
}

所以,关联、聚合、组合只能配合语义,结合上下文才能够判断出来,而只给出一段代码让我们判断是关联,聚合,还是组合关系,则是无法判断的。

参考:https://blog.csdn.net/luansha0/article/details/82260678
https://www.cnblogs.com/yangyongxin/p/10171346.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43470725/article/details/112392464

智能推荐

python深度学习并行训练踩坑记录_进取的好少年的博客-程序员信息网

最近在做一个对抗攻击的任务,写的代码只能逐个样本进行处理,速度实在太慢且显卡性能剩余的太多,于是想并行处理提高效率。检索发现有以下实现方法:1.构造dataset实现多批量并行 2.多卡并行计算 3.单卡多进程计算。在尝试的过程中遇到了诸多问题,最终只实现了第三种方法。记录如下:1.构造dataset实现多批量并行根据https://www.cnblogs.com/Aiyuqianer/p/14091062.html理解了getitem函数的作用,编写代码如下,目的是传入一组图片及其文件名...

error C2144: 语法错误 : “void”的前面应有“;”_延卿的博客-程序员信息网

Visual Studio 2013 编译使用OpenGL的代码时,出现错误,信息如下:error C2144: 语法错误 : “void”的前面应有“;”解决方法:#include  //加上这一句,注意头文件的顺序#include #include 一开始以为是编码问题,结果加上这个后成功通过

【GPLT】L1-045 宇宙无敌大招呼_喜欢ctrl的cxk的博客-程序员信息网

题目描述:据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。输入格式:输入在第一行给出一个星球的名字S,是一个由不超过7个英文字母组成的单词,以回车结束。输出格式:在一行中输出Hello S,跟输入的S星球打个招呼。输入样例:Mars输出样例:...

Java程序设计基础第五版第十二章习题答案_在下南小伯的博客-程序员信息网

import java.util.*;public class Java_Chap_12_5{  public static void main(String [] args)    {      List&amp;lt;Integer&amp;gt; stack=new LinkedList&amp;lt;Integer&amp;gt;();      int []a=new int[10];        //给数组a赋值 ...

致远(用友)OA或M1 漏洞复现_保持 平常心的博客-程序员信息网_致远oa漏洞

致远OA通过发送特殊请求获取session,在通过文件上传接口上传特殊构造的恶意压缩包,并通过解压为webshell控制服务器。

随便推点

java类的实现_茂树24的博客-程序员信息网

封装可以对接口与实现的分离,将客户端工程师与类库工程师之间“交互”做到最低。类库工程师仅仅用某些访问限定控制符将某些成员和实现过程隐藏起来,给客户端工程师提供一定的接口来操作,防止了客户端程序员无意的访问或修改了敏感数据,提高了安全性,同时,类库工程师在修改类时,只要对接口部分不做修改就可以,这样也避免了对客户端程序员造成不必要的麻烦。总之封装之后客户端工程师与类库工程师不再相互制约,而是“你

Flv.js讲解_Cultivate_love的博客-程序员信息网_flv.js

Flv讲解Flv.js文章目录Flv讲解常见的几种直播协议一、Flv.js是什么?二、Flv.js的优势1.由于浏览器对原生Video标签采用了硬件加速,性能很好,支持高清2.同时支持录播和直播3.去掉对Flash的依赖三、Flv.js的缺点?四、Flv的限制vue中的应用常见的几种直播协议HTTP-FLV: 基于HTTP流式IO传输FLV,依赖浏览器支持播放FLV。WebSocket-FLV: 基于WebSocket传输FLV,依赖浏览器支持播放FLV。WebSocket建立在HTTP之

【图像识别】基于模板匹配交通标志识别matlab代码_Matlab科研工作室的博客-程序员信息网_matlab交通标志识别代码

1 简介交通标志的检测与识别是智能车无人驾驶的重要组成部分,它也是解决交通安全问题的一种有效方法。在现实中由于分辨率,气象条件,照明强度和运动模糊等干扰,交通标志的图像质量通常很差,很难被检测,所以如何排除以上干扰,提高交通标志的检测和识别准确率是当前这一领域亟待解决的问题。交通标志的检测与识别问题主要包括两个部分:如何在获取的图像中准确找到交通标志,如何对提取的交通标志图片实现准确识别或分类。本文采用不变矩特征模板匹配算法实现交通标志识别。2 部分代码functionvarargout.

Java节点遍历算法——图——深度优先算法(递归实现)_qq_41770939的博客-程序员信息网_深度优先遍历java递归

一.简介深度优先搜索算法(Depth-First-Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。属于盲目搜索。 深...

3.2 CSS样式(2) 文本_谁还不是个小屁孩的博客-程序员信息网

1.单位与颜色单位在没有设置字体样式时,字体大小等的继承关系如下:颜色2. text字符间距的应用行高应用对齐方式装饰线如淘宝价格变动使用,去掉超链接下划线(超链接a标签默认是有下划线的)-- text-decoration:none;3. font字体简化使用4.小结...

◄ Unity 『功能总结』►——在Inspector面板显示镶嵌式List<List<Var>>/数组_臭臭~的博客-程序员信息网

如下图:多个数组嵌套模式是不会显示在Inspector上面的,通过【Serializable】显示这里面用List或者数组都可,看怎么写代码舒服怎么用[Header("题目和选项")] public List&lt;QuestionINFO&gt; QuestionInfo; [Serializable] public class QuestionINFO { [Header("题目")] public string Question

推荐文章

热门文章

相关标签