您的位置:网站首页 > Java工具 > 正文

资深架构师教你Java的利器之UML类图详解(干货

类别:Java工具 日期:2018-2-13 10:35:43 人气: 来源:

  UML(Unified Modeling Language)中文统一建模语言,是一种的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

  最近看一些开源项目的时候,总是看到UML中的类图,一开始自己的做法就是跳过去类图的部分,不过后来又遇到了几次,就决定学习下,不能再选择逃避了,这也是一个即将优秀的程序探索者应该必备的素质。今天把自己学习到的内容记录一下(怕健忘…),相信对类图不清楚的朋友,通过读取这篇文章后也能有一个比较清晰的认识,让你看的懂,画的出。

  类图是软件工程的统一建模语言一种静态结构图,该图描述了系统的类集合,类的属性和类之间的关系。帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。学习好类图的绘制,是一位合格的软件工程师应有的技能。

  在UML类图中,类使用包含类名,属性,方法名及其参数并且用分割线分隔的长方形表示。例如最简单的一个类Person 类有两个属性分别是name和age,并提供对应的get和set方法。java类代码如下

  顾名思义就是类的名字,对应于Java类中的类名,如果该类是抽象类的话,在类名右下角会有一个(Abstract)表示,假如Person是一个抽象类的话,则UML类图如下

  UML中的属性名就是Java中的变量,当然一个类可以没有属性也可以有任意多个属性。Java类中变量的修饰符,类型和默认值都可以在UML类图中体现出来。通用表示方法如下

  在Java类中可见性分为三类,分别是private,public 和protected,在类图中分别用符号-、+和#表示。通用表示方法中名称就变量的名字,类型就是变量的类型如String类型,int类型等,当然也可以是自定义类型。而后面的默认值是可选参数,如果我们没有给变量设置初始值,UML类图中就不显示,如Person类图,变量name,age没有设置初始值,如果此时我们给name和vaule分别设置默认值zhangsan,23。则UML类图如下

  类的操作方法通用表示方式如上,方法可见性和属性可见性是一致的,名称就是方法名,参数列表是可选像,可以是对个参数也是没有参数,若多个参数用英文逗号隔开,返回类型是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。

  在UML类图中类与类之间存在多种关系,如泛化(Generalization)关系,实现(Realization)关系,依赖(Dependence)关系,关联(Association)关系,聚合(Aggregation)关系, 组合(Composition)关系。针对的技术我特意整理了一下,有很多技术不是靠几句话能楚,所以干脆找朋友了一些视频,很多问题其实答案很简单,但是背后的思考和逻辑不简单,要做到知其然还要知其所以然。如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java进阶群:591240817,群里有大牛直播技术,以及Java大型互联网技术的视频免费分享

  泛化关系也就是Java中的继承,类和类,接口和接口都可以是继承关系,父类又称作基类或超类,子类又称作派生类,类继承父类后可以实现父类的所以功能,并能拥有父类没有的功能。在UML中,泛化关系可以用带空心三角形的直线来表示;例如我们创建两个Java类Teachers和Students类如下代码

  实现关系在java中就是一个类和接口之间的关系,接口中一般是没有变量,所有操作都是抽象的(abstract修饰),只有声明没有具体的实现,具体实现需在实现该接口的类中。在UML中用与类的表示法类似的方式表示接口,区别可在UML中类图中看出。如我们创建一个交通工具类接口IVehicle,并有一个形式速度方法声明travelSpeed,Java代码如下

  对于交通工具,有很多种,不同交通工具都有一个速度,我们举两个例子,如HighSpeedRail(高铁,时速288KM)和Bicycle(自行车类时速20KM),则两个实现类代码为

  在UML中实现接口用虚线和带空心的三角形表示。则对应的UML类图如下对于交通工具,有很多种,不同交通工具都有一个速度,我们举两个例子,如HighSpeedRail(高铁,时速288KM)和Bicycle(自行车类时速20KM),则两个实现类代码为

  依赖关系是类与类之间最弱的关系,依赖可以简单的理解一个类使用了另一个类,这种使用关系具有临时性特征,但是一个类又会由于另一个类的改变而受到影响,例如在举的例子中,假如我们的Students类拥有一个Bicycle,那么要获取移动速度则需要使用Bicycle中获取速度的方法travelSpeed()方法。此时Students代码如下

  关联关系表示一个类和另一类有联系,例如在的举例中每个Teachers都有个家庭住址与之对应,而此时Teacher和Address就形成了一对一的关联关系。如下

  关联关系是一种包含关系,在UML中用一个带箭头的实线表示,箭头指向被包含类。在上图中你可能会发现在线,这个是说明包含关系的。在UML类中有如下几种。

  聚合关系是表示整体与部分的关系,但是部分可以脱离整体而存在。例如一个Teachers对象有一辆汽车Car,此时Car就是Teachers的一部分,但是Car可以脱离Teachers而存在。在UML类中聚合关系用带空心菱形的直线表示。

  组合关系也是一种部分和整体的关系,但是部分存活周期受到整体的影响,若整体不存在则部分也将不存在。此时部分需在整体的构造方法中创建。在UML类中,组合关系用带实心菱形的直线表示。

  到此,本篇文章真的结束了,若文章有不足或者错误的地方,欢迎,以防止给其他读者错误引导。最后感谢LoveLion的系列文章。

  

关键词:java集合uml
0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved