第二章 使用UML进行建模_第1页
第二章 使用UML进行建模_第2页
第二章 使用UML进行建模_第3页
第二章 使用UML进行建模_第4页
第二章 使用UML进行建模_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章使用UML进行建模2.1导言UML统一建模语言是适用于所有面向对象方法学的标准记号系统,可以用于建立系统开发中的多种模型功能模型 --- 用例图对象模型 --- 类图,对象图动态模型 --- 交互图(顺序图)、状态图、

活动图、协作图其他 --- 构件图、部署图UML可视化建模UML可视化建模2.2UML综述用例图(

UseCaseDiagram)用例图是从用户角度描述系统功能,是用户所能观察到的系统功能的模型图,用例是系统中的一个功能单元包括参与者、系统边界、用例本身类图(ClassDiagram)类图描述系统中类的静态结构。不仅定义系统中的类,表示类之间的联系如关联、依赖、聚合等,也包括类的内部结构(类的属性和操作)对象图(ObjectDiagram)

对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类顺序图(SequenceDiagram)顺序图显示对象之间的动态合作关系,它强调对象之间消息发送的顺序,同时显示对象之间的交互

顺序图的一个用途是用来表示用例中的行为顺序。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起状态转换的触发事件

协作图(CollaborationDiagram)协作图描述对象间的协作关系,协作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,协作图还显示对象之间的关系。协作图的一个用途是表示一个类操作的实现

顺序图清楚地表示了交互作用中的时间顺序(强调时间),但没有明确表示对象间的关系。协作图清楚地表示了对象间的关系(强调空间),但时间顺序必须从顺序图获得。状态图(StateChartDiagram)状态图是一个类对象所可能经历的所有状态的模型图。状态图的主角是对象的状态,以及使状态发生变化的条件,通过状态图来验证对象是否存在设计缺陷。活动图(ActivityDiagram)类似于传统意义上的流程图,描述一个功能的逻辑流程,擅长于描述没有外部事件参与情况下的程序运行流程构件图(ComponentDiagram)构件图用于静态建模,将系统划分为单个可实施的子系统(构件,模块)。并通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。部署图(DeploymentDiagram)部署图用于静态建模,是表示运行时子系统的分布及相互依赖关系。如果含有依赖关系的子系统放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。UML参考书籍UML参考书籍1.《用例驱动UML对象建模应用——范例分析》DougRosenberg、KendallScott著,人民邮电出版社,2005。2.《UML精粹——标准对象建模语言简明指南》(第3版)MartinFowler著,徐家福译,清华大学出版社,2005。3.《UML对象、组件和框架——Catalysis方法》DesmondFrancisD’Souza、AlanCameronWills著,清华大学出版社,2004。4.《UML和模式应用》(第2版)CraigLarman著,机械工业出版社,2004。5.《有效用例模式》SteveAdolph,PaulBramble著,车立红译,清华大学出版社,2003。6.《用例建模》,KurtBittner著,姜昊译,清华大学出版社,20037.《UML和统一过程实用面向对象的分析和设计》JimArlow,IlaNeustadt,机械工业出版社,2003。8.《UML风格》ScottW.Ambler著,王少峰译,清华大学出版社,2004。9.《UML用户指南》GradyBooch,IvarJacobson著,邵维忠等译,机械工业出版社,2001年6月。10.《UML参考手册》IvarJacobson,JamesRumbaugh。姚淑兰,唐发根译。机械工业出版社,2001附录UML建模工具1.2.3.4.2.3建模活动中的概念系统由一组可以进行通信的构件(子系统)组成的有组织集合模型使用不同视角对系统进行的抽象描述(各种UML图)数据类型某类型数据的抽象表示(整形,浮点)类对结构与行为的一种封装(子类,继承,对象)事件系统中相关的事件(鼠标点击,按钮按下)消息一种实现对象间异步通信的机制应用域从用户的角度理解系统解答域从开发者的角度理解系统面向对象分析关心的是应用域建模面向对象设计关心的是解答域建模2.4UML的深入透视用例图用例是从参与者看到的系统行为,描述了某事件发生时系统提供的功能包含参与者,系统边界,用例参与者是与用例交互的外部实体,如人员用户、管理员等,或其他系统,如数据库,客户端等用例可以由参与者启动,也可由其他用例启动用例与参与者交换信息用例图用例的文字描述用例名称用户登陆QQ(一般需要有动词描述)参与者QQ用户,QQ验证服务器,QQ应用服务器事件流(用例的交互序列,应该被编号)用户填写用户名及密码QQ客户端通过加密将用户名及密码传输到验证服务器验证服务器验证成功并通知QQ客户端QQ客户端向QQ应用服务器发起请求QQ应用服务器返回用户信息(包括好友,群等信息)。QQ客户端显示主界面入口条件用户打开QQ客户端出口条件QQ客户端显示主界面其他需求(非功能性需求的体现)登陆过程同步,可随时取消,登陆超时设置为一分钟。用例的通信关系参与者和用例存在数据交换时,他们进行通信,他们之间用线段连接用例的包含关系包含关系是从基本用例到包含用例的关系A用例包含B用例说明A用例可以启动B用例,使用“use”,或者“include”表示如果A用例使用了其他用例,在其他需求中描述用例名称与好友聊天参与者QQ用户,QQ应用服务器事件流………入口条件用户已登录QQ客户端出口条件退出聊天界面其他需求在与好友聊天的过程中,启动用例传输聊天信息用例的扩展关系扩展关系是从扩展用例到基本用例的关系A用例扩展B用例说明A用例在B用例的基础上扩展了功能。用例的继承关系对某个用例增加更多的细节,就可以被说明成为新的用例,并且与原用例呈继承关系包含是说明该用例包含其他用例,作为其他用例的启动前提扩展对基本用例的功能进行扩展继承是对原用例细节的扩展用例关系建模正确与否影响到后期对象模型与系统模型问题查找好友用例和添加好友用例是什么关系?扩展播放歌曲用例与将歌曲推荐给好友是什么关系?扩展登陆用例和隐身登陆用例是什么关系继承播放歌曲与启动系统自带播放器用例是什么关系?包含如何验证用例场景-用例的实例,场景注重可理解性,用例注重完整性。一个用例可能有多个场景场景名称查找好友参与者张三:QQ用户,QQ应用服务器事件流张三通过PC端QQ客户端程序在聊天,忽然想起需要查找一个朋友

