美文网首页
Class Diagram

Class Diagram

作者: 好小葱1 | 来源:发表于2018-07-31 11:50 被阅读1次

关系强弱

没关系 < 依赖 < 关联 < 聚合 < 组合

依赖(dependency)

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用。用带虚线的箭头。

类图0.jpg

关联(association)

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。

类图1.jpg

依赖和关联区别

我用锤子修了一下桌子,我和锤子之间就是一种依赖,我和我的同事就是一种关联。依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系。关联是类之间的一种关系,例如老师教学生,老公和老婆这种关系是非常明显的。依赖是比较陌生,关联是我们已经认识熟悉了。


聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

类图2.jpg

组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分。

类图3.jpg

聚合与组合区别

聚合与组合唯一的差别是否在于分享!聚合关系的中的部件可以与其类分享! 比如 : 计算机与cpu ,把计算机拆了,cpu可以用于另外的计算机。但是 人与脑袋,脑袋不能用其他人上(至少现在技术还达不到!)但是 肾可以用来分享!

代码举例

雁群0.gif 雁群1.gif
public class Goose {

}
public Goose goose;

public GooseGroup(Goose goose)
{
    this.goose = goose;
}
public class Goose {
}
public Wings wings;

public Goose(){
        wings=new Wings();
}

相关文章

  • Class Diagram

    关系强弱 没关系 < 依赖 < 关联 < 聚合 < 组合 依赖(dependency) 可以简单的理解,就是一个类...

  • UML概述

    Structured UML 1. Class Diagram 类图。 2. Object Diagram 对象图...

  • (〇)OOA&D的意义

    关键: 需求分析 正确清晰的表述:class diagram, sequence diagram OO技术:enc...

  • UML笔记

    1.1 UML的分类: ·结构型的图: 类图(Class Diagram) 对象图(Object Diagram)...

  • Design Pattern

    Class Diagram Inheritance:is a Association:has a Protocol...

  • UML基础知识

    UML分类 1.结构型的图(Structure Diagram) 类图(Class Diagram)对象图(Obj...

  • UML-Class Diagram

    类图是对面向对象编程的形式化图形展示,能设计好的类图是需要功底和技巧的。 过程先确定系统的核心是什么,然后确定类一...

  • [Common] Design Patterns by Tuto

    1. Class Diagram 2. MVC 3. Strategy This pattern is simil...

  • UML统一建模语言--类图Class Diagram

    UML类图class diagram 重型工具rational rose,轻量级插件AmatersUML 一、安装...

  • MVC/MVVM

    实现 MVC 和 MVVM 解释Class Diagram.png MVVM 的一个小例子(ReactiveCoc...

网友评论

      本文标题:Class Diagram

      本文链接:https://www.haomeiwen.com/subject/qlmfvftx.html