UML知识点

Unified Modeling Language (UML)包含不同类型的类图,用于描述系统中的类、对象和它们之间的关系。以下是几种常见的类图类型及其介绍:

类图 (Class Diagrams): 类图是描述系统中类及其之间关系的静态结构图。它展示了类的属性、方法、关联、继承、接口等信息。主要元素包括类、接口、关联、继承、依赖、聚合和组合等。

对象图 (Object Diagrams): 对象图是类图的实例化表示,它展示了系统中特定时间点的对象及其之间的关系。它描述了类的实例或对象及其属性值、连接和相互作用。

包图 (Package Diagrams): 包图展示了系统的物理和逻辑组织结构,用于组织和管理类、对象、组件和其他结构化元素。它显示包、子包和其中包含的元素。

部署图 (Deployment Diagrams): 部署图描述了系统的物理部署,展示了软件组件如何部署在硬件节点上。它显示了节点、组件、连接以及节点上的部署关系。

组件图 (Component Diagrams): 组件图描述了系统中组件及其关系,强调了系统的物理和逻辑组成。它显示了组件、接口、依赖关系等。

交互图 (Interaction Diagrams): 交互图包括序列图和协作图,用于展示对象之间的交互和消息传递。序列图描述了对象之间的交互顺序,而协作图描述了对象之间的协作关系。

状态图 (State Diagrams): 状态图描述了对象在其生命周期中状态的变化以及导致状态转换的事件。它展示了对象状态之间的转移和行为。

 

依赖关系(只要A用到了B,A和B就存在依赖关系)
依赖的范围比较广,类与类之间是肯定存在依赖关系的,如果不存在那么就没必要研究,因此解耦只能说尽可能的解耦,如果解耦到两个类完全没有关系那么就没有必要研究。

关联关系(1对多等关系就是关联)
关联关系和后面的聚合关系有点像,关联关系一般体现在A和B相互关联,例如A有成员变量B,同时B有成员变量A

public class A {
    private B b;// 相互关联

    public B getB() {
        return b;
    }

    public void setB(B b) {
        this.b = b;
    }
}
class B {
    private A a;// 相互关联

    public A getA() {
        return a;
    }

    public void setA(A a) {
        this.a = a;
    }
}

泛化关系(等同于父子类的继承关系)
泛化就是继承

实现关系(等同于接口的实现)
实现关系很简单就是接口的实现,就不解释了。

聚合关系(可以单一存在的两个类)
如下代码创建A不一定需要创建B(A和B可以拆分)

public class A {
    private B b;// 聚合,通过set方式进行聚合,这个b不一定是B可以是B的子类

    public B getB() {
        return b;
    }

    public void setB(B b) {
        this.b = b;
    }
}
class B {
}

组合关系(不可拆分的两个类)
如下代码是属于组合关系,当我们创建A的时候B也会一起伴随着创建(好像不可拆分一样)。

public class A {
    private B b=new B();// 组合
}
class B {
}

 

UML 的结构

UML结构包括构造块、规则和公共机制三个部分。

(1)构造块。UML 有三种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。事物是UML的重要组成部分,关系把事物紧密联系在一起,图是多个相互关联的事物的集合。

(2)公共机制。公共机制是指达到特定目标的公共UML 方法,主要包括规格说明(详细说)、修饰、公共分类(通用划分)和扩展机制四种。规格说明是事物语义的细节描述,它是模型真正的核心;UML 为每个事物设置了一个简单的记号,还可以通过修饰来表达更多的信息;UML 包括两组公共分类,分别是类与对象(类表示概念,而对象表具体的实体)、接口与实现(接口用来定义契约,而实现就是具体的内容);扩展机制包括约束(扩展了UML 构造块的语义,允许增加新的规则或修改现有的规则)、构造型(扩展UML 的词汇,用于定义新的构造块)和标记值(扩展了UML 构造块的特性,允许创建新的特殊信息来扩展事物的规格说明)。

(3)规则。规则是构造块如何放在一起的规定,包括为构造块命名;给一个名字以特定含义的语境,即范围;怎样使用或看见名字,即可见性;事物如何正确、一致地相互联系,即完整性;运行或模拟动态模型的含义是什么,即行。

特点

(1)UML统一了Booch、OMT和OOSE等方法中和基本概念和符号。

(2)UML吸取了全面对象领域中各种优秀的思想,其中也包括非OO方法的影响。

UML符号表示考虑了各种方法的图形表示,删掉了很多容易引起混乱的、多余的和极少使用的符号,同时添加了一些新符号。因此,在UML中凝聚了面向对象领域中很多人的思想。这些思想并不是UML的开发者们发明的,而是开发者们依据最优秀的OO方法和丰富的计算机科学实践应验综合提炼而形成的。

(3)在UML标准中新加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibility Mechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activity Diagram)等新概念,并清晰地区分类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interfaces)和组件(Components)概念。

UML14个图例

1、类图(class diagram)【结构型】

