面向对象分析和设计

上传人:y****n 文档编号:246943687 上传时间:2024-10-16 格式:PPT 页数:260 大小:1.65MB
返回 下载 相关 举报
面向对象分析和设计_第1页
第1页 / 共260页
面向对象分析和设计_第2页
第2页 / 共260页
面向对象分析和设计_第3页
第3页 / 共260页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,下页,末页,上页,首页,目录,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,面向对象的分析和设计,面向对象的分析和设计,1,面向对象的基本概念,2,面向对象的分析和设计过程,3 UML,概述,4,用例建模,5,静态建模,6,动态建模,7,物理体系结构建模,教学目的与要求,掌握面向对象的基本概念,;,掌握面向对象分析和设计的过程,;,掌握,UML,的基本概念和组成;,会应用,UML,建立用况模型,并给出用况的描述;,会应用,UML,建立静态模型和动态模型;,会应用,UML,建立物理体系结构模型。,教学重点,掌握面向对象的基本概念,;,;面向对象分析和设计的过程,; UML,的基本概念和组成,;,应用,UML,建立系统的用况模型、静态模型、动态模型和物理体系结构模型。,教学难点,面向对象分析和设计的过程;应用,UML,建立系统的用况模型、静态模型、动态模型和物理体系结构模型。,教学方法,采用多媒体课件,+,讲授法,+,启发式相结合教学,教学参考文献,软件工程导论,(,第五版,),张海藩,清华大学出版社,软件工程,(,第二版,),齐治昌,高等教育出版社,UML,用户指南,(,第二版,) , (,美,),布奇,,(,美,),兰宝,,(,美,),雅各布 著,邵维忠,麻志毅 译 ,人民邮电出版社,UML,系统建模与分析设计,刁成嘉,机械工业出版社,面向对象技术,UML,教程,,王少锋,清华大学出版社,面向对象,=,对象,(,object,),+,类,(,classification,),+,继承,(,inheritance,),+,通信,(,communication with messages,),可以说,采用这四个概念开发的软件系统是面向对象的。,1,面向对象的基本概念,面向对象的方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。,面向对象方法成为主流开发方法。可以从下列几个方面来分析其原因:,从认知学的角度来看,面向对象方法符合人们对客观世界的认识规律。,面向对象方法开发的软件系统易于维护,其体系结构易于理解、扩充和修改。,面向对象方法中的继承机制有力支持软件的复用。,面向对象的基本概念,1.,对象,(,object,),对象是指一组属性以及这组属性上的专用操作的封装体。,属性,(,attribute,)通常是一些数据,有时它也可以是另一个对象。每个对象都有它自己的属性值,表示该对象的状态。对象中的属性只能通过该对象所提供的操作来存取或修改。,操作,(,operation,)(也称方法或服务)规定了对象的行为,表示对象所能提供的服务。,封装,(,encapsulation,)是一种信息隐蔽技术,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。,封装的目的是使对象的使用者和生产者分离,使对象的定义和实现分开。,一个对象通常可由对象名、属性和操作三部分组成。,2.,类,(,class,),类是一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(,instance,)。,类是创建对象的模板,从同一个类实例化的每个对象都具有相同的结构和行为。,几何对象,颜色,位置,移动(,delta,:矢量),选择(,P:,指针型),:,布尔型,旋转,(,角度,),图 对象类的描述,人,姓 名,:,字符串,年 龄,:,整 型,改换工作,改换地址,文件,文件名,文件大小,最近更新日期,打印,张红兵,张红兵,28,绘图员,人民路,8,号,李军,:,人,李军,24,程序员,无,图 对象的描述,对象和类的描述,对象和类一般采用,“,对象图,”,和,“,类图,”,来描述。,类名,属性,运算,对象图,类图,轿 车,型号:字符串,颜色:字符串,牌照号:字符串,张经理的轿车,型号,=,桑塔纳,颜色,=,红色,牌照号,=,沪,AN2037,类,实例对象,3.,继承,(,inheritance,),继承是类间的基本关系,它是基于层次关系的不同类共享数据和操作的一种机制。父类中定义了其所有子类的公共属性和操作,在子类中除了定义自己特有的属性和操作外,可以继承其父类(或祖先类)的属性和操作,还可以对父类(或祖先类)中的操作重新定义其实现方法。,意义:实现代码的重用。,矩形,长,宽,对角线,计算面积,计算对角线,多边形,顶点数,顶点坐标,计算面积,旋转,抽象类,(abstract class),:没有实例的类,它把一些类组织起来,提供一些公共的行为,但并不需要使用这个类的实例,而仅使用其子类的实例。,在抽象类中可以定义,抽象操作,,抽象操作指:只定义这个类的操作接口,不定义它的实现,其实现部分由其子类定义。抽象操作操作名用斜体字表示,也可以在操作特征(,signature,)后面加上特征字符串,abstract,。,Abstract class,Abstract operation,Shape,abstract ,draw ( ) abstract ,Circle,draw ( ),Rectangle,draw ( ),抽象类与子类示例,交通工具,飞行器,汽 车,船,轿 车,货 车,一般,-,特殊关系,如果一个子类只有唯一一个父类,这个继承称为,单一继承,。如果一个子类有一个以上的父类,这种继承称为,多重继承,。,水上交通工具,陆上交通工具,水陆两栖交通工具,多重继承,4.,消息,(,message,),消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如果有必要的话)。,消息只告诉接收对象需要完成什么操作,但并不指示接收者怎样完成操作。消息完全由接收者解释执行。,5.,多态性,与,动态绑定,多态性(,polymorphism,)是指同一个操作作用于不同的对象上可以有不同的解释,并产生不同的执行结果。,例如“画”操作,作用在“矩形”对象上,则在屏幕上画一个矩形,作用在“圆”对象上,则在屏幕上画一个圆。,动态绑定,(dynamic binding),是在运行时根据对象接收的消息动态地确定要连接的服务代码。,在一般与特殊关系中,子类是父类的一个特例,所以父类对象可以出现的地方,也允许其子类对象出现。因此在运行过程中,当一个对象发送消息请求服务时,要根据接收对象的具体情况将请求的操作与实现的方法进行连接,即动态绑定。,if,条件,then p := t ;,else p := r ;,area := p.getarea ;,getArea abstract,polygon,area,hexagon,getArea,rectangle,getArea,length,width,triangle,getArea,Var p : polygon ;,Var t : triangle :=,triangle.new ;,Var r : rectangle :=,rectangle.new ;,6,、,永久对象,(Persistent object),所谓,永久对象,是指生存期可以超越程序的执行时间而长期存在的对象。,目前,大多数,OOPL,不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。,面向对象分析(,Object-Oriented Analysis,),2,面向对象的分析和设计过程,获取用户基本需求,标识类和对象,定义类的结构和层次,表示类,(,对象,),间的关系,为对象行为建模,OOA,分析的一般过程,1.,获取客户对系统的需求,需求获取必须让客户与开发者充分地交流。,采用用例来收集客户需求的技术:,分析员先标识使用该系统的不同的执行者,(actor),,代表使用该系统的不同的角色。每个执行者可以叙述他如何使用系统,或者说他需要系统提供什么功能。执行者提出的每一个使用场景(或功能)都是系统的一个用例的实例,一个用例描述了系统的一种用法(或一个功能),所有执行者提出的所有用例构成系统的完整的需求。,OOA,过程,注意,执行者与用户是不同的两个概念,一个用户可以扮演几个角色(执行者),一个执行者可以是用户,也可以是其他系统(应用程序或设备)。得到的用例必须进行复审,以使需求完整。,2.,标识类和对象,类和对象来自问题领域。,可以先标识候选类,然后进行筛选。,3.,定义类的结构和层次,类的结构主要有两种:,一般,特殊结构,整体,部分结构,构成类图的元素所表达的模型信息,,分为,三个层次:,对象层,给出系统中所有反映问题域和,系统责任的对象。,特征层,给出类(对象)的内部特征,即类的属性和操作。,关系层,给出各类(对象)之间的关系,包括继承、,组装、一般,特殊 、整体,部分、属性的静态依赖关系,操作的动态依赖关系。,对象层,特征层,关系层,图,OOA,基本模型,有的面向对象方法中,把互相协作以完成一组紧密结合在一起的责任的类的集合定义为,主题,(subject),或,子系统,(,subsystem,)。主题和子系统都是一种抽象,从外界观察系统时,主题或子系统可看作黑盒,它有自己的一组责任和协作者,观察者不必关心其细节。观察一个主题或子系统的内部时,观察者可以把注意力集中在系统的某一个方面。因此,主题或子系统实际上是系统更高抽象层次上的一种描述。,4.,建造对象,关系模型,对象,关系模型描述了系统的静态结构,它指出了类间的关系。,类之间的关系有关联、依赖、泛化、实现等。,5.,建立对象,行为模型,对象,行为模型描述了系统的动态行为,它们指明系统如何响应外部的事件或激励。,建模的步骤如下:,评估所有的用例,完全理解系统中交互的序列。,标识驱动交互序列的事件,理解这些事件如何和特定的对象相关联。,为每个用例创建事件轨迹,(,event trace,),。,为系统建造状态机图。,复审对象,行为模型,以验证准确性和一致性。,OOA,模型及详细说明,完整的,OOA,模型分为基本模型和补充模型以及详细说明。,一、基本模型,基本模型是一个类图,(,class diagram),,是以直观的方式表达系统最重要的信息。,OOA,基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。,二、补充模型,补充模型有主题图和交互图,。,1.,主题,(subject,),又称为子系统,(subsystem),是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。,主题图,画出了系统的主题。,三、详细说明,按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。,对象层,特征层,关系层,交,互,图,主,题,图,详 细 说 明,基本模型 (类图),图,OOA,模型与详细说明,2,、,交互图,(interaction diagram),是,Use case,与系统成分之间的对照图。,面向对象设计,(,Object_Oriented Design,),面向对象设计的一般步骤如下:,系统设计,将分析模型划分成子系统,在,OO,系统设计中,把分析模型中紧密相关的类、关系等设计元素包装成子系统。,通常,子系统的所有元素共享某些公共的性质,可能都涉及完成相同的功能;也可能驻留在相同的产品硬件中;也可能管理相同的类和资源。,子系统可通过它提供的服务来标识。在,OOD,中,这种服务是完成特定功能的一组操作。,子系统的设计准则是:,子系统应具有定义良好的接口,通过接口和系统的其它部分通信;,除了少数的,“,通信类,”,外,子系统中的类应只和该子系统中的其它类协作;,子系统的数量不宜太多;,可以在子系统内部再次划分,以降低复杂性。,标识问题本身的并发性,并为子系统分配处理器,任务管理设计,数据管理设计,数据管理的设计包括设计系统中各种数据对象的存储方式(如内部数据结构、文件、数据库),以及设计相应的服务,即为要储存的对象增加所需的属性和操作。,资源管理设计,OO,系统可利用一系列不同的资源,很多情况下,子系统同时竞争这些资源,因此要设计一套控制机制和安全机制,以控制对资源的访问,避免对资源使用的冲突。,人机界面设计,子系统间的通信,子系统之间可以通过建立客户,/,服务器连接进行通信,也可以通过端对端连接进行通信。必须确定子系统间通信的合约(,contract,),合约提供了一个子系统和另一个子系统交互的方式。,2.,对象设计,对象设计是为每个类的属性和操作作出详细的设计,并设计连接类与它的协作者之间的消息规约。,对象描述的方式,协议描述:描述对象的接口,即定义对象可以接收的消息以及接收到消息后完成的相关操作;,实现描述:描述传送给对象的消息所蕴含的每个操作的实现细节,实现细节就是关于描述对象属性的数据结构的内部细节和描述操作的过程细节。,为对象中的属性和操作设计数据结构和算法。,消息设计,使用对象间的协作和对象,关系模型,设计消息模型,复审,复审设计模型并在需要时迭代。,设计模式(,design patterns,),:,在许多面向对象系统中,存在一些类和通信对象的重复出现的模式。这些模式求解特定的设计问题,使面向对象设计更灵活,并最终可复用。这些模式帮助设计者复用以前成功的设计,设计者可把这些模式应用到新的设计中。,统一建模语言,UML,Unified Modeling Language,3 UML,概述,UML,是一种基于面向对象的可视化的通用,(General),建模语言,该方法结合了,Booch, OMT,和,OOSE,方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。,UML,概述,为何研究,UML,结束方法大战,发展历史,1994,年,Booch,和,Rumbaugh,在,Rational Software Corporation,开始了,UML,的工作,其目标是创建一个,“,统一的方法,”,。,1995,年,OOSE,的创始人,Jacobson,加盟到这项工作中,工作重点转移到创建一种统一的建模语言,UML,。,1997,年,11,月,,OMG(Object Management Group),批准把,UML1.1,作为基于面向对象技术的标准建模语言。,2004,年推出了,UML2.0,。,UML,概述,UML,只是一种建模语言,不是一种建模方法。,建模方法应包括建模语言和建模过程两部分,:,建模语言:提供这种方法用于表示建模结果的符号。(图形符号:可视化),建模过程:描述建模时需要遵循的步骤。,为什么称之为,UML,?,U,:对多种经典的,OO,建模方法进行了统一,形成了规范。,M,:用于建立软件开发过程中的各种工程模型。,L,:是一种可视化的(图式)语言。,具有指定的建模元素(图式符号),具有严格的语法(构图规则),具有明确的语义(逻辑含义),3.1 UML,的主要构成,UML,是一种标准化的图形建模语言,它是面向对象分析与设计的一种标准表示。由以下几个部分构成:,视图,(views),图,(Diagrams),模型元素,(Model elements),通用机制,(general mechanism),UML,视图,一个系统应从不同的角度进行描述,从一个角度观察到的系统称为一个视图(,view,)。,视图由多个图,(Diagrams),构成,它不是一个图表,而是在某一个抽象层上,对系统的抽象表示。,如果要为系统建立一个完整的模型图,需定义一定数量的视图,每个视图表示系统的一个特殊的方面。另外,视图还把建模语言和系统开发时选择的方法或过程连接起来。,Logical View,Implementation View,Process View,Deployment View,Use Case View,用例视图描述系统的外部特性、系统功能等。,设计视图描述系统设计特征,包括结构模型视图和行为模型视图,前者描述系统的静态结构,后者描述系统的动态行为。,实现视图表示系统的实现特征,常用构件图表示。,进程视图表示系统内部的控制机制。常用类图描述过程结构,用交互图描述过程行为。,配置视图描述系统的物理配置特征。用配置图表示,。,分析人员和测试人员关心的是系统的行为,因此会侧重于用例视图;,最终用户关心的是系统的功能,因此会侧重于逻辑视图;,程序员关心的是系统的配置、装配等问题,因此会侧重于实现视图;,系统集成人员关心的是系统的性能、可伸缩性、吞吐率等问题,因此会侧重于进程视图;,系统工程师关心的是系统的发布、安装、拓扑结构等问题,因此会侧重于部署视图。,说明:对于同一个系统,不同人员所关心的内容并不一样:,用例视图,作用:,描述系统的功能需求,找出用例和执行者;,适用对象:,客户、分析者、设计者、开发者和测试者;,描述使用的图:,用例图和活动图;,重要性:,系统的中心,它决定了其他视图的开发,用于确认和最终验证系统。,逻辑视图,作用:,描述如何实现系统内部的功能,;,适用对象:,分析者、设计者、开发者,;,描述使用的图:,类图和对象图、状态图、顺序图、合作图和活动图,;,重要性:,描述了系统的静态结构和因发送消息而出现的动态协作关系。,构件视图,作用:,描述系统代码构件组织和实现模块,及它们之间的依赖关系,;,适用对象:,设计者、开发者和测试者;,描述使用的图:,构件图,;,重要性:,描述系统如何划分软件构件,如何进行编程。,进程视图,作用:,描述系统的并发性,并处理这些线程间的通信和同步;,适用对象:,开发者和系统集成者;,描述使用的图:,状态图、顺序图、合作图、活动图、构件图和配置图;,重要性:,将系统分割成并发执行的控制线程及处理这些线程的通信和同步。,配置视图,作用:,描述系统的物理设备配置,如计算机、硬件设备以及它们相互间的连接,;,适用对象:,开发者、系统集成者和测试者,;,描述使用的图:,配置图,;,重要性:,描述硬件设备的连接和哪个程序或对象驻留在哪台计算机上执行。,类图,类图展示了系统中类的静态结构,即类与类之间的相互联系。可以把若干个相关的类包装在一起作为一个单元,(,包,),相当于一个子系统。一个系统可以有多张类图,一个类也可以出现在几张类图中。,UML,中的图,对象图,对象图是类图的实例,它展示了系统执行在某一时间点上的一个可能的快照。对象图使用与类图相同的符号,只是在对象名下面加上下划线,同时它还显示了对象间的所有实例链接(,link,)关系。,用例图,用例图展示各类外部执行者与系统所提供的用例之间的连接。一个用例是系统所提供的一个功能的描述,执行者是指使用这些用例的人或外部系统,执行者与用例的连接表示该执行者使用了此用例。,贸易经理,风险分析,设置边界,进行交易,交易估价,更新帐目,使用,使用,扩展,营销人员,超越边界,评价,记帐系统,销售人员,构件图,构件图展示系统中的构件,(,即来自应用的软件单元,),,构件间通过接口的连接,以及构件之间的依赖关系。,构件是一种结构化类元,可以用内部结构图来定义它的内部结构。,状态图,状态图通常是对类描述的补充,它说明该类的对象所有可能的状态以及哪些事件将导致状态的改变。,活动图,活动图展示了连续的活动流。活动图通常用来描述完成一个操作所需要的活动。当然它还能用于描述其它活动流,如描述用例。活动图由动作状态组成,它包含完成一个动作的活动的规约,(,即规格说明,),。当一个动作完成时,将离开该动作状态。活动图中的动作部分还可包括消息发送和接收的规约。,顺序图,顺序图展示了几个对象之间的动态交互关系。主要是用来显示对象之间发送消息的顺序,还显示了对象之间的交互,即系统执行的某一特定点所发生的事。,协作图,协作图用几何排列来表示交互作用中的角色,它显示了有协作关系的复合结构组成部分或角色范围内的交互。它明确地显示元素之间的协作关系,而不显示作为独立维的时间,消息的顺序和并发线程必须由顺序号确定。,部署图,部署图展示了运行时处理结点和在结点上生存的制品的配置。结点是运行时的计算资源,制品是物理实体,如构件、文件。,部署图中显示部署在结点上的制品和它们之间的关系,以及结点之间的连接和通信方式。,包图,包图是由包和它们间的关系组成的结构图。,模型是在某一视点给定的精度上对系统的完整描述,一个系统可以从不同的视点(如分析模型、设计模型)存在多个模型。一个模型可看作一个特定类型的包,通常仅显示包就足够了(不必显示包内部的细节)。,下图给出了剧院系统所细分成的包以及它们之间的依赖关系。,售票处,计划,广告,时间表,客户记录,票记录,运作,售票,工资单,计算,购买,包图,模型元素,代表面向对象中的类,对象,关系和消息等概念,是构成图的最基本的常用的元素。一个模型元素可以用在多个不同的图中,无论怎样使用,它总是具有相同的含义和相同的符号表示。,模型元素之间的连接关系也是模型元素,常见的关系有关联,(,association,),、泛化,(generalization),、依赖,(,dependency),和聚合,(aggregation),,其中聚合是关联的一种特殊形式。这些关系的图示符号如图,5.3,所示。,模型元素,注解,类,属性,操作,对象:类,属性,操作,状态,用例,结点,供应接口,包,依赖,关联,泛化,主动类,属性,操作,请求接口,构件,实现,关联(,association,)是两个或多个类之间的一个关系。链(,link),是关联的具体体现。,关联和链,关联的表示,如图,(a)(b),所示,关联有二元关联,(,binary,),、三元关联,(,ternary,),、多元关联,(,higher order,),。,(,a,) 二元关联,人员,公司,雇用,二元关联的例,(人员),张涛,(公司),通大,雇用,链的例子,(,b,)三元关联,项目,语言,人,三元关联的例,(,项目,),CAD,系统,(,语言,),C +,(,人,),李波,链的例子,关联的重数,重数表示多少个对象与对方对象相连接,常用的重数符号有:,“,0.1,”,表示零或,1,“,0.*,”,或,“,*,”,表示零或多个,“,1.*,”,表示,1,或多个,“,1,3,7,”,表示,1,或,3,或,7,(枚举型),重数的默认值为,1,。,Person,Hobby,1,*,Committee,Person,Year,0.2,1.4,3.5,Post,图,6.5,带有多重性关联,有序关联与导航(导引),在关联的多端标注,ordered,指明这些对象是有序的,(,图,6.6,)。,关联可以用箭头,表示该关联使用的方向,(,单向或双向,),,称为导引或导航,(navigation),。,(a),指定链接之间,有明确的顺序,0.*,1.*,ordered,保险合同,个人,Polygon,Point,1,4.*,ordered,图,6.6,(b),单向关联,通用机制,(general mechanism),用于表示其他信息,比如注释,模型元素的语义等。另外,为了适应用户的需求,通用,机制允许在不修改基础元模型的前提下对,UML,作有限的变化。,如提供了扩展机制,(Extensibility mechanisms),,包括构造型,(Stereotype),、标记值,(Tagged value),和约束,(Constraint).,使用,UML,语言能够适应一个特殊的方法(或过程),或扩充至一个组织或用户。,约束是以自然语言或特定形式语言的正文表示的语义条件或限制,约束写在花括号中(),如,value0,,,or,。,版型和标签值,authorship,Scheduling,tagged values,authorship,author=“Frank Martin”,due=Dec.31,2009,版型是在基于现有各类模型元素的外形中定义模型元素的新类型,它本质上是一种新元类(,metaclass,)。版型可以扩展语义,但不能扩展原元模型类的结构。用, ,标记版型,如,signal,。,标签值是贴在任何模型元素上的被命名的信息片。下图给出了版型和标签值的应用实例。,约 束,UML,中提供了一种简便、统一和一致的约束,(,constraint,),,是各种模型元素的一种语义条件或限制。一条约束只能应用于同一类的元素。,约束的表示,如果约束应用于一种具有相应视图元素的模型元素,它可以出现在它所约束元素视图元素的旁边。,通常一个约束由一对花括号括起来(,constraint,),花括号中为约束内容。,如果一条约束涉及同一种类的多个元素,则要用虚线把所有受约束的元素框起来,并把该约束显示在旁边(如或约束)。,Polygon,Point,1,4.*,ordered,0.*,1.*,ordered,保险合同,个人,约束,图 对泛化的约束的两种表示方法,约束可分为:对泛化的约束、关联的约束,对泛化的约束,应用于泛化的约束,显示在大括号里,若有多个约束,用逗号隔开。如果没有共享,则用一条虚线通过所有继承线,并在虚线的旁边显示约束,如图所示:,constraint 1,constraint 2,Class A,Class B,Class C,Class D,constraint 1,constraint 2,Class A,Class C,Class B,Class D,对泛化有以下常用的约束:,1,、,complete:,说明泛化中所有子元素都已在模型中说明,不允许再增加其它子元素。,2,、,disjoint:,父类对象不能有多于一个型的子对象。,3,、,incomplete:,说明不是泛化中所有子元素都已说明,允许再增加其它子元素。,4,、,overlapping:,给定父类对象可有多于一个型的子对象,表示重载。,对消息,链接角色和对象的约束,自定义约束,帐号,人,单位,xor,关联的约束,对关联有以下常用的约束:,1,、,implicit:,该关联是概念性的,在对模型进行精化时不再用。,2,、,ordered,:,具有多重性的关联一端的对象是有序的。,3,、,changeable,:,关联对象之间的链,(Link),是可变的(添加、修改、删除)。,4,、,addonly,:,可在任意时刻增加新的链接。,5,、,frozen:,冻结已创建的对象,不能再添加、删除和修改它的链接。,6,、,xor:,“,或约束,”,,某时刻只有一个当前的关联实例。,依赖关系描述的是两个模型元素(类,组合,用例等)之间的语义上的连接关系,其中一个模型元素是独立的,另一个模型元素是非独立的(或依赖的)。下图表示类,A,依赖于类,B,的一个友元依赖关系。,类,A,类,B,友元,依赖,依赖的形式可能是多样的,针对不同的依赖的形式,依赖关系有不同的变体,(varieties),。,抽象,(abstraction),:,从一个对象中提取一些特性,并用类方法表示。,绑定,(binding),:,为模板参数指定值,以定义一个新的模板元素。,组合,(combination),:,对不同类或包进行性质相似融合。,许可,(permission),:,允许另一个对象对本对象的访问。,使用,(usage),:,声明使用一个模型元素需要用到已存在的另一个模型元素,这样才能正确实现使用者的功能,(,包括调用、实例化、参数、发送,),。,跟踪,(trace),:,声明不同模型中元素间的存在一些连接。,访问或连接,(access),:,允许一个包访问另一个包的内容。,调用,(call),:,声明一个类调用其他类的操作的方法。,导出,(derive),:,声明一个实例可从另一个实例导出。,友元,(friend),:,允许一个元素访问另一个元素,不管被访问的元素是否具有可见性。,引入,(import),:,允许一个包访问另一个包的内容,并为被访问组成部分增加别名。,实例,(instantiation),:,关于一个类的方法创建了另一个类的实例声明。,参数,(parameter),:,一个操作和它参数之间的关系。,实现,(realize),:,说明和其实之间的关系。,精化,(refine),:,声明具有两个不同语义层次上的元素之间的映射。,发送,(send),:,信号发送者和信号接收者之间的关系。,有两个元素,A,和,B,,若,B,元素是,A,元素的详细描述,则称,B,A,元素之间的关系为,B,元素细化,A,元素。,细化与类的抽象层次有密切的关系,在构造模型时要经过逐步细化,逐步求精的过程。,如图,6.12,所示,类,B,是类,A,细化的结果。,细化,A,B,图,6.12,注释,注释用于对,UML,语言的元素或实体进行说明,解释和描述。通常用自然语言进行注释。,这是一个类,人员,图,6.13,6.4,用例建模,用例建模是用于描述一个系统应该做什么的建模技术,被广泛应用到了面向对象的系统分析中。用例模型用用例图来描述。,用例图展示了各类外部执行者与系统所提供的用例之间的连接。一个用例是系统所提供的一个功能的描述,执行者是指那些可能使用这些用例的人或外部系统,执行者与用例的连接表示该执行者使用了那个用例。用例图给出了用户所感受到的系统行为,但不描述系统如何实现该功能。,用例驱动的系统分析与设计方法已成为面向对象的系统分析与设计方法的主流。,图书馆业务用例图,任何一个涉及到系统功能活动的人都会用到用例模型。,客户:用例模型指明了系统的功能,描述了系统能如何使用。用例建模时客户的积极参与是十分重要的。,开发者:用例模型帮助他们理解系统要做什么,同时为以后的其它模型建模、结构设计、实现等提供依据。,集成测试和系统测试人员:根据用例来测试系统,以验证系统是否完成了用例指定的功能。,用例模型描述的是外部执行者,(Actor),所理解的系统功能。它描述了待开发系统的功能需求。,用,例,模型由用,例,图组成,用,例,图展示了执行者、用例以及它们之间的关系。,用例通常用普通正文描述,也可用活动图来描述。,一个用,例,模型可由若干幅用例图组成。一幅用,例,图包含的模型元素有系统、执行者、用例,以及表示它们间的不同关系,如关联、扩展、包含、泛化等。,用例建模步骤,创建用例模型的步骤包括:,1,定义系统,2,确定执行者,3,确定用例,4,描述用例,5,定义用例间的关系,6,确认模型,用例图,电话订购系统用例图,Telephone Catalog,Customer,Salespersonn,Shipping Clerk,supervisor,establish,credit,Fill order,Arrange,Payment,Supply,Customer,Data,order,product,Arrange,Credit,Pay,cash,place,order,Request,Catalog,include,include,include,extend,check,status,一,.,确定执行者,(Actor),执行者是指与系统交互的人或其它系统,执行者代表一种角色,而不是具体的某个人,在图形上,执行者用人形图符表示。,执行者,可以通过回答下列问题来确定执行者:,谁使用系统的主要功能(主执行者)?,谁需要从系统中得到对他们日常工作的支持?,谁需要维护、管理和维持系统的日常运行(副执行者)?,系统需要控制哪些硬件设备?,系统需要与哪些其它系统交互?,哪些人或哪些系统对系统产生的结果(值)感兴趣?,二、确定用例,1.,用例的特征,用例捕获某些用户可见的需求,实现一个具体的用户目标,。,执行者必须直接或间接地指示系统去执行,激活,用例,将结果值反馈给执行者,。,用例必须具有功能上的完整的描述。,用例是一个类,而不是实例,用例的实例称为场景(,scenario,)。,2.,寻找用例,可以通过让每个执行者回答以下问题来寻找用例:,执行者需系统提供哪些功能?执行者需要做什么?,执行者是否需要读、创建、删除、修改或储存系统中的某类信息?,执行者是否要被系统中的事件提醒,或者执行者是否要提醒系统中某些事情?从功能观点看,这些事件表示什么?,执行者的日常工作是否因为系统的新功能而被简化或提高了效率?,另外还有一些不是目前的执行者回答的问题:,系统需要哪些输入,/,输出?谁从系统获取信息?谁为系统提供信息?,与当前系统(可能是人工系统而不是自动化系统)的实现有关的主要问题是什么?,对同一个项目,不同的开发者选取的用例数是不一样的。例如一个,10,个人年规模的项目,有人选取了,20,个用例,而在一类似的项目中,有人选用了,100,个用例。,似乎,20,个太少,而,100,个太多,希望在项目规模和用例数之间保持均衡。,3.,用例的描述,用例通常用正文来描述,也可用活动图来描述 。,用例的正文描述应包括以下内容:,用例的目的:用例的最终目的是什么?它试图达到什么?,用例是如何启动的:哪个执行者在什么情况下启动用例的执行?,执行者和用例之间的消息流:用例与执行者之间交换什么消息或事件来通知对方改变或恢复信息?描述系统与执行者之间的主消息流是什么?以及系统中哪些实体被使用或修改?,用例中可供选择的流:用例中的活动可根据条件或异常(,exception,)有选择地执行。,如何通过给执行者一个值来结束用例:描述何时可认为用例已结束,.,执行者的简要描述,客户,:向公司订购商品的人,客户代表,:公司处理客户请求的雇员,库存系统,:记录公司库存的软件,用例的简要描述,订购货物,:客户创建一个新的请求商品的订单,并为那些商品付费,取消订单,:客户取消一个已经存在的订单,用例的详细描述,前置条件和后置条件,前置条件和后置条件表示用例开始和结束的条件,事件流,(,flow of events,),事件流是一系列陈述句,它是从执行者的角度 看,列出用例的各个步骤,用例描述中可以包含条件、分支和循环。,例如:订购货物用例的描述如下页所示。,用例名称,:订购货物,参与的执行者,:客户、客户代表,前置条件,:一个合法的客户已经登录到这个系统,事件流,:,当客户选择订购货物时,用例开始,客户输入他的姓名和地址,如果客户只输入邮编,系统将给出州和城市名,当客户输入产品代码,a.,系统给出产品描述和价格,b.,系统往客户订单中添加该物品的价格,循环结束,5.,客户输入信用卡支付信息,6.,客户选择提交,7.,系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息。如果客户提交的信息不正确,系统将提示客户修改。,8.,当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单,ID,,用例也就结束了。如果支付没有被确认,系统将提示客户改正支付信息或者取消。如果客户选择修改信息,就回到第,5,步;如果选择取消,用例结束。,后置条件,:如果订单没有被取消,它将保存在系统中,并做上标记,其他需求,在用例中还可描述一些特殊的需求,这些需求常常是非功能性需求,如可用性、安全性、可维护性、负载、性能、自动防故障、数据需求等。,如订购货物用例的其他需求:,前置条件,:,(略),事件流,:,(略),特殊需求,:,系统必须在一秒内响应客户的输入,后置条件,:,(略),事件流可分为两部分:,基本路径,基本路径是运转正常时的路径,是一系列没有分支和选择的简单陈述句,可选路径,可选路径是指不同于基本路径而允许不同的事件序列的路径。,对于明显有可能随时发生的事情来说,可选路径非常有效。,如订购货物用例的基本路径:,事件流,:,基本路径,当客户选择订购货物时,用例开始,客户输入他的姓名和地址,当客户输入产品代码时,a.,系统给出产品描述和价格,b.,系统往客户订单中添加该物品的价格,循环结束,4.,客户输入信用卡支付信息,5.,客户选择提交,6.,系统检验输入的信息,把该订单作为未完成的交易保存,同时向记账系统转发支付信息,7.,当支付确认后,订单就被标记上已经确认,同时返回给客户一个订单,ID,,用例结束,如果在订购货物用例中,客户可以在提交订单前随时取消订单,其可选路径如下:,可选路径,:,在选择提交前的任何时候,客户都可选择,cancel,。这次订购没有被保存,用例结束。,在基本路径第,6,步,如果有任何不正确的信息,系统提示客户去修改这些信息。,在基本路径第,7,步,若支付没有被确认,系统将提示客户改正支付信息或者取消。若客户选择修改信息,就回到基本路径第,4,步;若选择取消,用例结束。,确定用例之间的关系,关系,说明,记号,关联,执行者与他所参与的一个用例之间的通信路径,扩展,扩展的用例到基本用例的一种关系,它指出扩展的用例所定义的行为如何插入到基本用例所定义的行为中。扩展的用例通过模块化方式增量地修改基本用例,extend,关系,说明,记号,包含,从基本用例到另一个用例(称为包含用例)的一种关系,它指出包含用例定义的行为被包含在基本用例所定义的行为中。基本用例能看到包含用例,并依赖于执行包含用例后的结果,但两者相互间不能访问其它属性,用例泛化,一个一般用例与一个更特殊的用例之间的关系,特殊用例可继承一般用例的特征,include,用例之间的关系,泛化:同一业务目的的不同技术实现,包含:提取公共交互,提高复用,扩展:,“,冻结,”,基用例以保持稳定,*通过关系提高用例复用,用例之间的关系,泛化,:同一业务目的的不同技术实现。,当多个用例,共同拥有一种类似的结构和行为,的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。,包含,是指基本用例会用到包含用例,(inclusion),,具体地讲,就是将包含用例的事件流插入到基础用例的事件流中。,包含用例是可重用的用例多个用例的公共用例。,包含举例:,扩展,(extend),基础用例不必知道扩展用例的任何细节,它仅为其提供扩展点。,扩展用例的行为是否被执行要取决于主事件流中的判定点。,将扩展用例的事件流在一定的条件下按照相应的扩展点插入到基础用例中。,扩展举例:,用例之间的关系,包含用例与扩展用例的区别,相对于基础用例,扩展用例是可选的,而包含用例则不是。,如果缺少扩展用例,基础用例还是完整的,而缺少包含用例,则基础用例就不完整了。,扩展用例的执行需要满足某种条件,而包含用例不需要。,扩展用例的执行会改变基础用例的行为,而包含用例不会。,案 例,本案例实现一个简化了的银行储蓄账户管理系统,该系统是在银行的柜台上对客户办理活期储蓄业务。系统的需求陈述如下:,一个客户可以在多个银行中开设账户,一个客户也可在同一银行中开设多个不同的账户。客户可以通过银行职员进行开户、存款、取款、转账、注销账户等活动。其中转账指客户将自己的某个账户上的钱款转入同一银行的不同账户(称为银行内转账)或转入不同银行的账户(称为银行间转账)。系统管理员负责系统的账户管理及业务报表的生成。,识别执行者,客户:到银行办理储蓄业务的人,负责输入密码,银行职员(客户代理):银行工作人员,代表客户进行储蓄业务的操作,银行职员(管理人员):银行工作人员,根据客户的储蓄业务更新账户,管理员:银行计算机的管理人员,负责账户的管理和业务报表的生成,识别用例,从系统的需求陈述可知,银行职员,(,客户代理,),需要系统提供开户、存款、取款、转账、注销账户等功能,这些功能都包含了校验密码的功能。系统管理员需要系统提供账户管理和报表生成功能。银行职员,(,管理人员,),则参与了账户管理中的更新账户的功能。此外,转账功能可分为银行内转账和银行间转账,可将它们设计成三个用例,其中银行内转账用例和银行间转账用例都继承了基本转账用例。据此分析,得到该系统的用例图如下图所示。,银行储蓄账户管理系统,包含,包含,包含,银行职员,(用户代理),账户管理,银行间转账,开户,取款,银行内转账,注销,存款,校验密码,转账,报表生成,其它银行,账户管理系统,客户,系统管理员,银行职员,(管理人员),开户用例描述,用例名称:开户,参与的执行者:银行职员(客户代理),客户,前置条件:一合法的银行职员(客户代理)已登录到该系统,事件流:,1.,当选择开户功能时用例开始,2.,输入客户信息(姓名、地址、身份证号等),3.,从账户管理系统获取新的账号,4.,请客户输入密码,5.,请客户再次输入密码,6.,如果两次密码不一致则回到第,4,步,否则继续,7.,在账户库中添加新账户,8.,打印存折,用例结束,后置条件:在账户库中增加了一个新账户,得到一张新存折,取款用例描述,用例名称:取款,参与的执行者:银行职员(客户代理),前置条件:一合法的银行职员,(,客户代理,),已登录到该系统,事件流:,基本路径:,1.,当选择取款功能时用例开始,2.,当输入客户信息(姓名、账号等)后,a,)如果客户信息与账户不一致,显示错误信息,可以重新输入或结束用例,b,)如果该账户被冻结(如因挂失而冻结),显示冻结信息并结束用例,3.,输入并校验密码,4.,输入取款金额,若该账户的余款小于取款金额,显示错误信息,要求重新输入,5.,打印取款单,交客户签字,6.,建立取款事件记录,更新账户信息,7.,打印存折,用例结束,可选路径:,1.,在第,5,步客户签字之前的任何时刻,客户可以取消本次取款,用例结束,2.,第,3,步校验密码时,如发现密码不一致,则重新输入密码,或用例结束,后置条件:如果取款成功,客户账户中的余额被更新(减少),否则余额不变。,描述取款用例的活动图,客户不确认,客户确认,余额取款额,未冻结,不一致,一致,选择重新输入,选择结束,冻结,余额取款额,打印取款单,输入客户信息,显示,错误信息,建立取款记录,更新账户信息,打印存折,显示,错误信息,输入取款金额,输入并校验密码,显示,冻结信息,5,静态建模,类和对象的建模,是,UML,建模的基础。,系统中的类和对象模型描述了系统的静态结构,在,UML,中用类图和对象图来表示。,所谓静态建模是指对象之间通过属性互相联系,而这些关系不随时间而转移。,UML,的静态建模机制包括:用例图,(Use case diagram),、类图,(Class diagram),、对象图,(Object diagram),、包图,(Package diagram),、构件图,(Component diagram),、配置图,(Deployment diagram),。,类图由系统中使用的类以及它们之间的关系组成。类之间的关系有关联、依赖、泛化、实现等。类图是一种静态模型,它是其它图的基础。一个系统可以有多张类图,一个类也可出现在几张类图中。,对象图是类图的一个实例,它描述某一时刻类图中类的特定实例以及这些实例之间的特定链接。对象图使用了与类图相同的符号,只是在对象名下附加下划线,对象名后可接以冒号和类名,即,object-name:class-name,对象名 :类名,属性名,=,值,操作,类名,属性名 :类型,操作,聚集,组合,关联,泛化,依赖,实现,类图和对象图,实例,x,L3,对象图,L4,P2,line,X1:real,Y1:real,X2:real,Y2:real,point,X: real,Y: real,L1: line,X1=10,Y1=10,X2= -10,Y2= -10,L2: line,L3: line,X1=10,Y1= 5,X2= -10,Y2= -5,L4: line,X1=9,Y1=5,X2=9,Y2=3,X1= -10,Y1=10,X2=10,Y2= -10,P1:point,X = 0,Y = 0,P2:point,X=9,Y=4,。,5,P1,L1,y,L2,类图,相交,2.*,0.*,确定类,1.,标识类,类,责任,协作者(,classresponsibility collaborator,,简称,CRC,)技术来完成类的定义。,CRC,是一组表示类的索引卡片,每张卡片分成三部分,它们分别描述类名、类的责任和类的协作者。责任是用来描述类的属性和操作,协作者描述为完成该责任而提供信息的其他相关的类。,类名:,协作者:,责任:,确定和标识类包括发现潜在对象、筛选对象、为对象分类,最后将同类型的对象抽象为类。,(1),标识潜在的对象类,通常陈述中的名词或名词短语是可能的潜在对象,它们以不同的形式展示出来,如:,与系统交互的角色:与管理者、工程师、销售;,系统的工作环境场所:车间、办公室;,概念实体、发生的事情或事件:报告、信息显示、信函、信号;,部门、设备:班组、学校、汽车、计算机。,与系统有关的外部实体:其他系统、设备、人员等生产或消费计算机系统所使用的信息。,(2),筛选对象类,确定最终对象类,可以用以下选择特征来确定最终的对象:,关键性:缺少这个对象信息,系统就不能;,可操作性:潜在对象必须拥有一组可标识的操作,它们可以按某种方式修改对象属性的值;,信息含量:选择信息量较大的对象确定为最终对象,只有一个属性的对象可以与其他同类对象合并为一个对象;,公共属性:可以为潜在的对象定义一组属性,这些属性适用于该类的所有实例;,公共操作:可以为潜在的对象定义一组操作,这些操作适用于该类的所有实例;,关键外部信息:问题空间中的外部实体和系统必需生产或消费信息。,对象和类还可以按以下特征进行分类:,确切性:类表示了确切的事物,(,如键盘或传感器,),,还是表示了抽象的信息,(,如,预期的输出,),;,包含性:类是原子的,(,即不包含任何其它类,),,还是聚合的(至少包含一个嵌套对象);,顺序性:类是并发的
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!