java 泛化_(转)Java中的泛化,依赖,关联,聚合,合成
本文参考
今天给一个很有思想网友解释 关联, 聚合,合成 的区别.结果把我自己给绕进去了.赶紧的 查漏补缺. 做个备份.
处于聚合关系的两个类生命周期不同步,则是聚合关系;处于组合关系的两个类的生命周期同步;
eg:聚合关系,当A创建的时候,B不一定创建;当A消亡时,B不一定消亡。
class A{ private B;}
class B{....}
eg:组合关系,当创建一个A对象时,也会创建一个B对象;当A对象消亡时,作为A的属性的B对象也会消亡。
class A{private b=new B();....}
class B{....}
具体UML解释
依赖(Dependency)
实体之间一个“使用”关系暗示一个实体的规范发生变化后,可能影响依赖于它的其他实例(图D)。 更具体地说,它可转换为对不在实例作用域内的一个类或对象的任何类型的引用。其中包括一个局部变量,对通过方法调用而获得的一个对象的引用(如下例所 示),或者对一个类的静态方法的引用(同时不存在那个类的一个实例)。也可利用“依赖”来表示包和包之间的关系。由于包中含有类,所以你可根据那些包中的 各个类之间的关系,表示出包和包的关系。
图D
关联(Association)
实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。在Java中,关联(图E) 转换为一个实例作用域的变量,就像图E的“Java”区域所展示的代码那样。可为一个关联附加其他修饰符。多重性(Multiplicity)修饰符暗示 着实例之间的关系。在示范代码中,Employee可以有0个或更多的TimeCard对象。但是,每个TimeCard只从属于单独一个 Employee。
图E
聚合(Aggregation)
聚合(图F)是关联的一种形式,代表两个类之间的整体/局部关系。聚合暗示着整体在概念上处于比局部更高的一个级别,而关联暗示两个类在概念上位于相同的级别。聚合也转换成Java中的一个实例作用域变量。
关联和聚合的区别纯粹是概念上的,而且严格反映在语义上。聚合还暗示着实例图中不存在回路。换言之,只能是一种单向关系。
图F
组合(Composition)
组合 (图G) 是聚合的一种特殊形式,暗示“局部”在“整体”内部的生存期职责。合成也是非共享的。所以,虽然局部不一定要随整体的销毁而被销毁,但整体要么负责保持局 部的存活状态,要么负责将其销毁。局部不可与其他整体共享。但是,整体可将所有权转交给另一个对象,后者随即将承担生存期职责。
Employee和TimeCard的关系或许更适合表示成“合成”,而不是表示成“关联”。
图G
泛化(Generalization)
泛化(图H)表示一个更泛化的元素和一个更具体的元素之间的关系。泛化是用于对继承进行建模的UML元素。在Java中,用extends关键字来直接表示这种关系。
图H
实现(Realization)
实例(图I)关系指定两个实体之间的一个合同。换言之,一个实体定义一个合同,而另一个实体保证履行该合同。对Java应用程序进行建模时,实现关系可直接用implements关键字来表示。
图I
我觉得这个图不错
分享到:
2012-08-28 16:02
浏览 1066
评论
java 泛化_(转)Java中的泛化,依赖,关联,聚合,合成相关推荐
- UML关系(泛化,实现,依赖,关联(聚合,组合))
UML的构造快包含3种: (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图,类图,对象图,包图, ...
- linux java 栈_关于Java中栈与堆的思考
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度比堆要快,仅次于直接位于C ...
- js 中 java 代码_在js中嵌套java代码
jsp中有时候在js中操作某些java后台传递过来的数据逻辑比较复杂,比如list内容的遍历,可以直接在页面上添加java脚本来执行内容,代码如下: //在js中插入java代码操作 //取出java ...
- java 企业版_下列版本中哪个是Java 企业版
下列版本中哪个是Java 企业版 2021-02-07 下列版本中哪个是Java 企业版 张爱玲评价自己的服饰:"仿佛穿着博物院的()到处走,遍体森森然飘飘欲仙".转动惯量是刚体转 ...
- jython 导入java包_在jython中导入java类
我用python处理NLP.有一个NLP工具,即Zemberek,用于土耳其语.但它是用java编写的.所以我必须使用jython来导入这些类.我安装了Jython2.7.另外,我安装了eclipse ...
- 修改docker内java内存_在docker中使用java的内存情况
Java和Docker不是天然的朋友. Docker可以设置内存和CPU限制,而Java不能自动检测到.使用Java的Xmx标识(繁琐/重复)或新的实验性JVM标识,我们可以解决这个问题. 虚拟化中的 ...
- 谷歌去水印java实现_在Java中实现Google的“您的意思是”功能
谷歌去水印java实现 介绍 搜索引擎用户经常因各种原因而拼写错误的搜索词,包括键盘问题(键不起作用),陌生的国际名称(例如Sigmund Freud),意外更改一个字母(Sinpsons)或添加一个 ...
- java地区_在Java中存储国家/地区代码,名称和Continent的最佳方式
在ISO 3166中有246个国家,你可能会在此背后得到一个继电器大枚举.我更喜欢使用包含国家/地区列表的 XML文件,您可以从 http://www.iso.org/下载一个并加载它们(例如,当应用 ...
- java 抛物线_关于java中模拟抛物线轨迹的问题
展开全部 看了这套题目感觉很有兴趣,就花了一e69da5e6ba903231313335323631343130323136353331333264623831个中午亲手给你写了一个类似的例子,相信可 ...
最新文章
- 车联网行业No.1元征科技的云端架构实现
- linux学习总结之磁盘管理
- k8s 基础概念和术语
- [资料整理]记一下英特尔atom处理器
- RabbitMQ学习总结(8)——RabbitMQ后台管理控制台页面属性总结
- This Android SDK requires Android Developer Toolkit version 23.0.0 or above
- Python多线程报错之RuntimeError
- 4_2 刽子手游戏(UVa489)自顶向下逐步求精法
- 凸优化第七章统计估计 7.3最优检测器设计及假性检验
- fpga烧写bin文件_FPGA中可执行文件:bit/bin/mcs/elf
- 网易面试总结(2014.12.31)
- cd40系列芯片_CD40,CD45系列芯片功能大全
- WIN2000故障修复之故障恢复控制台篇
- 【DG】DG的3种保护模式
- 苹果手机天气温度显示80度_iPhone如何做到锁屏桌面显示天气?花上一分钟,亮屏就能看天气...
- 第三周java实验报告
- 并发模型第肆讲-pre threaded模型
- 【产品经理学习笔记 | 巨详细】2.规划阶段——2.1需求收集:用户访谈和问卷调查方式
- java反射底层原理。
- 南京理工大学计算机学院张勇,2015年南京理工大学研究生数模竞赛获奖名单
热门文章
- 一键压缩word文档的办法,太简单了
- 杰理之按键切换默认 EQ 和 EQ 工具调节的 EQ【篇】
- oracle ora-01103:,执行数据库克隆时报ORA-01103错误
- 2022高压电工考试题库及答案
- 【报告分享】 2021天猫国际母婴小童市场趋势报告-CBNDATA(附下载)
- ICML2017全部接受论文列表(内含paper分类)
- 制定项目管理计划有什么作用呢?
- python表情包语言_我是斗图王之python爬取表情包
- linux报错CMake Error at CMakeLists.txt:3 (project): No CMAKE_CXX_COMPILER could be found.
- anki服务器搭建java,ANKI 服务器搭建过程