zoukankan      html  css  js  c++  java
  • 类之间的关系

    • 依赖 dependency

    A使用了B,这种使用关系具有偶然性、临时性、非常弱。但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;

    在代码中,比如一个类的某个方法引用了另一个类

    表示:虚线箭头 使用者------- >被使用

    • 关联Association:普通关联

    两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、非偶然性、非临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;

    表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量

     实线箭头,两端带数量,使用者——>被使用

    • 关联:聚合

    Aggregation

    关联的一种特例,体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期部分可以属于多个整体对象,也可以为多个整体对象共享

    比如计算机与CPU、公司与员工的关系等;

    空心菱形(整体)+实线箭头(部分)

    • 关联:组合

    Composition

           组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,生命周期相同;比如你和你的大脑;

     实心菱形(整体)+实线箭头(部分)

    • 泛化

    Generalization

    通俗的来讲,泛化指的是类与类之间的继承关系和类与接口之间的实现关系

      •    继承:Extend
      •    实现implement
  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/XT-xutao/p/12011974.html
Copyright © 2011-2022 走看看