[UML] UML中类之间的几种关系
关联关系用实线+箭头表示。上图显示Customer和Order是双向一对多关联关系。对应的Java代码如下所示:
class Customer { private Integer id; private String name; private Set<Order> orders; public Set<Order> getOrders() { return orders; } public void setOrders(Set<Order> orders) { this.orders = orders; } } class Order { private Integer id; private float money; private Customer customer; public Customer getCustomer() { return customer; } public void setCustomer(Customer customer) { this.customer = customer; } }
class Bicycle { public void expand(Pump pump) { pump.blow(); } } class Pump { public void blow() { System.out.println("正在充气......"); } }
打气筒并不属于某个特定的自行车,一个打气筒可以为多个自行车提供充气的服务。在Bicycle中不需要定义Pump类型的属性,而是将传递了一个Pump类型的参数到Bicycle的方法中。
3: 聚合是整体与部分之间的关系。例如计算机和主板,计算机是一个整体,主板是其中的一部分,主板、显卡、显示器等部件组成了计算机。对应的UML图如下所示:
聚合使用空心菱形+实线表示。上图显示Computer是由MainBoard和DisplayCard等组成的。对应的Java代码如下所示:
class Computer { private MainBoard mainBoard; private DisplayCard displayCard; public void on() { System.out.println("开启计算机......"); } public void close() { System.out.println("关闭计算机......"); } public void run() { System.out.println("计算机正在运行......"); } } class MainBoard { public void control() { System.out.println("控制计算机......"); } } class DisplayCard { public void display() { System.out.println("计算显示数据......"); } }
class People { private Head head; private Hand hand; private Leg leg; public void think() { head.think(); } public void holdThing() { hand.holdThing(); } public void walk() { leg.walk(); } } class Head { public void think() { System.out.println("思考......"); } } class Hand { public void holdThing() { System.out.println("拿东西......"); } } class Leg { public void walk() { System.out.println("走路......"); } }
class People { protected String name; protected String sex; protected Date birthday; public void eat() { System.out.println(name + "正在吃饭......"); } public void drink() { System.out.println(name + "正在喝水......"); } public void sleep() { System.out.println(name + "正在休息......"); } } class Student extends People { public void study() { System.out.println(name + "正在学习......"); } }
Student继承自People,并且多了一个study的方法。
6: 实现即一个类实现了某个接口。对应的UML图如下所示:
实现用三角形箭头和虚线表示。上图表示类CarDriver和PlaneDriver都实现了Driver接口。对应的Java代码如下所示:
public interface Driver { void drive(); } class CarDriver implements Driver { public void drive() { System.out.println("驾驶汽车......"); } } class PlaneDriver implements Driver { public void drive() { System.out.println("驾驶飞机......"); } }
[UML] UML中类之间的几种关系的更多相关文章
- UML中类之间的几种关系
类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...
- 浅谈UML中类之间的五种关系及其在代码中的表现形式
本文转载:http://www.cnblogs.com/DebugLZQ/archive/2013/05/13/3066715.html 什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种 ...
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统中, ...
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现(转)
UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 2) 在系统 ...
- UML类图画法及其之间的几种关系(转)
UML类图画法及其之间的几种关系 最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的 ...
- UML类图画法及其之间的几种关系
最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的几种关系:泛化(Generaliz ...
- ZT 类与类之间的四种关系
csdn上一个好贴子:http://bbs.csdn.net/topics/390646332 类与类之间的四种关系1.依赖(Dependency) 类A在类B中作为一个成员函数的参数或者是返回值 ...
- 【转】UML中类与类之间的5种关系表示
一.继承关系 继承指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力.在Java中继承关系通过关键字extends明确标识,在设计时一 ...
- 【转】UML图中类之间的关系
原文:http://blog.csdn.net/hguisu/article/details/7609483 类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
随机推荐
- 简述MapReduce计算框架原理
1. MapReduce基本编程模型和框架 1.1 MapReduce抽象模型 大数据计算的核心思想是:分而治之.如下图所示.把大量的数据划分开来,分配给各个子任务来完成.再将结果合并到一起输出.注: ...
- 【DUBBO】dubbo的Router接口
Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服 ...
- AC日记——[HNOI2008]玩具装箱toy bzoj 1010
1010 思路: 斜率优化DP: 跪烂大佬 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 #de ...
- 深刻剖析VuGen脚本录制原理
扩展:深刻剖析VuGen脚本录制原理 LR中的VuGen组件,主要扮演一个proxy server的角色,在录制脚本时,记录下用户和服务器交互,然后自动生成脚本语言.在接下来的重放,或者大批量地加压时 ...
- hdu 1698 Just a Hook(线段树区间修改)
传送门:Just a Hook Problem Description In the game of DotA, Pudge’s meat hook is actually the most horr ...
- bootstrap bootstrapvalidator插件+adjax验证使用
1.利用bootstrap Validator表单验证进行表单验证需要如下CSS和JS. <link rel="stylesheet" type="text/css ...
- js实现杨辉三角
杨辉三角是计算二项式乘方展开式的系数时必不可少的工具.是由数字排列而成的三角形数表. 资料:杨辉三角第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为 ...
- python中浅拷贝和深度拷贝的区别
在很多面试题中都会问到浅拷贝跟深度拷贝的区别,前几天一个朋友也问到了我浅拷贝跟深度拷贝到底有什么区别,这里就简单举栗子讲一下两者的区别. 浅拷贝(copy()):拷贝父对象,不会拷贝对象的内部的子对象 ...
- ubuntu的boot分区报警,删除无用内核文件。
1. 查看当前使用内核:uname -r4.4.0-97-generic 2. 查看安装的内核dpkg --list 'linux-image*' 3. 删除旧内核sudo apt-get remov ...
- HDU 6336 Matrix from Arrays
Problem E. Matrix from Arrays Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 ...