zoukankan      html  css  js  c++  java
  • UML类图(Unified Modeling Language Class Diagrams)

    统一建模语言(UML) |  类图

    什么是UML?

      UML是一种用于可视化描述系统,具有广泛用途的建模语言。作为一种标准化的图形语言,在软件工业中被用于软件系统部件的具体化,可视化,结构化描述以及撰写文档,同样在商业模型中也得到应用。

    UML的优点:

    • 使复杂的软件设计更为简单,也能够实现像OOP(面向对象编程)这一类被广泛应用的概念。
    • 用理解起来可能更容易的图来描述,避免了大量的文字。
    • 是表达和交流概念或系统结构变得更容易。
    • 在一张图中就能够描绘出整个系统。
    • 程序员实用类图来描述实际需求时,可让问题更加清晰明了,实现起来更容易。

    UML的分类

      UML通常分为两类:描述结构的UML图(Structural UML diagrams)和描述行为的UML图(Behavioral UML diagrams),具体见下表:

    描述结构的UML图 描述行为的UML图
    • 类图(Class diagram)
    • 包图(Package diagram)
    • 对象图(Object diagram)
    • 组件图(Component daigram)
    • 组合结构图(Composite structure diagram)
    • 部署图(Deployment diagram)
    • 活动图(Activity diagram)
    • 时序图(Sequence diagram)
    • 用例图(Use case diagram)
    • 状态图(State diagram)
    • 协作图(Communication diagram)
    • 交互关系概览图(Interaction overview diagram)
    • 时间线图(Timing diagram)

    UML | 类图

      类图展示出OOP中的类,接口,及其中存在的关系,关联与协作。UML在类图中是标准化的。类是OOP的主要构件模块,而类图用恰当的结构展示OOP中遇到的一切,包括类,继承关系,类关系。它能够描述各种对象和它们之间的静态关系。使用类图的主要目的:

    • 类图是唯一能够恰当的展示出OOP中各种不同概念的UML。
    • 利用类图来对应用程序做出优化的设计与分析高效而快速。
    • 类图是部署图和组件图的基础。

    类图一般的规则如下:

    • 每个类用一个矩形框表示,框内由类名,属性,及定义的操作三个子部件构成。
    • 三种表示可见性的修饰符:
      • + 表示public
      • # 表示protected
      • -  表示private
      • ~  表示default(无修饰符)

    一些常用的构成模型的组件:

    • 类(Class){名(name),属性(attribute),方法(method)
    • 对象(Object)
    • 接口(Interface)
    • 关系(Relationships) { 继承(inheritance),关联(association),泛化(generalization)}
    • 关联(association){双向,单向(unidirectional,aggregation)}

    常用表示关系的组件:

    关于绘制类图: 

    一些在线或离线的软件都能够完成类图的制作,比如Edraw max, lucid chart等。如果能在相关网站软件找到模板,制作类图更为方便。

    推荐网站https://www.draw.io/,可制作各种各样的diagram,使用很快捷,可保存文件到本地,免费无需登录。之前也经常用来画流程图。

    例子:

    下图为实现interface和aggregation的类图描述。MovablePoint, MovableCircle实现Movable。MovablePoint成为MovableCircle一部分。

    如下是一张类图,父类Animal有两个子类dog,cat。d1为子类dog的对象。

    以下为对应代码:

    import java.io.*; 
    
    class GFG { 
        public static void main(String[] args) 
        { 
            dog d1 = new dog(); 
            d1.bark(); 
            d1.run(); 
            cat c1 = new cat(); 
            c1.meww(); 
        } 
    } 
    
    class Animal { 
        public void run() 
        { 
            String name; 
            String colour; 
    
            System.out.println("animal is running"); 
        } 
    } 
    
    class dog extends Animal { 
        public void bark() 
        { 
            System.out.println("wooh!wooh! dog is barking"); 
        } 
        public void run() 
        { 
            System.out.println("dog is running"); 
        } 
    } 
    
    class cat extends Animal { 
        public void meww() 
        { 
            System.out.println("meww! meww!"); 
        } 
    } 

    参考资料:

    [1]. Unified Modeling Language (UML) | Class Diagrams - GeeksforGeeks     https://www.geeksforgeeks.org/unified-modeling-language-uml-class-diagrams/

    [2]. UML Class Diagrams Tutorial, Step by Step – Salma – Medium    https://medium.com/@smagid_allThings/uml-class-diagrams-tutorial-step-by-step-520fd83b300b

  • 相关阅读:
    React `${}` 格式
    echarts-for-react
    React 列表 瀑布流 修改样式瀑布流不起效果
    前端技术栈
    React 技术栈
    自定义点击body 退出登录url隐藏
    import 'element-ui/lib/theme-default/index.css'报错
    cnpm install element-ui --save
    Vue http://eslint.org/docs/rules/no-trailing-spaces 报错问题
    【loj 6363】地底蔷薇【拉格朗日反演】【生成函数】
  • 原文地址:https://www.cnblogs.com/wyzersblog/p/10699354.html
Copyright © 2011-2022 走看看