程序员必备UML类图的画法
Posted 民间闲散程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员必备UML类图的画法相关的知识,希望对你有一定的参考价值。
民间闲散程序员
关注
之前在对接工作的时候,我需要一个程序的类图,要求其它公司的程序员给我发一下,他迅速回我:“什么叫类图”。在快速迭代的公司,大家只顾开发,可能没有任何文档,一个程序员离职之后,其他人需要很久时间才能接手他的代码。所以一些类图和流程图是必备的技能,也是一个程序员的专业素养,所以我会接下来分几篇介绍一下这几类图的画法。
今天要说的就是UML类图,对于Java而言,最基础的就是类,通过类图,可以很直观地理解程序的结构。我的画图工具是omnigraffle,当然用其他软件也可以。
基本类
先看一个基本类的书写方式:
public class Person {
private String age="12";
public String name;
public void setAge(String age) {
this.age = age;
}
protected void run(){
}
private void jump(){
}
}
类图如下:
“-”代表private,“+”代表public,“#”代表protect。
第一行是类名,第二行是属性,第三行为方法。
继承
再看一个继承关系的类,Work类继承Person:
public class Worker extends Person {
private String id;
public void work(){
}
}
类图如下:
Work类继承Person类,继承的方法不需要在Work中写出,只需要写出特有的方法和属性,使用箭头进行连接。
抽象继承
我们修改一下Person类:
public abstract class Person {
private String age="12";
public String name;
public abstract void work();
public void setAge(String age) {
this.age = age;
}
protected void run(){
}
private void jump(){
}
}
Work类不变。
与上面普通继承不同的是,抽象类和抽象方法,使用斜体。
接口
再来看一下接口,我们需要定义一个接口:
public interface IWork {
public void salary();
}
让Work类实现这个接口。
public class Worker extends Person implements IWork{
private String id;
public void work(){
}
@Override
public void salary() {
}
}
看一下类图:
实现接口需要使用虚线。
依赖
依赖可以理解为,某个类中临时或偶然会用到某个类,比如Person类跑步需要鞋,修改一下Person中的run方法:
protected void run(Shoes shoes){
}
类图如下:
依赖可以使用一个虚线箭头表示,前面提到的继承关系都是用的空心箭头
关联
关联是指两个类之间有强依赖关系,一般说明一个类是另一个类的成员变量,如Person类中加一个Phone类:
public Phone phone;
类图如下:
与上面不同的是虚线变为实线。
聚合和组合
聚合关系是标识整体与部分的关系,整体与部分之间可以拆卸。而组合是不能拆卸的举个例子吧:眼睛是可以拆卸的,甚至对于人来说是可有可无的(可以为空),但是脑袋是必须有的对吧(不可为空)。好的我们看一下Person类。
public abstract class Person {
private String age="12";
public String name;
public Phone phone;
public Head head;
public Glass glass;
public abstract void work();
public Person(){
head = new Head();
}
public void setAge(String age) {
this.age = age;
}
protected void run(Shoes shoes){
}
private void jump(){
}
}
glass可以为空但是head构造函数的时候就要初始化,不可为空。所以glass类与Person的关系是聚合,Head类是组合:
可以看出组合与聚合是差不多的,唯一画法的区别是底部,组合是实心圆形,聚合是空心的。
最后给大家放一下整体的类图模型:
学会使用UML类图,一定会让你的程序文档逻辑更清楚,老板看后,保证升职加薪指日可待。
• end •
作者 | mymdeep
以上是关于程序员必备UML类图的画法的主要内容,如果未能解决你的问题,请参考以下文章