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
操作method1的可见性为public(+),带入了一个Object类型的参数par,返回值为空(void);
操作method2的可见性为protected(#),无参数,返回值为String类型;
操作method3的可见性为private(-),包含两个参数,其中一个参数为int类型,另一个为int[]类型,返回值为int类型。
关系
图片为标准类图关系类型的定义,太过于抽象化,下面我会列出一些常用的通俗关系
继承关系 :空心三角形 + 实线
如下图所示中,Student类与Teacher类继承了Person类
//父类
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接口。
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类之间具有双向关联关系
public class Customer {
private Product[] products;
……
}
public class Product {
private Customer customer;
……
}
c. 自关联
用一个带有箭头且指向自身的直线表示。上图的意思就是Node类包含类型为Node的成员变量,也就是“自己包含自己”。
聚合关系 空心的菱形 + 实线箭头
例如:汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,因此,汽车和发动机是聚合关系在代码实现聚合关系时,成员对象通常作为构造方法、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),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,因此头和嘴巴是组合关系
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类图介绍的主要内容,如果未能解决你的问题,请参考以下文章