类图是最常用的UML图,它用于描述系统的结构化设计。其中包括类关系以及与每个类关联的属性及行为。类图能出色地表示继承与合成关系。为了将类图作为一种高效的沟通工具使用,开发者必须理解如何将类图上出现的元素转换到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
- 大小: 3.7 KB
- 大小: 2.8 KB
- 大小: 4.4 KB
- 大小: 3.2 KB
- 大小: 3.4 KB
- 大小: 3.4 KB
- 大小: 3.4 KB
- 大小: 3.3 KB
- 大小: 3.3 KB
分享到:
相关推荐
UML图标在设计模式中起到关键的作用,它们清晰地描绘出类和对象之间的关系,如类图、对象图、序列图和协作图等。这些图标有助于理解模式的工作原理和实现方式。 Java实现则提供了具体的代码示例,帮助开发者更好地...
在软件开发过程中,UML类图被用来设计系统的结构,而UML类图中的元素需要映射到Java代码中以实现具体的业务逻辑。本文将讨论UML中的类图元素以及它们如何与Java语言相对应,以及如何通过UML描述Java类和Java与UML...
在Java中,接口通过`interface`关键字实现,可以是独立的图标,也可以是带有`<<interface>>`标记的标准类。 4. **类间关系**: - **依赖(Dependency)**:依赖表示一个类使用另一个类的情况,如局部变量、方法调用...
在Java中,接口通过`interface`关键字实现,它可以用特定的图标表示,也可以通过带有`<<interface>>`标记的标准类表示。 **类间关系** - **依赖(Dependency)**:当一个类的变动可能影响到另一个类时,它们之间存在...
Firefly UML 是真正容易学习,因为它为同一个功能提供多种方式,不管是鼠标操作访问,热键, 上下文菜单或工具栏图标.最好的是: 一旦你学会了如何处理一种类型的关系图,还因此学会了如何处理其他类型的图, 因为他们都...
StartUML是由Wayne Beaton开发的一款基于Java的UML建模软件,它可以运行在Windows、Linux和macOS等多个操作系统上。通过其简洁的用户界面,用户可以方便地绘制和管理UML模型,同时支持导出为各种格式,包括图片和XMI...
### UML相关图与Java相关代码详解 #### UML简介 UML(Unified Modeling Language,统一建模语言)是一种广泛...而Java作为实现这些设计的重要编程语言,与UML紧密结合,使得理论设计与实际编码之间有了无缝的过渡。
UML中,接口可以用专门的图标表示,或者通过带有`<<interface>>`标记的标准类表示。接口定义了一个类需要实现的服务。 4. **关系**: - **依赖(Dependency)**:表示一个类使用另一个类,变化可能会对其产生影响...
当打开类图时,NetBeans IDE会显示模型调色板(Modeling Palette)中特定的UML元素图标。利用类图模型,可以描述应用中元素的静态结构。IDE允许用户图形化地创建包含类的图表,这些类按照共享共同结构和行为的层次结构...
在MyEclipse中,正向工程通过UML-Generate Java菜单项实现,反向工程则通过UML-Reverse Engineer UML from Java完成。 除了MyEclipse自带的UML工具外,还有其他多种UML建模软件可供选择,如开源的Umbrello UML ...
ArgoUML是基于Java开发的一款轻量级UML建模工具,可以在任何支持Java的平台上运行。它提供了一个直观的用户界面,使得初学者也能快速上手,同时也具有足够的灵活性和扩展性,满足专业开发者的高级需求。ArgoUML支持...
ArgoUML是一款开源的、基于Java开发的统一建模语言(UML)建模工具,适用于多种操作系统,包括Mac OS X。它提供了创建、编辑和管理UML模型的功能,支持多种UML版本,如UML 1.4和部分2.0,是开发者和系统分析师进行...
- **代码生成**:ArgoUML支持从UML模型生成Java源代码,这在快速开发阶段非常有用。 - **逆向工程**:也可以从已有的Java代码反向生成UML模型,帮助理解代码结构。 - **XMI交换**:ArgoUML遵循XMI标准,可以与其他...
UML(Unified Modeling Language)是OMG(Object Management Group)发表的图标式软件设计语言,主要功能有可视化、说明、建造、建文档。UML 包括多种图表,例如用例图、类图、序列图、合作图、状态图、活动图、构件...
3. **基本操作**:在StartUML中,你可以通过拖拽和放置图标来创建元素,如类、接口、对象等。通过菜单栏的“编辑”选项,可以添加属性、操作和其他细节。右键点击元素可以进行编辑、复制、粘贴等操作。 4. **UML...
本资源提供的“java开发常用软件、框架、数据库高清图标visio模具”是一份非常实用的资料,它包含了一系列Java开发过程中经常用到的元素的高清图标,适合作为Visio绘制流程图或架构图时的模板。 首先,我们来探讨...
接口可以用特定图标表示,也可以通过带有`<<interface>>`标记的标准类来表示。 4. **关系** - **依赖(Dependency)**:表示一个实体的改变可能影响另一个实体。例如,当一个类依赖于另一个类的方法时,如果被依赖...
Java语言程序设计ppt-第十二章(UML图) 本章节主要介绍了Java GUI程序设计的基础知识,包括Swing和AWT的区别、Java GUI API的层次结构、如何使用GUI组件创建用户界面、布局管理器的作用、如何使用Color类和Font类...
泛化关系在代码中的实现通常依赖于编程语言的继承机制,例如Java使用extends关键字,C++和C#使用冒号“:”。泛化关系需要满足三个条件: 1. 子类应具备父类的所有属性和方法; 2. 子类可能拥有父类没有的额外属性...