[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)封装了数据和行为,是面向对象的重要组成部分,它是具有相 ...
随机推荐
- C++ 流操作符重载函数
1. 问题 在C++中,在进行输入输出操作时,我们首先会想到用cout, cin这两个库操作语句来实现,比如 cout << 8 << "hello world!&q ...
- 12-4 NSString
原文:http://rypress.com/tutorials/objective-c/data-types/nsstring NSString 在本教程的内容可能我们已经看到过很多次了,NSStri ...
- HDU 2829 Lawrence(斜率优化DP O(n^2))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 题目大意:有一段铁路有n个站,每个站可以往其他站运送粮草,现在要炸掉m条路使得粮草补给最小,粮草 ...
- 玩转RaspberryPi
step1:烧制树莓派内存卡 可以用[Linux系统烧制]http://www.williamsang.com/archives/1764.html 如果用windows烧制的话,就用Win32 Di ...
- python安装numpy和scipy的资源
whl资源:注意python版本和位数. http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
- CentOS7.5安装teamviwer13
1.首先到官网下载teamviewer13的rpm包 https://www.teamviewer.com/zhcn/download/linux/ 2.安装 安装依赖包 http://mirror. ...
- IPV4网段划分
IPV4的地址分类及网络号的范围如下: A类地址 (1)A类地址第1字节为网络地址,其它3个字节为主机地址. (2)A类地址范围:1.0.0.1—126.255.255.254 (3)A类地址中的私有 ...
- php在web服务器中的工作原理
1.web工作原理 我是学习PHP网站建设的,那么网站在客户端和服务端的运行是网站运行的根本所在,那个这个运行过程是怎样的呢?我们一探就将! Web:终端 服务器web:我们把提供(响应)服务的计算机 ...
- Linux操作命令(五)
find . -name ”*.c" -exec ./command.sh {} \; 本次实验将介绍 Linux 命令中 find 和 xargs 命令的用法. find xargs 1. ...
- PAT L3-011. 直捣黄龙
最短路. 先求出一个只包含最短路的$DAG$,然后在$DAG$上$dp$一下就可以了.英文变数字还有$map$转一下. #include<map> #include<set> ...