UML类图简明教程
作者:郭孝星
微博:郭孝星的新浪微博
邮箱:allenwells@163.com
博客:http://blog.csdn.net/allenwells
Github:https://github.com/AllenWells
类图用于描写叙述系统中所包含的类以及它们之间的相互关系,它是系统分析和设计阶段的重要产物,也是系统编码和測试的重要模型根据。
一 类图结构
类封装了数据和行为,它是具有同样属性、操作和关系的对象集合的总称。
在系统分析与设计阶段。类通常分为三种:
- 实体类:实体类是系统需求中的实体,实体类通常保存在永久记忆体中,一般使用数据库表或文件来记录。实体类既包含存储数据的类、传递数据的类和操作数据的类。实体类通常来源于需求说明中的名词(比如:用户、产品)。
- 控制类:控制类体现了应用的运行逻辑,提供相应的业务操作。将控制类抽象出来能够减少界面和数据库之间的耦合度。
控制类通常有动词+名词来命名(比如:UserRegister)。
- 边界类:边界类用于对外部用户与系统之间的交互对象进行抽象,主要包含界面类(比如:对话框、窗体、菜单)。
类的组成
例如以下图所看到的:
- 类名:类的名字
- 属性:类的成员变量
- 操作:类的成员方法
属性的表示方式例如以下所看到的:
可见性 名称:类型[=缺省值]
- 可见性:public、private和protected,在类图中分别用+、-和#表示。
- 名称:属性的名称。
- 类型:属性的数据类型,能够是基本数据类型,也能够是用户自己定义的类型。
- 缺省值:可选项,表示属性的初始值。
二 类图关系
2.1 关联
关联是一种结构化关系。用于表示一类对象与还有一类对象之间有联系。
在UML类图中。用实线连接有关联关系的对象所相应的类。
2.1.1 双向关联
双向关联表示双向关联是双向的。
2.1.2 单向关联
单向表示关联是单向的。
2.1.3 自关联
自关联表示类的属性对象类型为该类本身。
2.1.4 多重关联
多重关联又称为重数性关联,表示两个关联对象在数量上的相应关系。
常见的多重关联例如以下所看到的:
- 1..1 表示还有一个类的一个对象仅仅与该类的一个对象有关系
- 0..* 表示还有一个类的一个对象与该类的零个或多个对象有关系
- 1..* 表示还有一个类的一个对象与该类的一个或多个对象有关系
- 0..1 表示还有一个类的一个对象没有或仅仅与该类的一个对象有关系
- m..n 表示还有一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n)
2.2 聚合/组合
2.2.1 聚合
聚合表示总体和部分关系,在聚合关系中成员对象是总体的对象的部分,可是成员对象能够脱离总体对象独立存在。
在UML中,聚合关系用带空心菱形的直线表示,例如以下图所看到的:
在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的參数注入到总体对象中。例如以下所看到的:
public class Car
{
private Engine engine;
//构造注入
public Car(Engine engine)
{
this.engine = engine;
}
//设值注入
public void setEngine(Engine engine)
{
this.engine = engine;
}
}
public class Engine
{
……
}
2.2.2 组合
组合关系也表示总体和部分的关系。可是在组合关系汇总总体对象能够控制成员对象的生命周期,一旦总体对象不存咋了。成员对象也将不存在。
在UML中,组合关系用带实心菱形的直线表示,例如以下图所看到的:
在代码实现组合关系时,通常在总体类的构造方法中直接实例化成员类,例如以下所看到的:
public class Head
{
private Mouth mouth;
public Head()
{
mouth = new Mouth(); //实例化成员类
}
}
public class Mouth
{
……
}
2.3 依赖
依赖关系是一种使用关系,依赖关系通常体如今某个类的方法使用还有一个类的对象作为參数。
在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。例如以下图所看到的:
在代码实现依赖关系时,通常有三种方式,例如以下所看到的:
- 将一个类的对象作为还有一个类中方法的參数
- 在一个类的方法中将还有一个类的对象作为其局部变量
- 在一个类的方法中调用还有一个类的静态方法
public class Driver
{
public void drive(Car car)
{
car.move();
}
}
public class Car
{
public void move()
{
……
}
}
2.4 继承
继承关系用来描写叙述父类与子类自检的关系。
在UML中。泛化关系用带空心三角形的直线来表示。例如以下图所看到的:
在代码实现时。我们使用面向对象的继承机制来实现继承关系,例如以下所看到的:
//父类
public class Person
{
protected String name;
protected int age;
public void move()
{
……
}
public void say()
{
……
}
}
//子类
public class Student extends Person
{
private String studentNo;
public void study()
{
……
}
}
//子类
public class Teacher extends Person
{
private String teacherNo;
public void teach()
{
……
}
}
2.5 接口与实现
接口之间也能够有像类之间关系那样的继承关系和依赖关系,可是接口和类之间还存在着一种实现关系。
在实现关系中。类实现了接口中定义的全部操作。
在UML中。类与接口之间的实现关系用带空心三角形的虚线来表示。例如以下图所看到的:
在代码实现时使用implents关键字,例如以下所看到的:
public interface Vehicle
{
public void move();
}
public class Ship implements Vehicle
{
public void move()
{
……
}
}
public class Car implements Vehicle
{
public void move()
{
……
}
}
UML类图简明教程的更多相关文章
- 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构
版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...
- 转:深入浅出UML类图(具体到代码层次)
深入浅出UML类图 作者:刘伟 ,发布于:2012-11-23,来源:CSDN 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML ...
- 深入浅出UML类图(一)
在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the Standard O ...
- 深入浅出UML类图
原作者:http://www.uml.org.cn/oobject/201211231.asp 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作&l ...
- 深入了解UML类图
深入浅出UML类图 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the ...
- 【转】深入浅出UML类图
转自:http://www.cppblog.com/API/archive/2013/07/04/201506.html 在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin ...
- ABP源码uml类图
陆陆续续学习ABP框架有一段时间了,阳光铭睿的入门教程和HK Zhang的源码分析文章对我的学习帮助都很大.之所以会花这么大工夫去学习ABP.看ABP的源代码,一是因为本人对于DDD也非常有兴趣,AB ...
- 再学UML-深入浅出UML类图(一)
在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the Standard O ...
- 架构-UML类图
在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML Distilled: A Brief Guide to the Standard O ...
随机推荐
- idea下载多个插件项目启动不了解决方案
今天下载mybatis plugin插件的时候 有好多个版本的plugin,然后呢,看第二个比较热门,就下载了第二个,然后重启idea发现这个插件貌似得花钱,那算了吧,咱用第一个免费的吧,就又下载了第 ...
- pat 团体天梯赛 L2-004. 这是二叉搜索树吗?
L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...
- NOI2001食物链
描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B,B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人 ...
- day5感想
---恢复内容开始--- 我感觉自己真的是太弱了,和那些从初中开始学的人TT 今天讲的数学,毕竟以前尖子生培训打过点基础,感觉还不错,但也仅限于听懂而已,打代码什么的…… 今天的内容: 一.数论 1. ...
- wap提交表单
原文发布时间为:2010-08-31 -- 来源于本人的百度文章 [由搬家工具导入] <%@ page contentType="text/vnd.wap.wml" page ...
- AC日记——银河英雄传说 codevs 1540
1540 银河英雄传说 2002年NOI全国竞赛 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 公元五 ...
- (4)JavaScript引用类型
Object类 创建object实例的方式有两种 1.第一种是使用 new 操作符后跟 Object 构造函数 var person = new Object(); person.name = &qu ...
- POJ3086 Treats for the Cows(区间DP)
题目链接 Treats for the Cows 直接区间DP就好了,用记忆化搜索是很方便的. #include <cstdio> #include <cstring> #i ...
- Web模糊测试工具Powerfuzzer
Web模糊测试工具Powerfuzzer Powerfuzzer是Kali Linux自带的一款Web模糊测试工具.该工具基于各种开源模糊测试工具构建,集成了大量安全信息.该工具高度智能化,它能根 ...
- Loj #6244. 七选五
link: https://loj.ac/problem/6244 让我们设B=N-K,再设F(P)为从1~P+B中选P个数(有序的),且这P个数是一个错排(即不存在一个i使得 i=Ai ,其中A是选 ...