1. UML笔记 - UML与面向对象

Posted 鱼鱼不愚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1. UML笔记 - UML与面向对象相关的知识,希望对你有一定的参考价值。

1. UML与面向对象

前言

Through love comes calm, and through calm comes thought.

爱使人平静,而平静使人思考。

目录


  • 前言

  • 目录

  • 1.1 面向对象开发

    • 1.1.1 理解面向对象开发

    • 1.1.2 面向对象的主要概念

    • 1.1.3 面向对象开发的优点

  • 1.2 OO开发中的三层设计

  • 1.3 UML简介

    • 1.3.1 系统建模

    • 1.3.2 UML的发展

    • 1.3.3 UML的构成

  • 1.4 UML视图

    • 1.4.1 用例视图

    • 1.4.2 逻辑视图

    • 1.4.3 并发视图

    • 1.4.4 组件视图

    • 1.4.5 部署视图

  • 1.5 UML图

    • 1.5.1 用例图

    • 1.5.2 类图

    • 1.5.3 对象图

    • 1.5.4 状态图

    • 1.5.5 顺序图

    • 1.5.6 协作图

    • 1.5.7 活动图

    • 1.5.8 组件图

    • 1.5.9 部署图

    • 1.5.10 其他图

  • 1.6 模型元素

    • 1.6.1 事物

    • 1.6.2 关系

  • 1.7 通用机制

    • 1.7.1 修饰

    • 1.7.2 注释

    • 1.7.3 规格说明

    • 1.7.4 拓展机制

  • 1.8 使用UML建模



1.1 面向对象开发

面向对象哪里都有说,真的不想写那么多

1.1.1 理解面向对象开发

1. 面向对象开发

面向对象的思想一方面是从现实世界存在的事务出发来构造软件系统,并在软件系统中尽可能运用人类的自然思维方式;而另一方面则是比以往的方法更加贴近人类自然思维方式。

Simula-67是第一种面向对象的编程语言。

面向对象的工程方法主要包含面向对象分析(OOA)面向对象设计(OOD)以及面向对象编程(OOP)

  • 面向对象分析:是应用面向对象方法进行系统分析。从问题中获取 对象,以及它们之间的关系。
  • 面向对象设计:在软件设计生命周期中发生于 OOA之后,过程是完善OOA的成果,OOA表达了做什么,OOD表达了怎么做。
  • 面向对象编程:这个过程是用于实现OOA和OOD的成果。

2. 各种开发方法的生命周期:

迭代开发方法:先进行分析设计编写部分程序完成了系统需求的一部分,再进行分析-设计-编程完成其它需求。

  • OO开发方法:主要阶段有 计划分析设计实现支持
  • 瀑布开发方法:设计前完成所有的 需求分析、在以其为基础进行 系统设计、编程工作要在前两项工作完成后再进行。

相较于瀑布开发方法,OO开发方法更适合迭代开发。

1.1.2 面向对象的主要概念

  • 对象:是对现实世界中客观存在的事物进行抽象描述。
  • 封装:是指将对象属性和操作结合在一起而构成一个独立的对象。
  • 继承:是指字类可以拥有父类的全部属性和操作。
  • 消息:对象之间进行交互时所传递的通信信息。
  • 多态:子类继承了父类之后,可以拥有不同的数据类型或表现出不同的特性/行为。
  • 关联:对象之间的连接称为 链接,而存在对象连接的类之间的联系称为关联。
  • 聚合:在OO技术中指一个复杂的对象分解为几个简单的方法。

1.1.3 面向对象开发的优点

  • 自然性:指开发中总是以对象的形式描述现实客观的事务,因此在分析和设计系统需求时总是能够很自然地定义各类对象。
  • 重用性:指一次创建的类和对象能够多次使用。

1.2 OO开发中的三层设计

面向对象系统中相互联系的所有对象分成三类:问题域类GUI类数据访问类

  • 问题域类:指和用户相关的对象类。
  • GUI类:方便用户与问题类进行交互。
  • 数据访问类:实现问题域类与数据库的交互。

在实际开发中也会根据各种需求和化分出不同的类

1.3 UML简介

统一建模语言(UML)是一种语言,也是系统建模的标准。

1.3.1 系统建模

系统设计中采用模型化设计的重要原因是管理系统设计的复杂性。

模型是真实事物的抽象,而系统模型则是在模型的基础上去掉了任何无关或可能引用混淆的细节信息。在面向对象开发中,常用UML作为建模语言。

1.3.2 UML的发展

怎么发展我不知道,我只知道我不想了解它怎么发展。

1.3.3 UML的构成

UML的核心是由视图模型元素通用机制组成,其中模型元素由事务关系组成。

