热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

UML四种关系

在画类图之前,首先要理清UML中的四种关系,常见的有以下四种关系:泛化(Generalization),实现(Realization),关联(Association),依赖(Dependency),而在关联中又包括:聚合(Aggregation),组合(Composition),在这几种关系中他们又有剪不断的联系

在画类图之前,首先要理清UML中的四种关系,常见的有以下四种关系: 泛化(Generalization), 实现(Realization),关联(Association),依赖(Dependency),而在关联中又包括:聚合(Aggregation),组合(Composition),在这几种关系中他们又有剪不断的联系

在画类图之前,首先要理清UML中的四种关系,常见的有以下四种关系: 泛化(Generalization), 实现(Realization),关联(Association),依赖(Dependency),而在关联中又包括:聚合(Aggregation),组合(Composition),在这几种关系中他们又有剪不断的联系。

一、概念

【泛化】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。箭头指向:带三角箭头的实线,箭头指向父类。

【实现】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。箭头指向:带空心三角箭头的虚线,箭头指向接口。

【关联】:是一种拥有的关系,它使一个类知道另一个类的属性和方法。箭头指向:实线箭头。

【聚合】:表示整体对象拥有部分对象。箭头指向:空心菱形+实线箭头。

【组合】:聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期是一致的。箭头指向:实心菱形+实现箭头。

【依赖】:是两个事物间的语义关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事物)。箭头指向:虚线箭头。

\

二、实例介绍

【泛化】:鸟属于动物,它具有动物的特征同时还具有自己特有的功能。

【实现】:大雁实现飞翔的接口。

【关联】:企鹅和气候,企鹅生活在南极,它需要这种气候才能生活,企鹅需要‘知道’气候的变化,‘了解’气候规律。

【聚合】:电脑和外接键盘,两者可以独立存在。

【组合】:鸟和翅膀的关系,不能独立存在。
【依赖】:动物要生存需要依赖于氧气,水和食物。

三、PK赛

1、【聚合】PK【组合】

相同点:两者都表示‘拥有’的关系,区别:生命周期的长短。

【聚合】:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,他们的生命周期或许是不同的,A对象不随着B对象的消失而消失,两者可以独立存在。

【组合】:表示一种强的‘拥有’,他们是部分和整体的关系,他们的生命周期是相同的,A对象会随着B对象的消失而消失,二者是不能独立存在的。

关系强弱比较:组合>聚合

2、【泛化】PK【实现】

相同点:相当于继承。 子类继承父类,父类泛化子类。

关系强弱比较:泛化=实现

3、【关联】PK【依赖】

相同点:都表示依赖关系。区别:类之间关系的强弱程度和类之间关系的时间长短。

【关联】表示类之间的很强的关系,它表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。

【依赖】表示类之间的较弱的关系,它表示类之间的是一种“临时、短暂”关系,这种关系是不需要保存的。

关系强弱比较:关联>依赖

得到关系强弱的比较:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖

四、小结

初次学习UML,对四种关系了解的还不是很深,在c#,设计模式中都有提到UML的四种关系和九种图,相信通过反复的学习,一定可以加深对他们的理解。


推荐阅读
  • 测绘程序设计Excel度分秒转换模板附代码超实用版
    本文介绍了测绘程序设计Excel度分秒转换模板附代码超实用版的相关知识,包括准备工作、编写表达式和注意事项。在实际工作中,将GPS实测的经纬度度转换为度分秒是常见需求,本文提供了在Excel中快速进行转换的方法,以提高工作效率。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文是关于C#类型系统、值类型和引用类型的概念性笔记。介绍了C#1系统类型的三个特性,静态类型的含义,显式类型和隐式类型的区别。还讨论了类、结构、数组类型、枚举、委托类型和接口类型属于哪一种类型。同时纠正了关于结构、引用类型和对象传递的错误表述。最后提到了C#4中使用动态类型的关键字。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 本文介绍了C#中快速生成随机整数的方法。默认的Random类构造函数使用时间作为种子,会生成许多重复的随机数。文章探讨了是否有更快的方案,并讨论了随机数可以出现重复的情况。 ... [详细]
author-avatar
KTone
敲一夜代码,流下两三行泪水,掏空四肢五体,六杯咖啡七桶泡面,还有八个测试九层审批,可谓十分艰难
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有