UML类图介绍

Posted 编程小白洋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML类图介绍相关的知识,希望对你有一定的参考价值。

基本定义

在UML中,类使用包含类名、属性和操作且带有分隔线的长方形来表示,如定义一个Employee类,它包含属性name、age和email,以及操作modifyInfo(),在UML类图中该类如图1所示

第一层显示类的名称,如果是抽象类,就用斜体显示第二层,为类的特性,通常就是字段和属性第三层是类的操作,通常是方法或者行为。

对应的代码如下

public class Employee {
private String name;
private int age;
private String email;

public void modifyInfo() {
......
}
}

方法详解

第三部分是类的操作(Operations):操作是类的任意一个实例对象都可以使用的行为,是类的成员方法。

UML规定操作的表示方式为:可见性 名称(参数列表) [ : 返回类型]

其中:

“可见性”的定义与属性的可见性定义相同。“名称”即方法名,用一个字符串表示。“参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。“返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。+ 表示 public- 表示 private#表示 protected

UML类图介绍

操作method1的可见性为public(+),带入了一个Object类型的参数par,返回值为空(void);

操作method2的可见性为protected(#),无参数,返回值为String类型;

操作method3的可见性为private(-),包含两个参数,其中一个参数为int类型,另一个为int[]类型,返回值为int类型。

关系

UML类图介绍

图片为标准类图关系类型的定义,太过于抽象化,下面我会列出一些常用的通俗关系

继承关系 :空心三角形 + 实线

如下图所示中,Student类与Teacher类继承了Person类

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() {
……
}
}

接口关系:空心三角形 + 虚线

如下图中,Car类与Ship类都实现了Vehicle接口。

UML类图介绍

public interface Vehicle {
public void move();
}

public class Ship implements Vehicle {
public void move() {
……
}
}

public class Car implements Vehicle {
public void move() {
……
}
}

关联关系 :

a.单向关联实线箭头

public class Customer {
private Address address;
……
}

public class Address {
……
}

b.双向关联实线

例如:顾客(Customer)购买商品(Product)并拥有商品,反之,卖出的商品总有某个顾客与之相关联。因此,Customer类和Product类之间具有双向关联关系UML类图介绍

public class Customer {
private Product[] products;
……
}

public class Product {
private Customer customer;
……
}

c. 自关联

用一个带有箭头且指向自身的直线表示。UML类图介绍上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。

聚合关系 空心的菱形 + 实线箭头

例如:汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系UML类图介绍在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中,图6对应的Java代码片段如下:

public class Car {
private Engine engine;

//构造注入
public Car(Engine engine) {
this.engine = engine;
}

//设值注入
public void setEngine(Engine engine) {
this.engine = engine;
}
……
}

public class Engine {
……
}

组合关系 实心的菱形 + 实线箭头

例如:人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系UML类图介绍

public class Head {
private Mouth mouth;

public Head() {
mouth = new Mouth(); //实例化成员类
}
……
}

public class Mouth {
……
}

依赖关系 虚线箭头

动物依赖于氧气和水。他们之间是依赖关系

public abstract class Animal{
public Metabolism (Oxygen oxygen, Water water){

}

//do something .......
}

编程是一门技术,更加是一门艺术。UML 类图也不是一学就会的,需要有一个慢慢熟练的过程。所谓学无止境,大家一起加油!!


以上是关于UML类图介绍的主要内容,如果未能解决你的问题,请参考以下文章

UML类图介绍以及PlantUML使用方法

(转)面向对象——UML类图设计

UML类图介绍

UML类图

程序员必备UML类图的画法

UML建模类图