也有说法是UML由构造块、规则、通用机制三部分组成,其中构造块由事物、关系、图组成,而规则含有模型元素的其它概念,所以基本上不会差多少。

  • 视图:是表达系统的某一方面特征的UML建模元素的子集,由一个或多个图组成对系统某个角度的抽象。
  • 图:由各种图片组成,用于描述一个视图的内容,是某一个抽象层上对建模系统的抽象表示。
  • 模型元素:包含了事物和事物之间的各种联系(关系),其中事物描述了面向对象概念,如类、对象等。
  • 通用机制:用于为模型元素提供额外信息,如注释,同时还提供了用户对UML的拓展机制。

不管各资料如何解释UML的组成,其作为面向对象的设计方法所使用的语言,则终是由面向对象的四个模型层次定义了UML的全部内容,四层结构自下向上如下:

  • 用户模型层:这个层次在不同的标准/场合中也有很多不同的名称,如 信息层数据、对象模型层实例模型层等等,该层是模型层和元模型层概念的实例,MOF的描述中该层是执行模型时所创建的运行元素组成。
  • 模型层:是元模型的实例,用于描述对象的属性等信息。
  • 元模型层:是组成UML的基本元素,包含了面向对象和面向组件的概念。该层定义了模型层的属性信息,而其又是元元模型层的实例。
  • 元元模型层:用于描述元模型的体系结构,定义了元模型的原型和规则。该层组成了UML最基本的元素 事物,代表要定义的所有事物,其虽然位于结构的最上层,但元元模型层还能是某一层的"实例"。

1.4 UML视图

1.4.1 用例视图

用例视图强调从系统的外部参与者(用户)角度需要的功能,描述系统应该具有的功能。用例视图是其他视图的核心,其内容直接驱动了其它视图的开发,即系统需要提供的功能都会用用例视图进行描述,如果用例视图被修改,也会对其它视图造成影响。

1.4.2 逻辑视图

逻辑视图注重于描述系统功能的内部,即提出对用例视图中的功能的实现。其既使用类图对象图描述系统的静态结构,也用状态图时序图协作图活动图描述系统内部的动态协作关系。

1.4.3 并发视图

并发视图主要考虑资源的有效利用、代码的并行执行以及系统中异步事件的处理,也需要处理线程之间的通信和同步。其主要使用状态图协作图活动图进行描述。

1.4.4 组件视图

一个组件也可以看作是一个模块,组件视图是描述系统的实现模块以及它们之间的依赖关系,其描述主要也就是组件图

1.4.5 部署视图

部署视图显示系统的物理部署,描述位于节点上的运行实例的部署情况,也允许评估分配结果和资源分配。部署视图一般使用部署图描述。

1.5 UML图

UML 1.x提供九种不同的图,分有静态图动态图两类:

  • 静态图:用例图、类图、对象图、组件图和部署图。
  • 动态图:顺序图、协作图、状态图和活动图。

UML 2.x将静态图和动态图化分成7+6种,即总共有13种:

  • 静态图: 包图用例图类图构件图部署图对象图组合结构图
  • 动态图: 活动图状态机图顺序图定时图交互概览图通信图

需要注意的是UML1.xUML2.x相较,后者新增了包图组合结构图交互概览图定时图,并且将状态图协作图分别更名为状态机图以及通信图,且在上述的动态图中,后四者都是有消息概念的交互图

1.5.1 用例图

用例图显示多个外部参与者以及它们与系统提供的用例之间的连接。用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。

image-20210316210532602

1.5.2 类图

类图以类为中心,描述了类于类之间的连接关系:关联依赖特殊化

1. UML笔记 - UML与面向对象
image-20210316210547480

1.5.3 对象图

对象图使用与类图相似的符号描述,而与类图不同的是其描述的是类的多个对象实例之间的关系。

[无图,懒得做]

1.5.4 状态图

状态图是对类描述的补充,用于描述类的对象可能所具备的状态,以及引起状态改变的事件。状态之间的变化称为转移,事件的发生会触发状态间的转移。

1. UML笔记 - UML与面向对象
image-20210316210603675

1.5.5 顺序图

也成为时序图,用于显示多个对象之间的动态协作,侧重于描述对象之间发送消息的时间顺序。

1. UML笔记 - UML与面向对象
image-20210316211012982

1.5.6 协作图

协作图用于对一次交互有意义的对象和对象间链建模,描述了消息的交互以及描述对象以及它们之间的关系。

1. UML笔记 - UML与面向对象
image-20210316211325916

1.5.7 活动图

活动图用于描述执行算法的工作流程中设计的活动。

1. UML笔记 - UML与面向对象
image-20210316211420485

1.5.8 组件图