类图是UML面向对象中最常用的一种图,类图描述一组类、接口、协作和它们之间的关系。类图可以帮助人们更直观地了解一个系统的体系结构。通过关系和表示的类图,可以图形化地描述一个系统的设计部分。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图

考试点:用来分析业务概念

 

2、对象图(object diagram)【结构型】

对象图描述一组对象及它们之间的关系。UML面向对象中对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示的多个对象实例,而不是实例的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。

 

考试点:很多应用、重点

3、构件图(component diagram)【结构型】

构件图描述一个封装的类和它的接口、端口,以及由内嵌的构件和连接件构成的内部结构。也称为组件图。构件图描述代码部件的物理结构及各部件之间的依赖关系,构件图有助于分析和理解部件之间的相互影响程度。从构件图中,可以了解各软件组件(如源代码文件或动态链接库)之间的编译机器和运行时依赖关系。使用构件图可以将系统划分为内聚组件并显示代码自身的结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建大的系统来说,构件图是很重要的。构件图是类图的变体。

 

考试点:必用来分析IT基础架构、软件架构等方面需求

4、组合结构图(composite structure diagram)

组合结构图描述结构化类(例如,构件类)的内部结构,包括结构化类与系统其余部分的交互点。组合结构图用于画出结构化类的内部内容。

5、用例图(use case diagram)【行为型】

用例图是从用户角度描述系统功能,并指出各功能的操作者。用例图是UML中最简单也是最复杂的一种图。用例图描述一组用例、参与者及它们之间的关系。用例图给出系统的静态用例视图。这些图在对系统的行为进行组织和建模时是非常重要的。

说它简单是因为它采用了面向对象的思想,基于用户角度来描述系统,绘制非常容易,图形表示直观并且容易理解。说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。用例图展示了一组用例、参与者以及它们之间的关系。

 

考试点:必考

6、顺序图(sequence diagram,序列图)【行为型】

顺序图是一种交互图(interaction diagram),顺序图描述了对象之间动态的交互关系,主要体现对象之间进行消息传递的时间顺序。顺序图由一组对象构成,每个对象分别带有一条竖线,称做生命线,它代表时间轴,时间沿竖线向下延伸。交互图展现了一种交互,它由一组对象或参与者以及它们之间可能发送的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。UML面向对象中顺序图描述了这些对象随着时间的推移项目之间交换消息的过程。消息从一个对象的生命线指向另一个对象的生命线的水平箭头表示。

 

考试点:必会使用一种图来分析业务流程图,大部分情况下至少会用到其中两种图

7、通信图(communication diagram)【行为型】

通信图也是一种交互图,UML面向对象中通信图用于显示组件及其交互关系的空间组织结构,它不侧重于交互的顺序。通信图显示了交互中哥哥对象之间的组织交互关系以及对象彼此之间的链接。与顺序不同,通信图显示的是对象之间的关系。它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构(关系)。在UML 1.X 版本中,通信图称为协作图(collaboration diagram)。

另外,通信图没有将时间作为一个单独的维度,因此序列号就决定了信息及并发线程的顺序。它用带标号的箭头来描述特定的方案,以显示在整个方案过程中信息的移动情况。通信图主要用于描绘对象之间消息的移动情况来反映更具体的方案,显示对象及其交互关系的空间组织结构,而非交互的顺序。

 

考试点:基本不考

8、定时图(timing diagram,计时图)

定时图也是一种交互图,它强调消息跨越不同对象或参与者的实际时间,而不仅仅只是关心消息的相对顺序。

考试点:必用来分析IT基础架构、软件架构等方面需求

9、状态图(state diagram)【行为型】

状态图描述一个状态机,它由状态、转移、事件和活动组成。描述一个实体基于事件反应的动态行为,显示了该实体是如何根据当前所处的状态对不同的事件作出反应。状态图给出了对象的动态视图。它对于接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为,这非常有助于对反应式系统建模。

 

考试点:必会使用一种图来分析业务流程图,大部分情况下至少会用到其中两种图

10、活动图(activity diagram)【行为型】

UML面向对象中活动图记录了单个操作或方法的逻辑,或者单个业务流程的逻辑。活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程。描述系统中各种活动的执行顺序,通常用于描述一个操作所要进行的各项活动的流程执行流程。同时,它也常被用来描述一个用例的处理流程,或者某种交互流程。

 

考试点:必会使用一种图来分析业务流程图,大部分情况下至少会用到其中两种图

11、部署图(deployment diagram)【结构型】

部署图,也称为配置图。UML面向对象中配置图描述系统中硬件和软件的物理配置情况和系统体系结构。部署图描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。

在配置图中,用结点表示实际的物理设备,如计算机和各种外部设备等,并根据它们之间的连接关系,将相应的结点连接起来,并说明其连接方式。在结点里面,说明分配给该结点上运行的可执行件或对象,从而说哪些软件单元被分配在哪些结点上运行。

 

posted @ 2023-12-07 18:37  一个小虎牙  阅读(68)  评论(0编辑  收藏  举报