开发Java应用程序时,开发者要想有效地利用统一建模语言(UML),必须全面理解UML元素以及这些元素如何映射到Java。本文重点讨论UML类图中的元素。

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

元素

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

类(Class)

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

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

图A

 

包(Package)

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

图B

接口(Interface)

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

图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

精确映射

如本文所述,UML类图上的元素能精确映射到Java编程语言。开发团队的成员可利用这种精确性来加强沟通,取得对系统结构化设计的共识。

全面认识UML-类图元素(java)相关推荐

  1. 全面认识UML类图元素

    2019独角兽企业重金招聘Python工程师标准>>> 开发Java应用程序时,开发者要想有效地利用统一建模语言(UML),必须全面理解UML元素以及这些元素如何映射到Java.本文 ...

  2. UML类图、JAVA DesignMode 设计模式、设计原则

    全文2.6W余字,读完需要20分钟,介绍23种设计模式,每个模式都有案例与真实使用场景,能够帮助初学者快速了解设计模式,建立起对代码中设计模式的初步理解,要明确:设计模式只是帮助我们更好的设计代码架构 ...

  3. 怎样用uml类图生成java类_JAVA:面向对象编程的底层逻辑,深度剖析

    什么是面向对象 在目前的软件开发领域有两种主流的开发方法,分别是结构化开发方法和面向对象开发方法.早期的编程语言如C.Basic.Pascal等都是结构化编程语言,随着软件开发技术的逐渐发展,人们发现 ...

  4. java实现系统中控件类图_阅读以下关于某订单管理系统的技术说明、部分UML类图及Java程序,将Jav..._考试资料网...

    打开考生文件夹下的Word文档WORD1.doc,其内容如下:打开考生文件夹下的Word文档WORD1.doc,其内容如下:[WORD1.doc文档开始]人生要学会遗忘人生在世,忧虑与烦恼有时也会伴随 ...

  5. java uml 类图 加号_UML建模基础 UML类图的组成元素和关系解析

    本文和大家重点讨论一下在UML建模中UML类图的java代码表现,主要包括UML类图元素和关系两大部分内容,相信通过本文的介绍你对UML类图的概念一定会与明确的认识. 在UML建模中UML类图的jav ...

  6. VSCode绘制UML类图

    目录 1. 简介 1.1 PlantUML 1.2 安装PlantUML 1.3 支持的文件格式 2. 绘制UML类图 类之间的关系​​​​ 关系上的标签​​​​ 添加方法​​​​ 定义可访问性 3. ...

  7. 韩老师设计模式1:7原则。依赖关系3种方法。UML类图6关系。

    面试 1. 原型模式 1)有请使用UML类图画出原型模式核心角色2) 原型设计模式的深拷贝和浅拷贝是什么,并写出深拷贝的两种方式的源码(重写 clone方法实现深拷贝. 使用序列化来实现深拷贝)3) ...

  8. VS 2010 通过 Architecture创建UML类图设计

    [赛迪网报道]类是对应用领域或应用解决方案中概念的描述.类图以类为中心进行组织,类图中的其他元素或属于某个类,或与类相关联.类也是对象的集合,展示了对象的结构及与系统交互的行为,其目的是显示建模系统的 ...

  9. [轉]VS 2010 通过 Architecture创建UML类图设计

    类是对应用领域或应用解决方案中概念的描述.类图以类为中心进行组织,类图中的其他元素或属于某个类,或与类相关联.类也是对象的集合,展示了对象的结构及与系统交互的行为,其目的是显示建模系统的类型.类主要由 ...

  10. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

最新文章

  1. DS18B20 理解与操作源码
  2. SQL2012数据库加密方法
  3. 求你了,别再用 print 调试代码了
  4. vue从入门到精通之进阶篇(一)vue-router基础
  5. 关于我的知识星球服务
  6. tomcat webapps目录文件都能删吗_详细测试实现Tomcat根域名访问的场景,看这篇文章就够了...
  7. 《星辰傀儡线》人物续:“灭世者”、“疯狂者”、“叛逆者”三兄妹
  8. 你的 ResNet 是时候更新了
  9. html5 area 获取坐标,HTML 5
  10. 电子政务概论-课程形成性考核册
  11. read tcp 192.168.0.106:56298->185.199.111.153:80: wsarecv: An existing connection was forcibly close
  12. Spark面试近300题初始版本
  13. Windows安全描述符SECURITY_DESCRIPTOR阅读注释
  14. 罗杨美慧 20190905-1 每周例行报告
  15. Easyrecovery13 for mac 易恢复软件 官方中文版下载
  16. 魔兽转移账号的服务器,《魔兽世界》那些区能进行免费角色转移服务 安苏、死亡之翼服务器免费角色转移服务现已开放...
  17. ASP.NST 运行原理
  18. 推荐一款简单的页面加密网页(免费的哦)
  19. 51单片机:STC-ISP的USB驱动安装解决办法
  20. 【干货分享】最新WHQL徽标认证申请流程

热门文章

  1. php 加载redise_php环境篇:redis服务编译安装
  2. mp3排序软件哪个好用_电脑录音软件哪个好用?
  3. loadrunner直接压post请求loadrunner直接压post请求
  4. 51. N皇后/52. N皇后 II
  5. 利用PowerShell Empire实现Word文档DDE攻击控制(简单没啥用)
  6. golang 生成随机数
  7. Spring MVC —— 前后台传递JSON
  8. 电子游戏市场的演变————零售
  9. 源码分析Android Handler是如何实现线程间通信的
  10. 解决oracle数据库连接不上的问题