UML建模原理:分解,抽象,泛化,投影/视图,构件化,形式化
下面对UML九图做一个简要的概括
用例图:
描述用户需求,从用户角度描述系统功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。需要用户和软件开发人员共同完成。
设计用例图的时候就要把抽象、继承、多态考虑进去,做到更好的代码复用,用例之间可以有泛化关系,角色之间也可以有泛化关系,而且尽可能多的提取出系统中好的泛化关系。
考虑用例和用例之间的包含关系include、用例和用例之间的扩展关系extend、用例和用例之间的泛化关系
用例图重在应用,重在交流,重在事件流的描述。
类图:
用于定义系统中的类,包括描述类的内部结构和类之间的关系。类图主要用于描述系统的静态结构
寻找系统中的名词--->抽象出类--->编写属性、方法--->确定类之间的关系
对象图:
描述一个系统在某个具体时刻的静态结构,此时都有什么对象,对象之间的关系都有什么……是系统某个时刻的快照,而类图描述所有可能的情况。
状态图:
用来描述一个特定对象的所有可能状态以及由于各种事件的发生而引起的状态之间的转移。状态转换图用于描述给定类的发展历史,导致状态转换的事件和导致状态改变的活动,对象状态是对象可以存在的可能条件,我们为类的重要动态行为建立状态转换图。
活动图:
描述满足用例要求所要进行的活动以及活动间的约束关系,使用活动图有利于识别系统的并行活动。
活动图和流程图(流程图常被用来建立算法模型,使用流程图可以表示一个算法的执行序列、过程、判定点、分支和循环)十分类似,不同之处在于它支持并行活动,缺点是很难描述清楚动作与对象之间的关系,没有交互图直接。
状态图侧重行为的结果,活动图侧重行为的动作。
活动图的作用:
描述一个操作的执行过程中所完成的工作或者动作
描述对象内部的工作
显示如何执行一组相关的动作,以及这些动作如何影响周围对象
描述用例的执行
处理多线程应用
序列图:
描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序,同时也显示对象之间的交互过程,按时间顺序排列对象交互操作。
协作图:
描述对象间的合作关系,侧重说明哪些对象之间有消息的传递。
序列图和协作图可以相互转化,它们在语义上等价,只是侧重点不同
构件图:
显示一组构件之间的组织与依赖关系,构件是定义良好的接口实现单元,使用它最重要的就是复用。
用来描述代码构件的物理结构以及各构件之间的依赖关系。一个构件可以是一个资源文件、一个二进制文件或者一个可执行文件。
部署图:
描述系统硬件的物理拓扑结构以及在此结构上执行的软件,实际的物理设备以及它们之间的连接关系。
扩展:包图
包:把元素组织成组的机制,可以拥有其他元素,可以是类、接口、构件、节点、协作、用例、图和其他包。一个包形成一个命名空间。包图是对一个程序,软件系统进行模块划分,使得源码结构更清晰。
包之间存在从属关系,包之间的关系意味着,该包中的类可以和其他包中的类进行通信
理论知识总结到这里,下篇博客贴上我的图。