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

staruml-uml程序员绘图工具简单使用与说明相关推荐

  1. cassandra可视化工具_程序员绘图工具——PlantUML

    在工作中经常会编写技术文档,用专业的图形(用例图.时序图.ER图等等)能够更加准确表达我们的想法,别一段乏味的文字更加有意义,也便于别人理解. 虽然现在有很多类似viso之类的可视化画图工具,但是还是 ...

  2. 程序员绘图工具-Plantuml

    在写文档的过程中,经常需要进行画图.虽然说现在有很多类似viso之类的可视化画图工具,但是还是要花费大量时间在拖拉组件上,效率十分低下.最近在网上找到了一款还算不错的绘图工具-- Plantuml, ...

  3. win10程序员必备工具_与客户沟通的10种必备工具

    win10程序员必备工具 Communicating your clients is a necessary evil of contract web development, design, pro ...

  4. 超级好用的开发工具,程序员实用工具整理

    其实本来打算写的是web开发工具合集,但写着写着觉得不太过瘾,所以索性把所有用得到的工具都列出来了. 如果能在一开始就把这些工具利用起来,相信可以大大提高工作效率,所以起码对新手来说是比较有益的.而且 ...

  5. Linux常用命令大全-toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  6. JavaScript实现在线MD5、SHA、AES、Rabit 、RC4、TripleDES Ripemd160 加密解密工具-toolfk程序员在线工具网...

    2019独角兽企业重金招聘Python工程师标准>>> 本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装 ...

  7. JavaScript实现在线进制转换工具网站 -toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  8. 十大PHP程序员必备工具

    十大PHP程序员必备工具 1.Notepad++ 总结来说就是小而精,7.4版本的软件包只有2.9M,比一般的IDE小数十倍,但是Notepad++的功能确是很全面的,代码高亮,语法折叠,宏功能,内置 ...

  9. JavaScript实现在线MD5、SHA、AES、Rabit 、RC4、TripleDES Ripemd160 加密解密工具-toolfk程序员在线工具网

    本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果.Tool ...

  10. 程序员常用工具网站汇总(一)

    程序员常用工具网站汇总(一) 文章目录 程序员常用工具网站汇总(一) 一.未分类 二.算法 三.开发 四.linux 五.运维 六.常用软件 七.JVM调优 八.可视化 九.技术选型 一.未分类 国外 ...

最新文章

  1. 如何在ubuntu14.04(64位)编译运行32位程序
  2. Python中的Numpy(5.numpy排序)
  3. 名爵如何解除限速_价格不高却乐趣十足,全新一代名爵6有多大惊喜
  4. 基于IBM Cognos的高级报表制作技巧
  5. 一个汉字在数据库占几个字节
  6. 若依集成aj-captcha实现滑块验证码(单体版)
  7. [轉]winrar的命令行
  8. 2017华为笔试题3
  9. 推荐 7 款免费开源的 BBS 论坛软件
  10. 只需三步即可将 Python 程序转换成 exe 文件
  11. 做webgl遇到的两个坑
  12. VMware 中Fedora系统连接网络问题!
  13. 短代码的java小游戏_java编写的简单移动方块小游戏代码
  14. 达尔文服务器_达尔文与网络设计艺术
  15. IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
  16. JavaScript冒泡排序(升序排列)
  17. 1.19(Cake Baking)
  18. 熟悉RealView MDK集成开发环境(Keil uVision4)的使用
  19. Android——腾讯QQ的Tab按钮动画效果完美实现
  20. 【转载】一个清华差生9年的北京实录

热门文章

  1. Java中日期格式化yyyyMMdd和YYYYMMdd的区别
  2. Scrapy网络爬虫系统
  3. python esp8266 ssd1306_micropython esp8266+ssd1306(OLED) 显示中文(示例)
  4. 经颅磁刺激对大脑结构的直接影响: cTBS后的短期神经可塑性
  5. 使用Postman工具进行简单的Get/Post测试
  6. STM8L051低功耗实现
  7. emos后台管理项目心得
  8. 揭秘Emotet恶意软件新变种幕后攻击者的运营模式
  9. 建站系统创业项目综合测评:ePower、云优CMS、微加互联、微企点
  10. 十大进销存管理软件亮点大对比