zoukankan      html  css  js  c++  java
  • uml类图的几种关系

    几种关系:

    1. 实现:车是抽象概念,在现实中无法直接定义对象,需要具体子类实现它。空心箭头虚线

     实现为继承抽象类。

    2. 继承:泛化关系is-a,就是继承关系。suv是小汽车,猫是动物。空心箭头实线

    3. 组合:A组成B,B由A组成。整体由部分构成,整体不存在了,部分也不存在。比如公司不存在了,部门也不存在。实心菱形箭头直线表示。小汽车与发动机之间是组合关系

    4. 聚合:A聚合到B上,B由A聚合。用于表示实体对象之间的关系,表示整体由部分构成的语义。比如一个部门由多个员工组成。与组合不同的是,整体和部分不是强依赖的,即使整体不存在了,部分依然存在。比如部门不在了,人员依然存在。空心菱形箭头直线表示:学生与班级之间是聚合关系

    5. 关联:描述不同类的对象之间的关系;它是一种静态关系,通常与运行状态无关,一般由常识等因素决定的;一般用来定义对象之间静态的、天然的结构;所以,关联关系是一种“强关联”的关系。比如乘车人和车票、学生和学校之间是一种关联关系。关联关系不强调方向,表示对象间相互知道,用一条直线表示;如果特别强调方向,用带箭头的直线表示。最终代码中,关联关系通过以成员变量的形式实现的。

    • 学生与身份证之间为关联关系,使用一根实线表示;

    6. 依赖:用一条带箭头的虚线表示的,如下,表示A依赖B,它描述一个对象在运行期间用到另一个对象的关系;与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并随运行时的变化;依赖关系也可能发生变化。

    显然,依赖关系有方向,双向依赖是一种比较糟糕的结构,我们应该保持单向依赖,杜绝双向依赖。

     注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系除了临时知道对方外,还是“使用”对方的方法和属性。

    参考:https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

  • 相关阅读:
    进程池的使用
    同步提交,异步提交
    协程
    单线程下实现并发的套接字
    批量上传
    TP中的session和cookie
    ajaxReturn
    ajax的两种方式
    Yii里表单的操作方法(展示渲染待续......)
    Yii里文件上传的操作方法(图片修改,在详情上展示,批量上传待续...)
  • 原文地址:https://www.cnblogs.com/Shaojunping/p/12160320.html
Copyright © 2011-2022 走看看