解释
一个专门的图形表示的语言来管理和维护对象。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)