组件图用代码组件来显示代码物理结构,一般是用于实际的编程中。

1. UML笔记 - UML与面向对象
image-20210316211459552

1.5.9 部署图

部署图用于描述系统的硬件和软件物理结构,既描述了实际动计算机和节点,也描述了它们之间的连接和连接类型。

1. UML笔记 - UML与面向对象
image-20210316211554101

1.5.10 其他图

上述的图是UML 1.x所定义的九种图,除了没有说明包图外,其它的基本上应该都能用来初期学习了,在后续是也会用到UML 2.x的概念的,大概,是吧。

1.6 模型元素

1.6.1 事物

事物是UML模型中面向对象基本的模块,属于静态部分,代表着物理上或概念上的元素。事物也分有四种:结构事物动作事物分组事物注释事物

1. 结构事物

每一个结构事物都有自己的图形表示,用于组成各种图,共有七种类型:类、接口、协作、用例、活动类、组件和节点。

  • 类:是对具有相同的属性、方法、关系和语义的对象的抽象,一个类可以有一个或多个接口。
  • 接口:是为类或组件提供特定服务的一组操作的集合。
  • 协作:定义了交互操作,一个给定的类可以是几个协作的组成部分,这些协作代表构成系统模式的实现。
  • 用例:描述系统中特定参与者执行的一系列动作。
  • 活动类:是类对象有一个或多个进程或线程的类。
  • 组件:是实现了一个接口集合的物理上可替换的系统部分。
  • 节点:是运行时存在的一个个物理元素,它代表一个可计算的资源。
1. UML笔记 - UML与面向对象
image-20210318011909550

2. 动作事物

动作事物是UML模型中的状态部分,代表时间和空间上的动作,最基本的元素是交互状态机

  • 交互:是一组对象在上下文中,为达到特定目的而进行的一系列 消息交换组成的动作。
  • 状态机:由一系列对象的 状态组成。
1. UML笔记 - UML与面向对象
image-20210318012803351

3. 注释事物

注释事物是UML中模型元素的解释部分。

1. UML笔记 - UML与面向对象
image-20210318012926590

1.6.2 关系

UML中关系分关联关系依赖关系泛化关系实现关系聚合关系

1. 关联关系

关联关系连接元素和链接实例,它连接两个模型元素。

1. UML笔记 - UML与面向对象
image-20210318013616366

2. 依赖关系

依赖关系描述一个元素对另一个元素的依附。

1. UML笔记 - UML与面向对象
image-20210318013839366

3. 泛化关系

又名继承关系,即一个元素是另一个元素的特例。

1. UML笔记 - UML与面向对象
image-20210318014715669

4. 实现关系

实现关系描述一个元素实现另一个元素。

1. UML笔记 - UML与面向对象
image-20210318015111295

5. 聚合关系

聚合关系描述元素之间部分与整体的关系。

1. UML笔记 - UML与面向对象
image-20210318015538923

1.7 通用机制

通用机制可以为UML模型元素增添注释、信息或语义,还能够对UML进行拓展。通用机制包括修饰注释规格说明拓展机制四种。

1.7.1 修饰

修饰是为图中的模型元素增加语义而提供了可视化表示。通常可以对元素的图形和文字进行修饰。

image-20210318020602240

1.7.2 注释

注释是以自由文本的形式出现的,可以附加到任何模型中的任意位置,用于为模型元素添加额外信息与说明。

image-20210318020637635

1.7.3 规格说明

规格说明是对模型元素本身的描述,模型元素应具有数据值特性,其中特性用名称和标记值定义,而标记值是一种特定的类型,如整形或字符串。

1.7.4 拓展机制

UML允许在控制的方式下进行拓展,而使用拓展机制可可以定义使用自己的元素。UML拓展机制由构造型标记值约束构成。

1.8 使用UML建模

从软件开发的角度出发,在进行面向对象软件开发建模时有需求分析分析设计构造测试

  • 需求分析:定义了客户的需求以及系统对应的功能,使用的是UML的用例图,描述系统 需要做什么
  • 分析:主要考虑功能内部逻辑的问题,可以用逻辑视图和动态视图来描述,但仅针对问题域类建模,不定义系统解决方案的细节。
  • 设计:将分析阶段的结果进行细化分析。
  • 构造:敲代码。
  • 测试:通常分 单元测试系统测试接受测试


以上是关于1. UML笔记 - UML与面向对象的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记---UML

UML面向对象分析建模与设计教与学(大纲+教案+视频+题库)

Thinking in UML 学习笔记——建立对象模型

《UML大战需求分析》阅读笔记1

UML和模式应用-1面向对象的分析与设计

UML和面向对象分析与设计总结