一文弄懂UML类图(六大关系:依赖,泛化,实现,关联,聚合,组合) | 您所在的位置:网站首页 › 类图中可以表达哪些信息 › 一文弄懂UML类图(六大关系:依赖,泛化,实现,关联,聚合,组合) |
UML基本介绍 UML(Unified Modeling Language),统一建模语言。是一种用于软件系统设计、建模和文档化的标准化语言(软件分析和设计);常见的UML图包括: 用例图静态结构图:类图,对象图,包图,组件图,部署图动态行为图:时序图,协作图,状态图,活动图 常用建模工具:Rational Rose,processon等 UML类图 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系类之间的关系:依赖(使用),泛化(继承),实现,关联,聚合,组合 类图简单举例: public class Student { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }类图——依赖(dependence) 只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都通过不了 public class PersonServiceBean { // 类的成员属性 private PersonDao personDao; // 方法接收的参数类型 public void save(Person person) { } // 方法的返回类型 public IDCard getIDCard(Integer personid) { return null; } // 方法中使用到 public void modify() { Department department = new Department(); } }类图——泛化(Generalization) 泛化关系就是继承关系。是依赖关系的特例 public abstract class DaoSupport { public void save(Object o){ System.out.println("save"); } public void delete(Object o){ System.out.println("delete"); } } class UserDao extends DaoSupport{ }总结: 泛化关系就是继承关系如果A类继承了B类,我们就说A和B存在泛化关系 类图——实现(implementation)实现关系就是A类实现B类。是依赖关系的特例 public interface BaseService { void delete(Integer id); } public class UserService implements BaseService { @Override public void delete(Integer id) { System.out.println("delete......"); } }类图——关联(Association) 关联关系就是类和类之间的联系,可以理解为拥有关系,一个类知道知道另一个类的属性和方法。是依赖关系的特例。在程序中被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量 具有导航性:双向关系或单向关系具有多重性:如“1”表示有且仅有1个;“0…”表示0个或多个;“0,1”表示0个或者1个;“n…m”表示n到m个都可以;“m…*”表示至少m个 单向一对一关系 public class Person { private IDCard card; } class IDCard {}双向一对一关系 public class Person { private IDCard card; } public class IDCard { private Person person; } 类图——聚合(Aggregation) 聚合关系就是整体和部分的关系,整体和部分可以分开。是关联关系的特例,所以具有导航性和多重性。程序中聚合和关联关系是一致的,只能从语义级别来区分 public class Computer { private Mouse mouse; private Monitor monitor; public void setMouse(Mouse mouse) { this.mouse = mouse; } public void setMonitor(Monitor monitor) { this.monitor = monitor; } } class Mouse {} class Monitor {}类图——组合(Composition) 组合关系也是整体与部分的关系,不过整体与部分不可分开。程序中组合和关联关系是一致的,只能从语义级别来区分如果我们认为Mouse,Monitor和Computer是不可分离的,则升级为组合关系: public class Computer { private Mouse mouse = new Mouse(); private Monitor monitor = new Monitor(); } class Mouse {} class Monitor {} 参考资料[1]尚硅谷图解Java设计模式 [2]UML六种关系:https://cloud.tencent.com/developer/article/1455858?areaId=106001 [3]分分钟弄明白UML中泛化 , 实现 , 关联, 聚合, 组合, 依赖:https://cloud.tencent.com/developer/article/1012684 github笔记 |
CopyRight 2018-2019 实验室设备网 版权所有 |