张三打开QQ查找界面,发现里面有按昵称查找和按号码查找张三找到了上次聚会朋友所给的QQ号码并输入QQ客户端显示查找到的对方信息。问题请描述一下解锁你的手机的场景?类图类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象类图中的事物及解释从上到下分为三部分,分别是类名、属性和操作。类名是必须有的类如果有属性,则每一个属性都必须有一个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等类如果有操作,则每一个操作也都有一个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等可见性-代表private+代表public#代表protected也可以使用图形表示返回值类型操作名称斜体为抽象操作缺省值类名斜体为抽象类属性名称参数列表(标准图形)(变体图形)接口抽象类模版参数模版类类图中的事物及解释接口:一组操作的集合,只有操作的声明而没有实现抽象类:不能被实例化的类,一般至少包含一个抽象操作模版类:一种参数化的类,在编译时把模版参数绑定到不同的数据类型,从而产生不同的类UML表示法类图中的关系及解释关联关系关联关系是一种最简单、最抽象的对象间关系描述。它只是描述了对象A于对象B之间存在一种业务上、概念上的逻辑关系,但是关联关系的双方不包含对方的属性。例如(学生-成绩)

一般的关联关系语义较弱。也有两种语义较强,分别是聚合与组合UML表示法UML表示法聚合关系特殊关联关系,指明一个聚集(整体)和组成部分之间的关系(例如汽车和车队)组合关系语义更强的聚合,部分和整体具有相同的生命周期(例如人和大脑)UML表示法UML表示法类Circle、Rectangle实现了接口Shape的操作泛化关系在面向对象中一般称为继承关系,存在于父类与子类、父接口与子接口之间实现关系对应于类和接口之间的关系UML表示法模板类Stack<T>定义了栈相关的操作;IntStack将参数T与实际类型int绑定,使得所有操作都针对int类型的数据类Memento和类Originator建立了友元依赖关系,以便Originator使用Memento的私有变量state依赖关系描述了一个类的变化对依赖于它的类产生影响的情况。有多种表现形式,例如绑定(bind)、友元(friend)等C++代码classVehicle{public:

virtualintStart()=0;

virtualintStop()=0;

virtualintRun(floatfSpeed)=0;private:

floatfMaxSpeed;};Java代码publicabstractclassVehicle{

publicabstractintStart();

public

abstractintStop();

public

abstractintRun(floatfSpeed);

privatefloatfMaxSpeed;}类图与代码的映射C++代码classDialog{private:ButtonbtnOK;ButtonbtnCancel;TextBoxtxtInfo;};classButton{};classTextBox{};组合关系,代码表现为Dialog的属性有Button和TextBox的对象如果Dialog销毁,Button和TextBox对象也需要销毁关联关系的映射-组合关系

聚合关系,代码表现为B类含有A对象的引用,如classB{A*a;};classA{inti;};B类对象销毁,A类对象不一定销毁关联关系的映射-聚合关系Java代码publicclassSavingsAccountextendsAccount{………}C++代码classSavingsAccount:publicAccount{……};泛化(继承)关系的映射C++代码classShape{public:virtualvoid

Draw()=0;};classCircle:publicShape{public:void

Draw();private;

PointptCenter;

intnRadius;};Java代码publicinterfaceShape{publicabstract

voidDraw();}publicclassCircleimplementsShape{publicvoid

Draw();privatePointptCenter;privateintnRadius;}在C++语言里面,使用抽象类代替接口,使用泛化关系代替实现关系在Java语言里面,有相应的关键字interface、implements实现关系的映射绑定依赖C++代码template<typenameT>classStack{private:intsize;public:intPush(Telem);intPop();constT&GetTop();};typedefStack<float>FloatStack;C++代码(编译器生成)classFloatStack{private:intsize;public:intPush(floatelem);intPop();constfloat&GetTop

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论