解释
一个专门的图形表示的语言来管理和维护对象。UML提供了一套图形标准,通过使用UML可以让编程人员能够阅读和交流系统架构图、设计图。
例子
1.两个类之间的线条箭头代表对象之间的关联关系
如下图,代表类Student通过major属性关联了类Major。这两个类是在同一个包中,如果不在同一个包中,就需要在类Student中用import导入类Major,否则会报错“找不到符号”。
2.访问控制修饰符用UML类图表示
下图中,正方形表示private,圆形表示public,菱形表示protected。需要注意的是修饰符只和形状有关,和颜色以及是否是实心没有关系,因为不同的UML软件颜色有可能不同。
写成代码如下:
package com.qq.model;
public class User {
private String id;
private String name;
public void printName(){
}
}
3.UML 类图表示封装
封装就是把对象的属性隐藏起来,一般使用private控制符,这个时候救出现了getter、setter的方法规范。如下图表示。
写成代码如下:
public class User{
private String id;
//定义了一个关于名称的实例变量
private String name;
public String getId(){
return this.id;
}
public void setId(String id){
this.id = id;
}
/**
* 获取 name 的值
*/
public String getName(){
return this.name;
}
/**
* 设置 name 的值
*/
public void setName(String name){
this.name = name;
}
}
4.UML表示常量
如下,常量的表示就是有一条下划线。
代码如下:
public static String USER_KEY = "m_key";
//有时我们会加一个关键字final,代表这个变量不可以被再修改来保证代码安全
public static final String USER_KEY = "m_key";
5.UML表示继承
如下图所示,这个三角形箭头就表示下面的三个类继承父类Animal。
6.UML接口的定义
下图中,紫色的圆圈里面一个大写的“I”就表示interface接口。定义了一个RoleService接口类,依赖Role类。
代码如下:
package com.youkeda.service;
import com.youkeda.model.Role;//不再一个包中就需要导入
import java.util.ArrayList;
public interface RoleService {
public void addRole(Role role);
public ArrayList<Role> getRoles();
}
8.UML接口实现图
下图中,RoleServiceImpl实现了RoleService接口。
代码如下:
package com.youkeda.service.impl;
import com.youkeda.service.RoleService;
import com.youkeda.model.Role;
import java.util.ArrayList;
//实现类要实现接口中的所有方法
public class RoleServiceImpl implements RoleService{
private static ArrayList<Role> ROLES = new ArrayList<>();
public void addRole(Role role){
}
public ArrayList<Role> getRoles(){
return null;
}
}
9.抛出异常的表示
代码如下:
package com.youkeda.service;
public interface UserService {
//在这里抛出,调用者需要捕获
User login(String userName,String password) throws NullPointerException;
}
10.内部类UML表示
代码如下:
package com.youkeda.util;
public class OuterUtil {
public class InnerTool { // 内部类
public int add(int a,int b){
return a+b;
}
}
private InnerTool tool = new InnerTool();
public int add(int a,int b,int c){
return tool.add( tool.add(a,b) , c );
}
}
11.抽象类的UML图
代码如下:
// 定义一个武器的抽象类
public abstract class Weapon{
// 抽象方法:攻击
public abstract void attack();
}
public class GoldenBar extends Weapon{
public void attack(){
System.out.println("blablabla...");
}
}
12.对象的关系UML图表示
1)聚合关系的UML图(注意箭头)
2)组合关系的UML图
3)依赖关系的UML图(一个类的引用作另一个类的方法参数)
4)继承/实现关系的UML图(子类继承父类/实现类实现接口)
5)关联关系(例子1)