zoukankan      html  css  js  c++  java
  • 设计模式系列(七)UML类图

    UML类图

    1. 用于描述系统中类(对象)本身的组成和类(对象)之间的各种静态关系
    2. 类与类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

    依赖

    只要在类中用到了对方,那么他们之间就存在依赖关系,如果没有对方,连编译都无法通过

    public class PersonServiceBean {
    	private PersonDao personDao;//类
    	public void save(Person person){}
    	public IDCard getIDCard(Integer personid){}
    	public void modify(){
    		Department department = new Department();
    	}
    }
    public class PersonDao{}
    public class IDCard{}
    public class Person{}
    public class Department{}
    

    在这里插入图片描述

    • 类中用到了对方
    • 可能是类的成员属性
    • 方法的返回类型
    • 方法接收的参数类型
    • 可能是方法中使用到

    泛化

    泛化实际上就是类的继承关系,是依赖关系的特例

    public abstract class DaoSupport{
    	public void save(Object entity){
    	}
    	public void delete(Object id){
    	}
    }
    public class PersonServiceBean extends Daosupport{}
    

    在这里插入图片描述
    泛化其实就是继承关系。如果A类继承了B类,我们就说A和B存在泛化的关系

    实现

    实现关系实际上就是 A类实现了B类的接口,它也是依赖的关系

    public interface PersonService {
    	public void delete(Interger id);
    	}
    public class PersonServiceBean implements PersonService {
    	public void delete(Interger id){}
    }
    

    在这里插入图片描述

    关联关系

    关联关系实际上就是 类与类之间的关系,它也是属于依赖关系的一种
    关联具有 导航性 :即双向关系或单向关系
    关联具有多重性:一对一 、一对多、多对多

    聚合关系

    聚合(Aggregation)关系表示的就是 整体和部分的关系,整体和部分可以分开存在。聚合关系是 关联关系的特例,所以聚合也有关联的 导航性与多重性

    例子:如一台电脑由键盘和鼠标 显示器等组成;组成电脑的各个配件是可以从电脑上分离出来的
    在这里插入图片描述

    组合关系

    组合关系:与聚合关系一样,也是 整体与部分 的关系,但是 整体与部分不可分开,聚合关系中,整体与部分可分开存在
    例如:在程序实体类中 Person 类(人) 与 IDCard 类(身份证)、 Head 类(头)。其中 Person 与 Head 就是组合关系,人有头,但是头不能离开人,人不能缺少头
    Person 与 IDCard 就是聚合关系,人有身份证,但是人和身份证两者之间可以分离

    public class Person{
    	private IDCard card;
    	private Head head = new Head();
    }
    public class IDCard{}
    public class Head{}
    

    在这里插入图片描述
    如图:UML类图中实心菱形代表组合关系,空心菱形代表聚合关系

    注意:以上所说的只是例子,比如电脑和鼠标是聚合关系,但是也可能是聚合关系,如下代码

    public class Computer {
    	// 作为 Computer 类的成员私有变量
    	private Mouse mouse = new Mouse(); //鼠标和computer 不能分离
    	private Moniter moniter = new Moniter();//显示器和Computer 不能分离
    	
    	public void setMouse(Mouse mouse) {
    		this.mouse = mouse;
    	}
    	public void setMoniter(Moniter moniter) {
    		this.moniter = moniter;
    	}
    }
    
    // 鼠标类
    public class Mouse {
    }
    
    public class Moniter {
    }
    

    如上例子:当 Computer 类创建实例化的时候,Mouse 与 Moniter 类也都同时实例化,而当 Computer 类实力对象被销毁的时候,Mouse 与 Moniter 类也都同时被销毁了,因此,在这种情况下,电脑和鼠标之间的关系是组合关系
    在这里插入图片描述

  • 相关阅读:
    待解决问题集
    官方
    jsp 页面接收另一个页面传递过来的数据
    页面无法通过“${ctx}” 拿到值
    自定义 UsernamePasswordToken 报错 java.lang.ClassCastException: org.apache.shiro.authc.UsernamePasswordToken cannot be cast to
    springboot+mybatis map集合映射字段,当sql字段返回值为空时 不映射的问题
    java实现读写服务器文件
    前端模板免费下载网站
    The connection string contains invalid user information. If the username or password contains a colon (:) or an at-sign (@) then it must be urlencoded 解决方法
    springBoot -mongodb 小坑
  • 原文地址:https://www.cnblogs.com/shanggushenlong/p/13801337.html
Copyright © 2011-2022 走看看