文章

(1·UML,伪代码)

UML

作用

Unified Modeling Language,统一建模语言

可视化图形直观的表示系统结构, 便于开发者、设计师和客户之间的沟通

分类

UML图可分为两大类:

结构型图(静态图)

  • 类图(Class Diagram)描述系统的静态结构
  • 对象图(Object Diagram) 展示某一时刻的对象实例及其关系
  • 组件图(Component Diagram) 描述系统的物理组件及其依赖关系
  • 部署图(Deployment Diagram) 展示软件在硬件上的部署方式
  • 包图(Package Diagram) 描述系统的模块化组织(包、命名空间)

行为型图(动态图)

  • 用例图(Use Case Diagram) 描述系统的功能需求(用户与系统交互)
  • 活动图(Activity Diagram) 描述业务流程或算法流程
  • 状态图(State Machine Diagram) 描述对象的状态变化
  • 顺序图(Sequence Diagram) 展示对象之间的交互(时间顺序)
  • 通信图(Communication Diagram) 展示对象之间的协作关系
  • 时序图(Timing Diagram) 描述时间约束下的对象交互

UML类图

是面向对象系统建模中最常用的图

基本组件:

类名、属性、方法

可见性修饰符:

  • ’+’ 公有(Public)
  • ’-‘ 私有(Private)
  • ’#’ 受保护(Protected)

关系:

1745069457668

注:图中大雁和雁群的关系画反了,大雁和企鹅不能构成双向关联,企鹅不能拥有气候

  • 泛化(Generalization)
    • 继承关系
    • 实线空三角,箭头指向父类,比如鸟继承动物
  • 实现(Realization)
    • 是一种类与接口的关系
    • 虚线空三角,箭头指向接口,比如大雁实现飞翔
  • 关联(Association)
    • 是一种拥有的关系,一个类知道另一个类的属性和方法,
    • 单向关联:实线箭头,指向被拥有者,比如鸟拥有翅膀,但翅膀不能拥有鸟
    • 双向关联:有两个箭头或者没有箭头,比如A拥有B,B拥有A
    • 自身关联:箭头指向自己,比如A又有A
  • 依赖(Dependency)
    • 是一种使用的关系,即一个类的实现需要另一个类的协助
    • 虚线箭头,指向被使用者,比如动物依赖于氮气和水
  • 聚合(Aggregation
    • 是整体与部分的关系,且部分可以离开整体而单独存在
    • 实线空菱形,菱形指向整体,比如雁群包含燕子,燕子可以单独存在
  • 组合(Composition)
    • 是整体与部分的关系,但部分不能离开整体而单独存在
    • 实线实心菱形,菱形指向整体,比如鸟包含翅膀,但翅膀不能单独存在

draw.io使用

UML绘图工具之一

  1. 画板平移:鼠标右键/中键
  2. 框选:鼠标左键
  3. 创建:从左侧UML节点模板,拖拽出来 / 直接点击(出现在画板中心)
  4. 移动节点:在className方框上拖拽 / 框选(拖拽多个)
  5. 改变节点大小旋转:点击className方框,通过出现的蓝色实心原点缩放,拖拽右上的旋转图标旋转
  6. 隐藏:节点左上点击-号可以隐藏,+号可以展开
  7. 编辑:双击text可以编辑
  8. 添加属性/方法:单击节点的属性/方法,左右会出现箭头,选择添加
  9. 删除属性/方法:单击节点的属性/方法,按下delete键
  10. 添加关联:点击空白处取消选择,鼠标悬停在节点上,出现数个空心小圆形在外轮廓上,拖拽添加关联,
  11. 修改关联:单机关联,右侧样式面板改变关联样式,关联上的蓝色实心原点改变线条位置
  12. 添加关联节点:点击空白处取消选择,鼠标悬停在节点上,上下左右出现箭头,选择添加

伪代码

伪代码是介于自然语言和编程语言之间的一种描述语言, 不依赖于语法,通过简洁,逻辑清晰,统一的描述,突出算法流程/逻辑结构,让使用不同编程语言的程序员理解思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
algorithm: 二分查找
author: ……
date: ……
Input: 有序数组 arr, 目标元素 tar
Output: 目标元素 tar 在数组 arr 中的下标 index

function binary_search(arr, tar)
    left <- 0, right <- arr.length - 1
    while left <= right do
        mid <- (left + right) / 2;
        if arr[mid] == tar then
            return mid;
        else if arr[mid] < tar then
            left <- mid + 1;
        else
            right <- mid - 1;
        end if
    end while

    return -1;
end function

展开

  • 说明信息:作用,作者,时间,输入:Input,输出:Output……

  • 规范
    • 每一条指令占一行,指令后不跟任何符号
  • 注释:
    • //C++ 风格的注释
  • 算法名称
    • 函数(Function) + < funcName > (args……) ,return ……,end function
  • 变量:
    • 定义:单个字符
    • 赋值
      • :=
      • <-
      • =
    • 交换:a <-> b
  • 运算
    • ^ 幂运算
    • mod 取模
    • and 逻辑与
    • or 逻辑或
    • not 逻辑非
    • xor 逻辑异或
    • == 等于
    • != 不等于
    • / 除号
    • ‘*’ 乘号
    • ++ 自增
    • – 自减
  • 分支
    • if语句 / if else语句, then,end if
  • 循环
    • 计数式循环(for循环)+ end for
    • 条件式循环(while循环)+ do + end while
    • 遍历 for each i in A do ,+ end for
本文由作者按照 CC BY 4.0 进行授权
本页总访问量