UML的基本结构 通过对UML的学习,整理出了上面这幅UML概要结构图,主要是UML事物,UML关系和UML图,还有很多规格说明,符号,修饰,扩展机制等等元素没有体现,其实,图中的三大块加上那么多边边角角的元素,高度浓缩概括起来,可以把UML这门课的主要内容描述为: 在软件生命周期中,准确地把 UML事物和UML关系通过一定规则组合,利用Rose绘制成UML的9种图,以帮助我们开发出高质量的软件。
简略来说,UML的9种图在软件生命周期中各个阶段的应用主要体现在:
1、在需求分析阶段:主要采用用例图来描述需求(角色、功能、外部交互等);
以上只是很简略地说明了UML的应用,在下面的博客中,我们将介绍充分利用UML,面向对象的软件开发过程,即RUP(Rational Unified Process)
补(欠了一点东西,终于补全了):什么是RUP——http://blog.csdn.net/shan9liang/article/details/6723229 UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别 一、表示符号上的区别
指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系,可分单重继承,多重继承(java不支持);在Java中此类关系通过关键字extends明确标识。 实现 指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识 依赖 可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某个老师要授课,则需要有这么一门课让他教授,此时老师与课之间的关系就是依赖;表现在代码层面,为类Course作为参数被类Professor在Teach方法中使用; 关联 它体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,普通关联关系的两个类处于同一层次上,关联可以是单向(只有一个类知道另外一个类的公共属性和操作)的也可以是双向(两个类都知道另一个类的公共属性和操作)的;大多数关联应该是单向的,单向关系更容易建立和维护,有助于寻找可服用的类。 双向关联: 单向关联: 聚合 聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如书本与暑假、公司与员工的关系等;具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。 组合 组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,也可以理解为如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。比如你和你的大脑或一本书和它的书页。 综上所述,对于继承、实现这两种关系比较简单,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;从后几种关系所表现的强弱程度来看,依次为:组合>聚合>关联>依赖。在面向对象的设计过程中,能采取强度较大的关系,决不能采取强度小的关系。 随着学习深入,会加上代码实现! 从上面的用例图模型,我们可以大致了解用例图所描述的是什么。下面进行详细介绍。
用例图,即用来描述什么角色通过某某系统能做什么事情的图,用例图关注的是系统的外在表现,系统与人的交互,系统与其它系统的交互。 用例图有三种构成元素,分别是:角色,用例,关系
类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图。
类图是系统中静态视图的一部分,静态视图可以包括许多的类图。
静态视图用于为软件系统进行结构建模,它构造系统的词汇和关系,而结构模型的可视化就是通过类图来实现的。
类图由以下基本元素构成:类;接口;协作;关系(依赖、泛化、实现和关联)。
如果对类图中的关系模糊,可以看我的另一篇博客: http://blog.csdn.net/shan9liang/article/details/6705728
下面用一张图来概括类图的基本内容:
通常以下述3种方法之一使用类图:
1、对系统的词汇建模 用UML构建系统通常是从构造系统的基本词汇开始,用于描述系统的边界,也就是说用来决定哪些抽象是要建模系统中的一部分,哪些抽象是处于要建模系统之外。这是非常重要的一项工作,因为系统最基本的元素在这里被确定。可以用类图描述抽象和它们的职责。 2、对简单协作建模 现实世界中的事物大多是相互联系、相互影响的,将这些事物抽象成类后,情况也是如此。所要构造的软件系统中的类很少有孤立存在的。它们总是和其他类协同工作,以实现强于单个类的语义。因此,在抽象了系统词汇后,系统分析师还必须将这些词汇中是事物协同工作的方式可视化和详述。
3、对逻辑数据库模式建模 在设计一个数据库是,通常使用数据库模式来描述数据库的概念设计。数据库模式建模是对数据库概念设计的蓝本,可以使用类图对这些数据库的模式进行建模。 一、用一张图来介绍一下对象图的基本内容 二、对象图与类图的基本区别 三、对象图实例 “活动图”可通过一系列操作将业务流程或软件进程以工作流的形式显示出来。这些操作可以由人、软件组件或计算机来执行。 使用活动图可以描述多种类型的流程,如下:
状态图用来描述一个特定的对象的所有可能的状态以及由于各种事件的发生而引起的状态之间的转移。与活动图的主要区别体现在:状态图侧重从行为的结果来描述,而活动图侧重从行为的动作来描述。活动图可能涉及多个对象,而状态图只涉及一个特定的对象。
下面,通过一张图来描述状态图的基本内容。 下面是一张状态图的实例图,描述了一个温度控制器的状态图。 时序图(Sequence Diagram)是显示对象之间交互的图,这些对象是按时间顺序排列的。时序图中显示的是参与交互的对象及其对象之间消息交互的顺序。 下面这张图介绍了时序图的基本内容: 下面这张图是时序图的实例,创建课程时序图: 协作图(Collaboration Diagram)—UML图(七) 协作图(Collaboration Diagram /Communication Diagram,也叫合作图)是一种交互图(interaction diagram),强调的是发送和接收消息的对象之间的组织结构。一个协作图显示了一系列的对象和在这些对象之间的联系以及对象间发送和接收的消息。对象通常是命名或匿名的类的实例,也可以代表其他事物的实例,例如协作、组件和节点。使用协作图来说明系统的动态情况。 下面这张图介绍协作图的基本内容: 下面一张图是一个协作图的实例,创建课程的协作图: 由于协作图和时序图在语意上是相通的,所以可以互相转换,下面是利用ROSE把上面的协作图转换成的时序图的实例: 构件图(Component Diagram)—UML图(八) 构件图是显示代码自身结构的实现级别的图表。构件图由诸如源代码文件、二进制代码文件、可执行文件或动态链接库 (DLL) 这样的构件构成,并通过依赖关系相连接 下面这张图介绍了构件图的基本内容:
下面这张图是个构件图的实例: 部署图(Deployment Diagram)—UML图(九) UML部署图描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图。 部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间件。
下面这张图介绍了部署图的基本内容:
下面这张图是一个部署图的实例: 补充一点,节点和构件的联系与区别:
|
|