UML类图

作者: 倾倒的吞天壶 | 来源:发表于2018-01-12 10:30 被阅读6次

    笔记

    定义
    public class Person {
       private String name = zhangsan;
       private int age = 23;
    
       public String getName() {
          // TODO: implement
          return name;
       }
    
       public int getAge() {
          // TODO: implement
          return age;
       }
    
       /** @param name
       public void setName(String name) {
          // TODO: implement
          this.name=name;
       }
    
       /** @param age
       public void setAge(int age) {
          // TODO: implement
          this.age=age;
       }
    
    }
    
    image.png
    • 类名
      顾名思义就是类的名字,对应于Java类中的类名,如果该类是抽象类的话,在类名右下角会有一个(Abstract)表示.
    • 属性名
      可见性 名称:类型 [ = 默认值 ]
      在Java类中可见性分为三类, 分别是private,public 和protected,在类图中分别用符号-、+和#表示.
    • 方法
      可见性 名称(参数列表) [ : 返回类型]
    类之间的关系
    • 继承
    image.png
    • 实现
    image.png
    • 依赖
      可以简单的理解, 就是一个类A使用到了另一个类B, 而这种使用关系是具有偶然性的, 临时性的, 非常弱的, 但是B类的变化会影响到A, 在代码层面, 为类B作为参数被类A在某个method方法中使用.
    image.png
    • 关联
      他体现的是两个类, 或者类与接口之间语义级别的一种强依赖关系, 比如我和我的朋友; 这种关系比依赖更强, 不存在依赖关系的偶然性, 关系也不是临时性的, 一般是长期性的, 而且双方的关系一般是平等的, 关联可以是单向, 双向的; 表现在代码层面, 为被关联类B以类属性的形式出现在关联类A中, 也可能是关联类A引用了一个类型为被关联类B的全局变量.
    image.png
    • 聚合
      聚合是关联关系的一种特例, 他体现的是整体与部分, 拥有的关系, 即has-a的关系, 此时整体与部分之间是可分离的, 他们可以具有各自的生命周期, 部分可以属于多个整体对象, 也可以为多个整体对象共享; 比如计算机与CPU, 公司与员工的关系等; 表现在代码层面, 和关联关系是一致的, 只能从语义级别来区分;
    image.png
    • 组合
      组合也是关联关系的一种特例, 他体现的是一种contains-a的关系, 这种关系比聚合更强, 也称为强聚合; 他同样体现整体与部分间的关系, 但此时整体与部分是不可分的, 整体的生命周期结束也就意味着部分的生命周期结束; 比如你和你的大脑; 表现在代码层面, 和关联关系是一致的, 只能从语义级别来区分.
    image.png

    对于继承, 实现这两种关系没多少疑问, 他们体现的是一种类与类, 或者类与接口间的纵向关系; 其他的四者关系则体现的是类与类, 或者类与接口间的引用, 横向关系, 是比较难区分的, 有很多事物间的关系要想准备定位是很难的, 前面也提到, 这几种关系都是语义级别的, 所以从代码层面并不能完全区分各种关;
    但总的来说, 后几种关系所表现的强弱程度依次为: 组合>聚合>关联>依赖.

    参考文件

    http://blog.csdn.net/xiehuimx/article/details/53427452
    https://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html

    相关文章

      网友评论

          本文标题:UML类图

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