zoukankan      html  css  js  c++  java
  • UML类图基础说明

    UML类图主要由类和关系组成.

    1. 类: 什么具有相同特征的对象的抽象, 具体我也记不住, 反正有官方定义

    2. 关系: 指各个类之间的关系

    类图

    类就使用一个方框来表示, 把方框分成几层, 来表示不同的信息,如下图所示:

     当然, 类图也不一定每一次都长这样, 比如你只分析各个类之间的关系时, 甚至可以只给出类名; 如果是一个接口的话, 可以不给出属性, 只留下类名和方法.

    下面来说一下这几个部分分别怎么写

    1.类名

    类名没什么好说的, 就是起个名, 写上, 完活

    2.属性

    属性的格式为:

    访问权限 属性名 : 类型=默认值

    • 访问权限: 访问权限再各个面向对象中用遍了, 有

      • 公有: (+), 大家都可以访问

      • 私有: (-), 只有自己可以访问

      • 保护: (#), 可以被自己和子类访问

    • 属性名: 就是起个名

    • 类型: 属性的类型, 可以是基础数据类型, 也可以是一个类

    • 默认值: 属性初始值, 可以省略

    如:

    +name:String // 公有的name属性, 字符串类型 -age:int=0 // 私有的age属性, int类型, 初始值为0

    3.方法

    方法的定义和属性差不多, 不过加上了参数, 格式为:

    访问权限 方法名(参数列表): 返回值

    其中参数列表的定义为 "类型 名字", 多个之间用逗号隔开, 其它和属性一样, 不再赘述, 举例:

    +getName(String name):void

    关系

    终于到重头戏了, 类之间的关系表示, 通常来说, 两个类之间主要有以下几种关系:

    • 继承: 这在面向对象里用的太多了, 就是子类继承了父类的属性和方法

    • 实现: 简单说就是类实现接口, 明白了吧

    • 关联: 简单来说, 就是在类A中使用了类B, 而且这种使用不是临时的, 而是长期的, 所以关联是一种强依赖关系. 比如: 类A中的一个属性是类B, 或者类A在方法中用到了类B的全局变量

    • 依赖: 简单来说, 就是类A中的一个方法参数是类B, 所以这种关系可以说是临时的, 也可以是在方法中临时调用了类B的方法

    • 聚合: 聚合其实也是一种关联关系, 不过在关联关系的基础上再加条件, 聚合强调的是整体于部分的关系, 而且部分是可以脱离整体而存在的. 如类A中的属性list是类B的集合, 类B单拿出来还是一个完整的

    • 组合: 组合与聚合有些相似, 都是强调整体与部分的关系, 不同的是, 组合中部分是不能脱离整体而存在的, 所以也叫强聚合,比如羊和羊头

    基本上继承和实现都没什么异议, 主要就是再后面四个, 很多时候分不清, 这四种的强弱关系为: 组合>聚合>关联>依赖

    下面来看一下再UML中如何表示这几种关系:

    1.继承

     如图, 张三和王五都继承自人类

    2. 实现

    如图, 张三和王五都实现了接口人类

    3. 依赖

    依赖是一种很弱的关系, 通常是类A在运行期间用到类B, 通常在程序中是用过构造函数, 方法参数将类B传给类A的, 表示如下:

    如图, 程序员在工作时需要电脑

    4. 关联

    关联区别于依赖, 是关联关系是不变的, 比如张三和张三家, 是一成不变的内容, 表示如下:

    如图, 张三关联了他的家, 这种是单向关联, 也有时是双向关联, 则两头都没有箭头

    5. 聚合

    聚合是一种特殊的关联, 反映的是整体与局部的关系, 区别于关联, 聚合没有双向聚合(因为是整体与局部嘛), 与组合不同, 聚合关系中的部分可以独立存在, 表示如下:

    如图, 蚂蚁离开了蚂蚁窝, 还是蚂蚁

    6.组合

    组合也是一种特殊的关联, 反映的是整体与局部的关系, 区别与聚合, 组合关系中的部分不能脱离全体独立存在,比如张三和张三的头, 表示如下:

     


    以上就是UML中最最基础的各部分, 以后再看UML图就不至于一脸懵逼了..

  • 相关阅读:
    使用Chrome断点调试javascript程序
    vue-iview-admin项目过大导致打包失败
    vue+iview后台管理系统util.ajax跨域问题的解决方法
    webpack vue热加载编译速度慢
    (转)网站架构变迁
    (转)工作不到一年,做出了100k系统,老板给我升职加薪
    (转)CPU说:这个世界慢!死!了!
    (转)一个故事搞懂“ERP“
    (转)手动搭建自己的nuget服务器及使用
    doc系统maven打包脚本
  • 原文地址:https://www.cnblogs.com/hujingnb/p/10853368.html
Copyright © 2011-2022 走看看