• 简明UML类图教程


    参考链接:10 分钟学会 UML 类图

    UML整个系统比较复杂,但通常,我们自己些代码,只会用到最简单的类图,简要的笔记如下。

    假设我们要设计一个动物园系统,里面最基本的组成部分,每个动物都是Animal类:

    图片名称

    那么怎么抽象这个类呢,通过相应的属性和方法来模拟:

    图片名称

    这些属性/方法主要有三种权限:

    • private(-):在类的外部无法被访问(即使是它的子类、或者通过 类.私有进行访问 )
    • protected(#):在子类中可以访问;
    • public(+):任何地方都可以访问它们;

    除此之外,不同类之间主要有4种关系(有且仅有):

    图片名称

    继承:海龟继承动物类,其中一种关系(海龟是动物类的一种);

    关联:狗类吃食物类,两者没有依赖关系,可以互相独立存在;

    聚合:说明整体、部分,一群乌龟军团,army军队,单个乌龟,依然可以单独成立;

    组合:游客中心跟厕所的关系,访客大厅由厕所、售票处等组成,游客中心没有厕所就不完整,不能单独存在;

    图片名称

    除此之外,我们还需要对它们之间的数量关系进行约束,也称为多重性数字约束。例如:一个访客大厅类只能有一个售票处,但是厕所要好几个。将约束关系写为m..n

    图片名称

    需要说明的是,数字约束关系是互相的,比如说:购物网站里一个用户可以有多个订单类,但一个订单类只能由一个用户拥有。


    举例,一个购物网站的架构:

    图片名称

    此外,对于组合关系来说,被组合的对象是不能单独存在的,比如,当订单类被销毁后,相应的购物类也会被同时摧毁:

    图片名称

    在写代码之前,先不要着急写,在draw.io在把整个类图的框架、交互关系、流程图画好,写代码会容易地多。

  • 相关阅读:
    CodeDOM浅析(上)
    这段代码居然运行正常
    CodeDOM浅析(下)
    动态生成与编译(七)根据CodeDOM生成源代码
    动态生成与编译(九)CodeDOM的局限
    动态生成与编译(八)动态编译
    新年送大礼
    祝所有的女性朋友们节日快乐!
    预测人民币在2006年最终的收盘价
    2007年春节,祝朋友们:身体健康,万事如意! 度过一个愉快春节!
  • 原文地址:https://www.cnblogs.com/FLYMANJB/p/13426949.html
Copyright © 2020-2023  润新知