高级软件工程(第八章)-面向对象的分析与建模(2017课件)_第1页
高级软件工程(第八章)-面向对象的分析与建模(2017课件)_第2页
高级软件工程(第八章)-面向对象的分析与建模(2017课件)_第3页
高级软件工程(第八章)-面向对象的分析与建模(2017课件)_第4页
高级软件工程(第八章)-面向对象的分析与建模(2017课件)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

111第八章

面向对象的分析与建模2在面向对象分析中,对象、事件和响应成为分析的主体,分析的着力点转向了交互。强调的是在问题领域中发现和描述对象或概念。面向对象分析中一个重要的结果是领域模型〔重要的概念及其关联〕。领域概念领域概念的可视化2面向对象分析(OOA)概述

3建模建立模型的过程是一个抽象的过程。从很高的抽象层次看,现实世界无论多么复杂,本质上都是由人、事、物和规那么组成。人要做事,做事就会使用一些物并产生另一些物,同时做事需要遵循一定的规那么。人驱动系统,事表达过程,物记录结果,规那么是控制。建立模型的关键就是弄明白有什么人,什么人做什么事,什么事产生什么物,中间有什么规那么,再把人、事、物之间的关系定义出来,一个模型也就根本成型了。4分析阶段的三种根本模型完整描述系统需要不同的视图〔角度〕,典型的建模需要从不同的层面建立模型。面向对象的建模中从三种相关但不同的角度来建模系统会很有效。每种角度都捕获了重要的系统层面,但完整描述就需要全部三种模型。这三种模型是:类模型、状态模型和交互模型。这三种模型将一个系统划分成不同的视图。在高层次上,用例模型描述了系统如何与外部参与者交互,为分析提供了根底。5类模型的定义类模型描述了系统内部对象的特征、对象之间的相互关系以及对象所属的每个类的属性和操作,捕捉系统的静态特征。类模型在三种模型中更为重要。强调围绕对象而不是功能来构建系统,因为面向对象系统与现实世界更为接近,所以更容易相应变化。6对象建模(ObjectModeling)是一种用于辨识系统环境中的对象和这些对象之间关系的技术。对象建模方法要求使用完全不同于数据建模和过程建模的方法和图形记号〔目前最主要的OO建模工具是UML〕。面向对象分析涉及到定义信息系统的静态和动态行为模型,而不是定义数据和过程模型〔这是传统开发方法的目标〕。

7面向对象思想每个对象都扮演了一个角色,并为其它成员提供特定的效劳或执行特定的行为。在面向对象世界中,行为的启动是通过将“消息”传递给对此行为负责的对象来完成的。同时还将伴随着执行要求附上相关的信息〔参数〕;而收到该消息的对象那么会执行相应的“方法”来实现需求。用类和对象表示现实世界,用消息和方法来模拟现实世界。8对象类共享公共属性和行为的对象集合。有时称为类。在UML中为类提供了图形表示。这种可视化的抽象表示,使得我们对类的描述脱离了具体编程语言,而只需要强调抽象的主要局部。类图提供了对类及其关系进行建模的一种图形化的表示法;类主要是由名称、属性和操作组成。类在UML中由专门的图符表达,是一个分成3个分隔区的矩形。其中顶端的分隔区为类的名字,中间的分隔区放类的属性、属性的类型和值〔在UML符号表示中给出类的初始值〕,第3个分隔区放操作、操作的参数表和返回类型。9属性〔attribute〕属性是已被命名的类的特性,它描述了类的对象〔也就是类的实例〕所具有的一系列特性值。属性描述了正被建模的事件的一些特性,这些特性是类的所有对象所共有。例如,所有的CPU都有主频率、指令集类型、运算的位算和外观尺寸。一个类可以具有零个到多个属性。属性名列表放在类名之下,并且和类名之间用分隔号隔开。10如何组织属性和操作?在建类模型时,类图中没有必要一下子将全部的属性和操作都画出来。〔大多数情况下也不可能,例如领域建模时〕只将感兴趣的属性和操作画出来就可以了。可以用”...”表示还有属性或操作没有画出来。11关联〔association〕关联描述了有共同的结构和语义的一组链接。例如,一个人为一家公司工作〔WorksFor〕,这里WorksFor就是一个关联。如同类描述了一组潜在的对象那样,关联以相同的方式描述了一组潜在的链接。在问题陈述中,链接和关联经常以动词形式出现。关联可以使从一个类导航到另外一个类。12关联的多重性多重性指定了一个类与关联类的单个实例可能相关的实例数目。多重性约束了相关对象的数目。关联表示了对象间的结构关系。有时在建模时需要说明一个关联的实例中有多少个相互连接的对象。13如何使用关联?在分析阶段,关联表示对象之间的逻辑关系。没有必要指定方向或者关心如何去实现它们。应该尽量防止多余的关联,因为它们不会增加任何逻辑信息。在设计阶段,关联用来说明关于数据结构的设计决定和类之间职责的别离。此时,关联的方向性很重要,而且为了提高对象的存取效率和对特定类信息的定位,也可引入一些必要的多余关联。14聚合〔aggregation〕在实际建模中,往往需要对“整体/局部”的关系进行描述。在这种关系中,其中一个类所描述的是一个较大的事物〔即“整体”〕,它由较小的事物〔“局部”〕组成。这种关系在面向对象中就称为聚合,它描述了“has-a”的关系,意思是整体对象拥有局部对象。聚合是一种特殊的关联。例如,电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成局部。在UML中被表示为在整体的一端用一个空心菱形修饰的简单关联。15组合也是关联关系的一种特例,表达的是一种“contains-a”的关系,这种关系比聚合更强,也称为强聚合。整体拥有各局部,局部与整体共存,如整体不存在了,局部也会随之消失。在UML中被表示为在整体的一端用一个实心菱形修饰的简单关联。组合关系〔Composition〕16面向对象〔OO〕的需求分析系统开发过程开始于确定事件和事物。事件:新系统所必须考虑的业务过程;事物:包含在商业过程中的问题域对象。新开发人员经常会问这样的问题:是先定义事件和还是先定义实物。事实上,这两个方面是紧密联系在一起的,它们通常一起定义。有经验的开发人员经常在确定类和商业过程之间不断切换。

