`

学习UML笔记

阅读更多

学习 UML 笔记

 

前言

为了自己能快速将 UML 技术应用在软件开发的设计过程当中,特总结出如下简洁的笔记,不过只是自己学习之用,其间的用语难免不考究,正确性也日后也待验证。绘制UML的工具本人采用了开元ArgoUML工具小巧易用。

1. 为什么要建模

    建模是开发优秀软件所有活动的核心部分,其目的就是把所设计的结构与系统的行为沟通起来,并对系统的体系结构进行可视化和控制.建模是为了真正理解正在构造的系统.

2.UML 主要有哪些图

<!--[if !supportLists]--> ²        <!--[endif]-->   静态图

描述了那些不发生变化的软件元素的落界结构,描绘了类、对象、数据结构及其存在于他们之间的关系。

<!--[if !supportLists]--> ²        <!--[endif]--> 动态图

展示了在运行期间软件实体的变化,描绘了执行流程、实体改变状态的方法。

<!--[if !supportLists]--> ²        <!--[endif]--> 物理图

显示了软件实体的不变化的物理结构描绘了物理实体有源文件、库文件、数据文件等等,以及存在于他们之间的关系。

2.1 类图

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US" style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">2.1.1</span> </chsdate>

类图属于静态图,类图也是本学习任务中的重点。

eg

1.jpg

<shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 415.5pt; HEIGHT: 86.25pt" type="#_x0000_t75" o:borderrightcolor="this" o:borderbottomcolor="this" o:borderleftcolor="this" o:bordertopcolor="this"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.png" o:title="" grayscale="t" gain="69719f"></imagedata><bordertop type="single" width="4"></bordertop><borderleft type="single" width="4"></borderleft><borderbottom type="single" width="4"></borderbottom><borderright type="single" width="4"></borderright></shape><!--[if !vml]--> <!--[endif]-->

解释:

- ’号表示变量或者方法为私有。

+ ’号表示变量或者方法为公有。

# ’号表示变量或者方法为受保护的。

‘:’号表示变量或者参数所属类型,在方法之后表示方法返回值类型。

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US" style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">2.1.2</span> </chsdate>关联

类之间的关联大多用来表示变量实例持有着对其他对象的引用。

 

带箭头的线一般表示关系、关联,而箭头附近的数字表示含有实例的数目。而直线下方的名称表示变量或者实例的名称。

eg

<shape id="_x0000_i1026" style="WIDTH: 388.5pt; HEIGHT: 57pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image003.png" o:title=""></imagedata></shape><!--[if !vml]--> 2.jpg<!--[endif]-->

当变量(实例)的数目比较多的时,可用‘ * ’表示,一般在程序中用 vector 或者 list 表示。

<shape id="_x0000_i1027" style="WIDTH: 389.25pt; HEIGHT: 55.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image005.png" o:title=""></imagedata></shape><!--[if !vml]--> 3.jpg<!--[endif]-->

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US" style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">2.1.3</span> </chsdate>继承

<shape id="_x0000_i1028" style="WIDTH: 90.75pt; HEIGHT: 18pt" type="#_x0000_t75" o:ole=""><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image007.wmz" o:title=""></imagedata></shape><!--[if !vml]--> 4.jpg<!--[endif]--> :三角型箭头表示的是继承(泛化)。

eg       

<shape id="_x0000_i1029" style="WIDTH: 390.75pt; HEIGHT: 100.5pt" type="#_x0000_t75" o:borderrightcolor="this" o:borderbottomcolor="this" o:borderleftcolor="this" o:bordertopcolor="this"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image009.png" o:title=""></imagedata><bordertop type="single" width="4"></bordertop><borderleft type="single" width="4"></borderleft><borderbottom type="single" width="4"></borderbottom><borderright type="single" width="4"></borderright></shape><!--[if !vml]--> 5.jpg<!--[endif]-->

[ 注意:箭头是指向基类的。 ]

如果继承接口,那么用虚线的三角型箭头。

接口被画成象一个棒棒糖的符号,并连接在实现他的类上。

eg <shape id="_x0000_i1034" style="WIDTH: 91.5pt; HEIGHT: 67.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image011.png" o:title=""></imagedata></shape><!--[if !vml]--> 6.jpg<!--[endif]-->

类的构造型显示在一对双角括号里面 ”<<>>” ,常在类的名称上面。

eg

<shape id="_x0000_i1035" style="WIDTH: 261.75pt; HEIGHT: 54.75pt" type="#_x0000_t75" o:borderrightcolor="this" o:borderbottomcolor="this" o:borderleftcolor="this" o:bordertopcolor="this"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image013.png" o:title=""></imagedata><bordertop type="single" width="4"></bordertop><borderleft type="single" width="4"></borderleft><borderbottom type="single" width="4"></borderbottom><borderright type="single" width="4"></borderright></shape><!--[if !vml]--> 7.jpg<!--[endif]-->

当构造型为 <<utility>> ,那么该类的所有方法和属性都是静态的(常为工具类)。

eg

<shape id="_x0000_i1030" style="WIDTH: 394.5pt; HEIGHT: 91.5pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image015.png" o:title=""></imagedata></shape><!--[if !vml]--> 8.jpg<!--[endif]-->

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US" style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">2.1.4</span> </chsdate>聚合

关联的一种特殊形式,它意味着一种整体和部分( whole/part )的关系。

<shape id="_x0000_i1031" style="WIDTH: 375.75pt; HEIGHT: 57pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image017.png" o:title=""></imagedata></shape><!--[if !vml]--> 9.jpg<!--[endif]-->

 

<chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899"><span lang="EN-US" style="FONT-SIZE: 9pt; LINE-HEIGHT: 173%">2.1.5</span> </chsdate>内部类

内部类在 UML 中以一个带十字的圆圈的关联标记来表示。

eg

<shape id="_x0000_i1032" style="WIDTH: 378pt; HEIGHT: 57pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image019.png" o:title=""></imagedata></shape><!--[if !vml]--> 10.jpg<!--[endif]-->

匿名内部类的构造型有 <<anonymous>>

2.2 交互视图——序列图、协作图

交互视图描述了执行系统功能的各个角色之间相互传递<rtx w:st="on">消息</rtx>的顺序关系。类元是对在系

统内交互关系中起特定作用的一个对象的描述,这使它区别于同类的其他对象。交互视图显

示了跨越多个对象的系统控制流程。

UML 交互图以图形的形式表示出方法调用过程,它有两种形式:序列(顺序图)图( Sequence Diagram )和协作图( Collaboration Diagram )。

协作图 : 是用几何排列来表示交互作用中的各角色(如图 3 - 4 )。附在类元角色上的箭头代表<rtx w:st="on">消息</rtx>。<rtx w:st="on">消息</rtx>的发生顺序用<rtx w:st="on">消息</rtx>箭头处的编号来说明。协作图的一个用途是表示一个类操作的实现。协作图可以说明类操作中用到的参数和局部变量以及操作中的永久链。当实现一个行为时,<rtx w:st="on">消息</rtx>编号对应了程序中嵌套调用结构和信号传递过程。

 

序列图是一种被使用 UML 的人使用的最常用的动态建模画法。

序列图表示了对象之间传送<rtx w:st="on">消息</rtx>的时间顺序。每一个类元角色用一条生命线来表示—

即用垂直线代表整个交互过程中对象的生命期。生命线之间的箭头连线代表<rtx w:st="on">消息</rtx>。序列图可

以用来进行一个场景说明—即一个事务的历史过程。

 

什么时候该用序列图?只有当你迫切地需要给某人描述一组对象的如何协作的情况的时候,或者当你要为你自己可视化协作情况的时候,你再去用序列图。

2.3 用例图

什么是用例图?

用例视图是被称为参与者的外部用户所能观察到的系统功能的模型图。用例是系统中的

一个功能单元,可以被描述为参与者与系统之间的一次交互作用。用例模型的用途是列出系

统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行。一个用例是有关一个系统的行为的一个描述。那个描述是从一个用户的观点编写的。

处理用例的真正诀窍是保持用例的简单,细节是不重要的,除非到了最后。把用例当作最及时的需求。在 UML 中的所有的图,用例图是最容易混淆的,也是最没有什么用的,不过系统边界图除外。

一般椭圆形表示一个一个的用例,小人表示行为者。

eg :(一个论坛<rtx w:st="on">前台</rtx>用例图)

<shape id="_x0000_i1033" style="WIDTH: 369pt; HEIGHT: 156pt" type="#_x0000_t75" o:borderrightcolor="this" o:borderbottomcolor="this" o:borderleftcolor="this" o:bordertopcolor="this"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image021.png" o:title=""></imagedata><bordertop type="single" width="4"></bordertop><borderleft type="single" width="4"></borderleft><borderbottom type="single" width="4"></borderbottom><borderright type="single" width="4"></borderright></shape><!--[if !vml]--> 11.jpg<!--[endif]-->

2.4 活动图

活动图是状态机的一个变体,用来描述执行算法的工作流程中涉及的活动。活动状态代表了一个活动:一个工作流步骤或一个操作的执行。活动图描述了一组顺序的或并发的活动。活动视图用活动图来体现。活动图的用途是对人类组织的现实世界中的工作流程建模。

[ ] :提到状态机,那什么是状态机呢?

状态机视图 : 是一个类对象所可能经历的所有历程的模型图。状态机由对象的各个状态和连接这些状态的转换组成。每个状态对一个对象在其生命期中满足某种条件的一个时间段建模。当一个事件发生时,它会触发状态间的转换,导致对象从一种状态转化到另一新的状态。与转换相关的活动执行时,转换也同时发生。状态机用状态图来表达。

 

实心圆表示活动图的起点,实际上是一个占位符,带边框的实心圆表示终点。

圆角矩形表示执行的过程或活动。

菱形表示判定点。

箭头表示活动之间的转换,各种活动之间的流动次序。

箭头上的文字表示继续转换所必须满足的条件,总是使用格式 “[ 条件 ]” 来描述。

粗线条表示可能会并行进行的过程的开始和结束。

 

eg

<shape id="_x0000_i1036" style="WIDTH: 333pt; HEIGHT: 276pt" type="#_x0000_t75"><imagedata src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image023.png" o:title=""></imagedata></shape><!--[if !vml]--> 12.jpg<!--[endif]-->

 

分享到:
评论

相关推荐

    个人UML学习读书笔记

    6. **学习UML的方法** - 自学:通过阅读书籍、在线教程和实践案例来掌握基本概念和图形表示。 - 简洁学习:重点理解核心元素和常用图表,逐步深入复杂关系和高级特性。 - 实践应用:结合实际项目,绘制UML图,...

    UML建模ppt文档学习笔记

    **UML建模技术概述** ...通过学习UML建模,开发者能更好地理解和设计软件系统,提高沟通效率,减少误解和错误,确保项目的成功实施。深入掌握UML的各种图表和概念,对于任何软件工程团队来说都是至关重要的。

    大象UML学习笔记

    大象学习笔记

    [UML]UML学习笔记

    ### UML学习笔记知识点 #### 一、UML概述与重要性 - **定义**: 统一建模语言(Unified Modeling Language, UML)是一种标准化的建模语言,用于描述和构建软件系统的结构和行为。它由一组图表、符号和规则构成,...

    UML学习笔记.zip

    它是学习UML的基础,帮助理解UML模型如何映射到实际的代码结构。 2. **第二章_UML语言综述** 在这一章,你可以了解UML的基本元素,包括用例、类、对象、关系、图以及各种图的用途。UML语言概述提供了对UML的全面...

    尚学堂uml学习笔记 李腾飞讲解

    10. **学习建议**:学习UML不仅要理解各种图型和符号,还需要将其与实际的软件开发过程相结合。通过实践,如绘制和解释模型,将理论知识转化为实际技能,才能真正掌握UML的精髓。 综上所述,《尚学堂uml学习笔记 ...

    我的uml学习笔记(在尚学堂学习的)

    《UML学习笔记——探索软件建模的利器》 UML,全称为统一建模语言,是软件开发中的一种重要工具,尤其在需求分析和设计阶段发挥着关键作用。它并非一种具体的分析或设计方法,而是图形化表示法,帮助我们清晰地表达...

    UML笔记(思维导图)

    Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,...

    UML学习资料(内附三本电子书和学习笔记)

    学习UML,你需要掌握以下几个核心知识点: - **基本元素**:了解UML的基本构建块,如类、对象、接口、关联、依赖、泛化和实现等。 - **图种及用途**:熟悉各种UML图,如类图、用例图、序列图、状态图、活动图等,...

    UML笔记之用例图

    本人一菜鸟的学习笔记 仅当学习纪录,,,有兴趣者可以自行下载察看 不喜者 勿喷

    UML学习笔记

    **UML学习笔记** UML,全称统一建模语言(Unified Modeling Language),自1996年Booch、Rumbaugh和Jacobson合作推出的UML0.9版本以来,已成为软件开发领域广泛使用的建模工具。UML通过五种视图来描绘软件系统的...

    UML笔记3(组件图、配置图)

    **UML笔记3:组件图与配置图详解** 在软件工程中,统一建模语言(UML)是一种标准的建模方法,用于描述系统的设计、结构和行为。本笔记将聚焦于UML中的两个关键图表——组件图和配置图,它们在系统分析和设计过程中...

    OOAD+UML学习笔记

    对OOAD和UML指导思想的基本概述,欢迎大家下载学习,也希望各位继续完善

    UML学习笔记 建模语言

    ### UML学习笔记:建模语言详解 #### 统一建模语言(UML)概述 统一建模语言(UML, Unified Modeling Language)是一种被广泛应用于软件开发领域的标准化建模语言,它为软件密集型系统的可视化建模提供了一种统一的...

    C#,UML ,sql学习笔记

    综上所述,这份“C#,UML,sql学习笔记”涵盖了C#编程中的核心概念,如权限管理、多线程,以及数据库管理和设计的高级技巧SQL优化,还包括了软件工程中重要的设计和规划工具UML。学习这些内容不仅可以提升个人的技术...

    UML和模式应用学习笔记

    在这一过程中,UML(统一建模语言)和设计模式起着至关重要的作用。UML是一种标准的图形化表示法,用于描述面向对象系统的结构和行为。设计模式则是过去经验的总结,它们是解决常见设计问题的标准解决方案。 在面向...

    (Rational rose) UML学习笔记

    UML设计网上选课系统:本系统拟使用Java语言通过三层模型实现:数据核心层,业务逻辑层和接入层。其中,数据核心层包括对于数据库的操作;业务逻辑层作为中间层对用户输入进行逻辑处理、再映射到相应的数据层操作;...

    OOAD+UML 学习笔记

    ### OOAD+UML 学习笔记 #### 面向对象的基本概念 面向对象(Object-Oriented Analysis and Design, OOAD)是一种软件工程方法论,它将面向对象的思想应用于软件开发过程中,以提高软件的灵活性、可复用性和可维护...

    UML大象读书笔记

    《UML大象读书笔记》是一篇关于理解和应用UML(Unified Modeling Language)的深度学习笔记,作者通过阅读《UNL大象》这本书,分享了对UML基础和面向对象方法的见解,以及个人的理解和认知。 面向对象方法是现代...

Global site tag (gtag.js) - Google Analytics