类图是最常用的UML图,它用于描述系统的结构化设计。其中包括类关系以及与每个类关联的属性及行为。类图能出色地表示继承与合成关系。为了将类图作为一种高效的沟通工具使用,开发者必须理解如何将类图上出现的元素转换到Java中。下面来进一步探索这一转换过程。

元素

在后面的小节中,分别讲解了类图的各个元素及其在Java中相应的表示。我会列出元素名,后续简短的代码片断和一幅图来表示元素在类图上的样子。每一节的最后简要总结了该元素。

类(Class)

类(图A)是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。

属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参数,以及返回类型,如图A的“Java”区域所示。

图A

包(Package)

包(图B)是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,你通常拥有逻辑性的包,它主要用于对你的模型进行组织。你还会拥有物理性的包,它直接转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。

图B

接口(Interface)

接口(图C)是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个接口类型。接口既可用图C的那个图标来表示,也可由附加了<>的一个标准类来表示。通常,根据接口在类图上的样子,就能知道与其他类的关系。

图C

关系

后面的例子将针对某个具体目的来独立地展示各种关系。虽然语法无误,但这些例子可进一步精炼,在它们的有效范围内包括更多的语义。

依赖(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

java uml下划线_Java UML类图相关推荐

  1. UML从需求到实现---类图(2)

    上节写到了UML中的类图:UML从需求到实现---类图(1) 写完以后总觉得写的不够详细.里面很多细节没有说到.一篇文章就把强大的面向对象的类说完.当然是不可能的.这次我再补充一些关于UML中类图和类 ...

  2. java双下划线改单下划线_单下划线与双下划线的区别

    内容目录 单下划线与双下划线的区别 ​ Python用下划线作为前缀和后缀指定特殊变量和定义方法,主要有如下四种形式: 单下划线(_) 名称前的单下划线(如:_name) 名称前的双下划线(如:__n ...

  3. 解决数据库里表字段带下划线,实体类转小驼峰,Mapper的映射问题

    解决数据库里表字段带下划线,实体类转小驼峰,Mapper的映射问题 参考文章: (1)解决数据库里表字段带下划线,实体类转小驼峰,Mapper的映射问题 (2)https://www.cnblogs. ...

  4. java 数字 下划线_为什么要在Java SE 7的数字中使用下划线-在数字文字中使用下划线...

    java 数字 下划线 JDK 1.7发行版引入了几个有用的功能,尽管其中大多数都是语法糖,但使用该功能可以大大提高可读性和代码质量. 这样的功能之一是在数字文字中引入下划线 . 从Java 7开始, ...

  5. java 数字 下划线_数字文字中的下划线– Java 7功能

    java 数字 下划线 One of the Java 7 features is underscores in numeric literals. You can place underscores ...

  6. Java将下划线大写方式命名的字符串转换为驼峰式

    Java将下划线大写方式命名的字符串转换为驼峰式 例如: hello_world->helloWorld 方法代码如下: /*** 将下划线大写方式命名的字符串转换为驼峰式.* 如果转换前的下划 ...

  7. UML详解之二——类图

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/50475352 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  8. UML学习(一)类图和对象图

    对象是一个概念,一种抽象或者事物.对象能够是具有现实意义的事物,也能够是抽象的一个概念.比方,一家公司或者一个进程. 类是一组对象的集合或者抽象的概念.类具有同样的属性和方法. 介绍完基本对象和类的基 ...

  9. ****** 五十 ******、软设笔记【UML分析和意义】-类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图,动静态模式...

    一.类图(Class Diagram) 描述一组类.接口.协作已经它们之间的图,用来显示系统中各个类的静态结构图. 类之间的关系(relationship) *依赖(dependency) *泛化(g ...

  10. UML建模—EA创建Class(类图)

    1.新建类图 2.添加类或接口 在类图可以捕获系统-类-和模型组件的逻辑结构.它是一个静态模型,描述存在什么,有哪些属性和行为,而不管如何去做. 说明关系之间的类和接口; 泛化. 聚合和关联是在分别反 ...

最新文章

  1. 开放式创新改变世界——OpenStack生态系统将重新洗牌
  2. 【Spring学习】Spring简介
  3. cudamemcpy运行速度很慢_只要设置好这几个选项,让你的 PS CC 2019 运行如飞
  4. 谷歌本地不支持websocket_django开发-websocket的实现
  5. Python爬虫自学之第(⑤)篇——爬取某宝商品信息
  6. 7-192 素因子分解 (20 分)
  7. Hadoop编译打包记录
  8. linux中如何自定义命令行,linux终端颜色和命令行自定义
  9. Authorize.Net使用小结
  10. 高效编排有状态应用——TiDB 的云原生实践与思考
  11. 系统修复对电脑的影响有哪些
  12. 网站优化之如何让站群链轮做到极致
  13. 招标采购专业实务课程大纲--刘小明老师
  14. 日语毕业论文日文参考文献怎么找?
  15. win10系统下SQL2012下载及安装
  16. Dreamweaver视频教程(共53课时)
  17. vue NavigationDuplicated: Avoided redundant navigation to current location
  18. ckplayer6.8修改logo
  19. Visual Studio 2017中找不到商业智能(Business Intelligence)模块 |
  20. ios 纯代码怎么适配ipad_iOS屏幕适配(纯代码)

热门文章

  1. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用
  2. pythondjango网页制作_python+django加载静态网页模板解析
  3. journalctl -xe
  4. cadence17.2制作封装过程
  5. 黑马程序员python入门学习笔记
  6. ubuntu下载字体
  7. junit5 入门系列教程-05-junit5 断言(assert)
  8. JsBarcode的使用
  9. Jdk8下载安装配置教程
  10. 虚拟机桥接模式连不上网问题(非桥接网卡原因)