17领域模型领域模型〔domainmodel〕是对领域内的概念类或现实世界中对象的可视化表示。又称概念对象模型、领域对象模型、分析对象模型。领域模型是对实际问题领域的抽象表示,它专注于分析问题领域本身,开掘重要的业务领域概念或对象,并建立业务领域概念之间的关系。

领域模型的作用领域模型是作为设计软件对象的启发来源。领域模型是说明问题域里〔对建模者来说〕有意义的领域类,它是面向对象分析的时候要创立的最重要的工作〔必须说明,用例虽然也是一个重要的分析工作,但它并不是面向对象的,它是强调的概念的过程视图〕。识别一个丰富的领域类集,是面向对象分析的核心工作,做好这项工作,将会在设计和实现期间获得丰富的回报。1819UML如何表示领域模型?使用UML表示法,领域模型用一组不带操作的类图来表示,可显示:领域对象或概念类概念类之间的关联概念类的属性1920如何理解领域模型?领域模型不是对软件对象的描述,而是对真实世界领域中的概念或对象的可视化。面向对象分析关注从对象的角度创立领域描述,分析的结果可以表示为领域模型,在领域模型中展示重要的领域概念或对象。这里的对象是指领域对象,是指真实世界的概念,从本质上说它直接来源于现实世界,没有软件设计技术层次上的考虑。21对象建模过程建模系统功能[用例参与者词汇表、用例图、用例描述、活动图];发现并确定业务对象[对象列表];组织对象并确定它们之间的关系[类图]。面向对象分析要求我们辩识从用户角度开发所需的系统功能、支持所需系统功能的对象、对象的数据属性、相关的行为以及对象之间的关联。面向对象分析包含以下三个活动:22建模系统功能在进行面向对象分析时,为了准备对象建模,需要把以前定义的业务需求用例模型转化成分析用例模型。业务需求用例:关注各种参与者的战略视图和目标。这类用例是面向用户的,反映了系统期望行为的高层视图,提供了对问题域和范围的一般性理解,不包括交互细节。系统分析用例:从业务需求用例导出的,记录系统用户与系统之间交互的用例。反映了用户界面约束之类的实现细节,开发人员使用这种用例说明详细的需求,但仍然没有太多的实现细节和约束。23构造分析用例模型根据以下步骤将业务需求用例模型转换成系统分析用例模型:确定、定义并记录新的参与者确定、定义并记录新的用例确定任何复用的可能性细化用例模型图〔如果需要〕记录系统分析用例描述课堂练习一画出类模型图,能正确表示出以下要求:一个雇员最多有一个经理;经理可以管理多个雇员;经理也可以不管理任何雇员。EmployeeManager0..n1课堂练习参考答案课堂练习二-----描述以下类模型的语义order(订单),orderitlm(订单项),customer(顾客),consignee(收货人),delierorder(送货单),peddlery(商户),product(产品)。CustomerConsigneeOrder0..n0..111DeliverOrder1111..nPeddlery0..n1Product0..n1OrderItem11..n1..n1110..n0..11111..n1111..n11..n0..n10..n111源类目标类关联分析Customer(1)Order(0…n)订单是属于某个客户的,网站的客户可以有0个或多个订单Order(1)Consignee(1)每个订单只能够有一个收货人Order(1)OrderItem(1…n)订单是由订单项组成的,至少要有一个订单项,最多可以有n个Order(1)DeliverOrder(1…n)一个订单有一个或多个送货单说明:系统根据订单项的产品所属的商户,将其分发给商户,拆成了多个送货单!DeliverOrder(1)OrderItem(1

温馨提示

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

评论

0/150

提交评论