UML类图(Unified Modeling Language Class Diagrams)

昨夜黄花今朝狼 2019-04-15 01:45159 阅读

统一建模语言(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

回复数量: 0
暂无评论~~
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!