UML中类关系表示与Java代码中的对应关系

1. 类的UML表示法

上图中,Employee 类有两个String类型的私有属性和一个返回值为String类型public 方法 getName();

2. 类的关联关系

关联(Association)关系是一种结构化关系,用于表示一类对象与另一类对象之间有联系。

在代码实现上,通常将一个类的对象作为另一个类的成员变量。

通常用 带箭头的直线表示关联关系.

  • 双向关联
  • 单向关联
  • 限定关联

限定关联通常是从较大集合中选择一个实例。
用代码实现限定关联时,成员变量通常是Map,而Map的键就是限定符。

  • 自关联

  • 聚合关系

聚合(Aggregation)关系表示整体与部分的关联关系。聚合关系用带空心菱形的直线表示。

在用代码实现聚合关系时,成员对象通常作为构造方法、Setter方
法或业务方法的参数注入整体对象中。

  • 组合关系

组合(Composition)关系也表示类之间整体和部分的关联关系,但
是在组合关系中,整体对象可以控制成员对象的生命周期,一旦整体对
象不存在,成员对象也将不存在,成员对象与整体对象之间具有“同生
共死”的关系。在UML中,组合关系用带实心菱形的直线表示。

在用代码实现组合关系时,通常在整体类的构造方法中直接实例化
成员类。成员对象域整体对象有同样的生命周期,也就是要“共生死”,
这也是组合和聚合的主要区别。

3. 类的依赖关系

依赖(Dependency)关系是一种使用关系。
大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

依赖关系通常通过3种方式来实现:

  1. 将类的对象作为另一个类中方法的参数。
  2. 一个类的方法中将类的对象作为局部变量。
  3. 一个类的方法中调用另一个类的静态变量。

4. 类的泛化关系

泛化(Generalization)关系也称为继承关系,用于描述父类与子类之间的关系。父类称为基类或超类,子类称为派生类。
在UML中,泛化关系用带空心三角形的直线来表示。
在代码实现时,我们使用面向对象的继承机制来实现泛化关系。

5. 接口与实现关系

在UML中,类与接口之间的实现关系通常是用带空心三角形的虚线来表示。

参考资料

  1. 《代码精进之路:从码农到工匠》

UML中类关系表示与Java代码中的对应关系的更多相关文章

  1. java高级用法之:在JNA中将本地方法映射到JAVA代码中

    目录 简介 Library Mapping Function Mapping Invocation Mapping 防止VM崩溃 性能考虑 总结 简介 不管是JNI还是JNA,最终调用的都是nativ ...

  2. Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)

    <bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil& ...

  3. 使用mongo-java-driver3.0.2.jar和mongodb3.0在java代码中的用户验证4

    以下是使用mongo-java-driver3.0.2.jar和mongodb3.0.4在java代码中的用户验证: ServerAddress sa = new ServerAddress(host ...

  4. Android color(颜色) 在XML文件和java代码中

    Android color(颜色) 在XML文件和java代码中,有需要的朋友可以参考下. 1.使用Color类的常量,如: int color = Color.BLUE;//创建一个蓝色 是使用An ...

  5. 关于在Java代码中写Sql语句需要注意的问题

    最近做程序,时不时需要自己去手动将sql语句直接写入到Java代码中,写入sql语句时,需要注意几个小问题. 先看我之前写的几句简单的sql语句,自以为没有问题,但是编译直接报错. String st ...

  6. java代码中获取进程process id(转)

    另一方面,线程ID=进程ID+内部线程对象ID并不成立,    参考: blog.csdn.net/heyetina/article/details/6633901     如何在java代码中获取进 ...

  7. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

  8. Java代码中获取Json的key值

    测试json字符串: {"access_token":"hkbQl5o_l67dZ7_vJRATKBwTLk9Yj5QyMuOJThAr8Baj0xWf4wxW1p4ym ...

  9. 在java代码中执行js脚本,实现计算出字符串“(1+2)*(1+3)”的结果

            今天在公司项目中,发现一个计算运费的妙招.由于运费规则各种各样,因此写一个公式存到数据库.下次需要计算运费时,直接取出这个公式,把公式的未知变量给替换掉,然后计算出结果就是ok了. 一 ...

随机推荐

  1. ArcMap操作随记(9)

    1.类似PS中功能的工具 [镜像要素].[比例].[延伸] 2.快速获得栅格统计参数 [获取栅格属性]工具 3.[编辑器][创建要素][构造工具] 可以右键,输入半径等参数 4.计算面的角度 [计算面 ...

  2. java反射之java 泛型的本质

    1.泛型 反射API用来生成在当前JAVA虚拟机中的类.接口或者对象的信息.Class类:反射的核心类,可以获取类的属性,方法等内容信息.Field类:Java.lang.reflect.表示类的属性 ...

  3. Azure DevOps (六) 通过FTP上传流水线制品到Linux服务器

    上一篇我们实现了把流水线的制品保存到azure的流水线制品仓库里去,本篇我们会开始研究azure的发布流水线. 本篇要研究的是把流水线仓库的制品发布到任意一台公网的linux服务器上去,所以我们先研究 ...

  4. Java设计模式之单例模式理解

    前言 本片博客主要记录Java23种设计模式中的创建型模式中的单例模式.单例模式可分为两类,一种是饿汉式,一种是懒汉式.饿汉式的三种设计方式(静态变量方式.静态代码块方式.枚举方式),懒汉式(单锁检查 ...

  5. Linux下swap(交换分区)的增删改

    swap介绍 Linux 的交换分区(swap),或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合.交换分区的作用是,当系统物理内存吃 ...

  6. 西门子S210驱动器接线

    参考:SINAMICS S210 操作说明 1.系统概述 P28 节2.2 单相版驱动器的系统组件和附件 2.电源接线 P56 节3.2 单相 230 V 版驱动器的连接示例 单相版驱动器在 IT 电 ...

  7. Spring Authorization Server 0.2.3发布,放出联合身份DEMO

    很快啊Spring Authorization Server又发新版本了,现在的版本是0.2.3.本次都有什么改动呢?我们来了解一下. 0.2.3版本特性 本次更新的新特性不少. 为公开客户端提供默认 ...

  8. Linux C申请内存三种基本方式

    一份代码可以知道具体方式和原理: int main() { int stack_a; int stack_b; static int static_c; static int static_d; in ...

  9. 什么是bean装配?

    装配,或bean 装配是指在Spring 容器中把bean组装到一起,前提是容器需要知道bean的依赖关系,如何通过依赖注入来把它们装配到一起.

  10. Redis 集群如何选择数据库?

    Redis 集群目前无法做数据库选择,默认在 0 数据库.