欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    软件工程ppt课件第09章面向对象方法学引论.ppt

    • 资源ID:6027890       资源大小:379KB        全文页数:91页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程ppt课件第09章面向对象方法学引论.ppt

    第九章 面向对象方法学引论(Object-Oriented Methodology),1 面向对象方法学概述1、瀑布模型的缺点:僵化瀑布模型要求:生命周期各阶段间遵守严格的顺序。实际情况是:软件开发往往在反复实践中完成。瀑布模型要求:预先定义并“冻结”软件需求。实际情况是:某些系统的需求是一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时。,1面向对象方法学概述,本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差.,2、SA-SD-SP 技术的缺点:(结构化分析、结构化设计、结构化程序设计),面向对象方法把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。,3、面向对象方法学(OOM),面向对象方法学具有下述4个要点。把对象(object)作为融合了数据及在数据上的操作行为的统一的软件构件。面向对象程序是由对象组成的,程序中任何元素都是对象,复杂对象由比较简单的对象组合而成。,(2)把所有对象都划分成类(class)。每个类都定义了一组数据和一组操作,类是对具有相同数据和相同操作的一组相似对象的定义。,(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,这种现象称为继承。(4)对象彼此间仅能通过发送消息互相联系。也就是说,对象的所有私有信息都被封装在该对象内,不能从外界直接访问,这就是通常所说的封装性。,杭 州,北 京,Message,Send by method,对象Object,Object,=数据Attribute,Attributes:location;employee;,+操作Method,Methods:send;sell;,注意:Object内部的attributes不允许外部用户直接改动,只有当它提供了相应的服务method时,用户才能通过发送message来提请它执行。,我想把邮局搬到我家门口,多加几个邮递员,24小时都开门,对不起,本邮局不提供此类服务,唉,那就先送束花吧 Post_office.Send(request,payment),例:,特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体 对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。,OOM的四要素:,对象(object):世界由对象组成。,类(class):对象可划分为类;单个对象可视为某一类的实例(instance)。,1面向对象方法学概述,例:class Post_office private:loc_type location;emp_type employee;public:void send(req_type request,money_type payment);void sell(int goods,money_type payment);,main()Post_office My_PO;req_type My_request;money_type My_payment;My_PO.Send(My_request,My_payment);,1面向对象方法学概述,继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。,消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。,1面向对象方法学概述,OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。Class:由特殊到一般的归纳(induction)Inheritance:由一般到特殊的演绎(deduction),OOM=Object+Class+Inheritance+Communication with messages,OOM的优点:,传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。,1面向对象方法学概述,OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。,传统方法:结构依赖于功能,不稳定。,传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔性”,难以适应不同场合的不同需要。,OOM:一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。,1面向对象方法学概述,稳定性好:软件功能需求的变化不牵动全局,只需局部修改;Class 独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;容易理解;,传统方法:可维护性是最令人头痛的问题。OOM:从以下几方面改善了可维护性,容易测试、调试。,注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OOM与Prototyping结合使用效果好。,迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。,4 喷泉模型,使用面向对象方法学开发软件时,工作重点应该放在生命周期中的分析阶段。早期阶段定义了一系列面向问题的对象,并且在整个开发过程中不断充实和扩充这些对象。整个开发过程中都使用统一的软件概念“对象”,所有其他概念(例如功能、关系、事件等)都是围绕对象组成的,分析阶段得到的对象模型也适用于设计阶段和实现阶段。,各个开发步骤的多次反复迭代,达到认识的逐步深化。每次反复都会增加或明确一些目标系统的性质,但却不是对先前工作结果的本质性改动,这样就减少了不一致性,降低了出错的可能性。喷泉模型,是典型的面向对象的软件过程模型。,喷泉模型,“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。代表不同阶段的圆圈相互重叠,这明确表示两个活动之间存在交迭;用面向对象方法开发软件时,在分析、设计和编码等项开发活动之间并不存在明显的边界。在一个阶段内的向下箭头代表该阶段内的迭代(或求精)。图中较小的圆圈代表维护,圆圈较小象征着采用了面向对象范型之后维护时间缩短了。,为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或图9.1中的中心垂线)作为总目标。面向对象范型本身要求经常对开发活动进行迭代或求精。,2.基本概念,1.对象(Object),与要解决问题有关的任何事物都可以作为对象,对象是由描述该对象属性的数据以及可以对数据施加的所有操作封装在一起构成的统一体,通常把对象的操作称为服务或方法,一个对象很像一台录音机,f1,f2,f3,fi,fn,fi(X),S,gi(X,S),S,输出,输出,2.基本概念,Object:=ID+Method+Attribute+Message,对象的几个定义:(1)定义1:对象是具有相同状态的一组操作的集合。主要是从面向对象程序设计的角度看“对象”。,(2)定义2:对象是对问题域中某个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或与它交互的能力。也就是说,对象是对属性值和操作的封装。这个定义着重从信息模拟的角度看待“对象”。(3)定义3:对象=ID,MS,DS,MI。其中,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合(即对外接口)。这个定义是一个形式化的定义。,对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以惟一地标识它的名字,而且向外界提供一组服务(即公有的操作)。对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变。每当需要改变对象的状态时,只能由其他对象向该对象发送消息。对象响应消息时,按照消息模式找出与之匹配的方法,并执行该方法。,从动态角度或对象的实现机制来看,对象是一台自动机。具有内部状态S,操作fi(i=1,2,n)状态转换函数为gi(i=1,2,n)的一个对象,2.基本概念,特点:以数据为中心,不设与数据无关的操作;Object主动处理而不 被动地等待被处理,外部只能通过message请求操作;具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法;具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;模块独立性好:内聚强()、耦合松(),3、实例(Instance):某个class描述的具体对象;4、消息(Message):object_ID.method_ID(parameter(s);5、方法(Method):object能做的操作,亦称为服务、响应,在 class 中须定义相应的代码;6、属性(Attribute):object 的固有数据;,2基本概念,7、继承(Inheritance):子类自动共享父类的attributes 和methods,而不必重复定义。,2、类(Class):具有相同数据和相同操作的一组对象;,2.基本概念,例:,特点:若杭州人的 methods中有与中国人的同名,则李士执行该 method 时以杭州人为准,不执行中国人中定义的同名 method。,2.基本概念,讲官话,这叫做“低层性质override高层性质”讲土话,这叫做“县官不如现管”,传递性(transitivity):类C继承类B、类B继承类A、则类C继承类A,一个 类继承了上层全部 类的一切性质。,一个子类只 有 一 个父类称为单 继 承(single inheritance),一个子类可有多个父类称为多重继承(multiple inheritance).,注意:multiple inheritance 在定义中应避免二义性(ambiguity),即二个父类中定义重名,但各具不同性质。,2.基本概念,例:,修改与扩充可以很容易地通过派生子类来完成,2.基本概念,8、Polymorphism(多态性):不同层次的 classes 可共享一个method,但按各自的方式来实现这种 method。,C+中定义了虚函数(virtual function)来实现这一功能。在类层次不同中可以说明名字、参数特征和返回值类型都相同的虚函数,即一个method有多个版本,运行时才决定执行哪一个。故亦称为动态联编(dynamic binding)或滞后联编(late binding),double avg(const double a,int size);double avg(const int a,int size);double avg(const double a,int size);double sum=0.0;for(int i=0;i size;+i)sum+=ai;return(sum/size);double avg(const int a,int size);int sum=0;for(int i=0;i size;+i)sum+=ai;return(double)sum/size);main()int k3=1,2,3;double x3=1.1,2.2,3.3;cout avg(k,3)“int average n”;cout avg(x,3)“double average n”;,2.基本概念,9、Overloading,Function(or parameter)overloading:不同函数共用一个名字,而调用参数的特征不同。例:,Operator overloading:同一运算符(operator)作用于不同类型的操作数(operand)上面。,2.基本概念,在编译(compile)阶段就决定了使用类型及执行代码,故意亦称为静态联编(static binding)或先前联编(early binding)。,3.Object Modeling Technique(OMT)Rambaugh et al(1991),建立三种模型:描述系统数据结构的对象模型(object model).描述系统控制结构的动态模型(dynamic model).描述系统功能的功能模型(function model).,软件工程专家:提出自己的面向对象方法的,提出了自己的建模语言。面向对象方法发展的现实,要求在精心比较不同建模语言的优缺点和总结面向对象技术应用经验的基础上,把建模语言统一起来。,Booch,Rumbaugh和Jacobson经过合作研究,提出统一建模语言UML(The Unified Modeling Language)1996年6月设计出统一建模语言UML 0.91996年10月,在美国已有700多家公司表示支持采用UML作为建模语言在1996年年底,UML已经稳定地占领了面向对象技术市场的85%,成为事实上的工业标准。1997年11月,国际对象管理组织OMG批准把UML 1.1作为基于面向对象技术的标准建模语言。使用UML提供的类图来建立对象模型。在UML中术语“类”的实际含义是,“一个类及属于该类的对象”。,一、类图的基本符号,1。定义类类图描述类及类与类之间的静态关系-静态模型,学生类,4.对象模型,类名是一类对象的名字。命名是否恰当对系统的可理解性影响相当大,因此,为类命名时应该遵守以下几条准则:(1)使用标准术语。应该使用在应用领域中人们习惯的标准术语作为类名,不要随意创造名字。例如,“交通信号灯”比“信号单元”这个名字好,“传送带”比“零件传送设备”好。(2)使用具有确切含义的名词。尽量使用能表示类的含义的日常用语作名字,不要使用空洞的或含义模糊的词作名字。例如,“库房”比“房屋”或“存物场所”更确切。,4.对象模型,(3)必要时用名词短语作名字。为使名字的含义更准确,必要时用形容词加名词或其他形式的名词短语作名字。例如,“最小的领土单元”、“储藏室”、“公司员工”等都是比较恰当的名字。,4.对象模型,2.定义属性UML描述属性的语法格式如下:可见性 属性名:类型名=初值性质串属性的可见性(即可访问性)通常有下述3种:公有的(public)用加号(+)表示私有的(private)用减号(-)表示保护的(protected)用井号(#)表示如果未声明可见性,则表示该属性的可见性尚未定义。注意,没有默认的可见性。,4.对象模型,属性名和类型名之间用冒号(:)分隔。类型名表示该属性的数据类型,它可以是基本数据类型,也可以是用户自定义的类型。,在创建类的实例时应给其属性赋值,如果给某个属性定义了初值,则该初值可作为创建实例时这个属性的默认值。类型名和初值之间用等号(=)隔开。用花括号括起来的性质串明确地列出该属性所有可能的取值。枚举类型的属性往往用性质串列出可以选用的枚举值,不同枚举值之间用逗号分隔。也可以用性质串说明属性的其他性质,例如,约束说明只读表明该属性是只读属性。,例如,“发货单”类的属性“管理员”,在UML类图中像下面那样描述:-管理员:String=“未定”类的属性中还可以有一种能被该类所有对象共享的属性,称为类的作用域属性,也称为类变量。C+语言中的静态数据成员就是这样的属性。类变量在类图中表示为带下划线的属性,例如,发货单类的类变量“货单数”,用来统计发货单的总数,在该类所有对象中这个属性的值都是一样的,下面是对这个属性的描述:-货单数:Integer,3.定义服务服务也就是操作,UML描述操作的语法格式如下:可见性 操作名(参数表):返回值类型性质串操作可见性的定义方法与属性相同。参数表是用逗号分隔的形式参数的序列。描述一个参数的语法如下:参数名:类型名=默认值,当操作的调用者未提供实在参数时,该参数就使用默认值。与属性类似,在类中也可定义类作用域操作,在类图中表示为带下划线的操作。这种操作只能存取本类的类作用域属性。,类与类之间通常有关联(Association)、泛化(Generalization)、聚合(Aggregation)、组合(Composition)、依赖(Dependency)等关系。,二、表示关系的符号,关联,泛化,聚合,组合,依赖,1.关联关联表示两个类的对象之间存在某种语义上的联系。例如,作家使用计算机,我们就认为在作家和计算机之间存在某种语义连接,因此,在类图中应该在作家类和计算机类之间建立关联关系。,(1)普通关联普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可以用普通关联表示。普通关联的图示符号是连接两个类之间的直线。关联是双向的,可在一个方向上为关联起一个名字,在另一个方向上起另一个名字(也可不起名字)。为避免混淆,在名字前面(或后面)加一个表示关联方向的黑三角。,在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:01表示0到1个对象0*或*表示0到多个对象1+或1*表示1到多个对象115 表示1到15个对象3表示3个对象如果图中未明确标出关联的重数,则默认重数是1,(2)关联的角色在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。一个递归关联(即一个类与它本身有关联关系)的例子。一个人与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。如果没有显式标出角色名,则意味着用类名作为角色名。,(3)限定关联限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。例如,某操作系统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。利用限定词“文件名”表示了目录与文件之间的关系,可见,利用限定词把一对多关系简化成了一对一关系。,限定提高了语义精确性,增强了查询能力。文件名在其目录内是惟一的。查找一个文件的方法就是,首先定下目录,然后在该目录内查找指定的文件名。由于目录加文件名可惟一地确定一个文件,因此,限定词“文件名”应该放在靠近目录的那一端。(4)关联类为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。,例如:一个电梯系统的类模型,队列就是电梯控制器类与电梯类的关联关系上的关联类。从图中可以看出,一个电梯控制器控制着4台电梯,这样,控制器和电梯之间的实际连接就有4个,每个连接都对应一个队列(对象),每个队列(对象)存储着来自控制器和电梯内部按钮的请求服务信息。电梯控制器通过读取队列信息,选择一个合适的电梯为乘客服务。关联类与一般的类一样,也有属性、操作和关联。,2.聚集聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。在陈述需求时使用的“包含”、“组成”、“分为部分”等字句,往往意味着存在聚集关系。除了一般聚集之外,还有两种特殊的聚集关系,分别是共享聚集和组合聚集。,(1)共享聚集如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。例如,一个课题组包含许多成员,每个成员又可以是另一个课题组的成员,则课题组和成员之间是共享聚集关系。一般聚集和共享聚集的图示符号,都是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。,整体类,部分类,(2)组合聚集如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失(或失去存在价值了),则该聚集称为组合聚集(简称为组成)。,例如,在屏幕上打开一个窗口,它就由文本框、列表框、按钮和菜单组成,一旦关闭了窗口,各个组成部分也同时消失,窗口和它的组成部分之间存在着组合聚集关系。可以看出,组成关系用实心菱形表示。,3.泛化UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息。在UML中,用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。注意,泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象。实际上,泛化关系指出在类与类之间存在“一般-特殊”关系。泛化可进一步划分成普通泛化和受限泛化。,(1)普通泛化普通泛化与继承基本相同需要特别说明的是,没有具体对象的类称为抽象类。抽象类通常作为父类,用于描述其他类(子类)的公共属性和行为。图示抽象类时,在类名下方附加一个标记值abstract图下方的两个折角矩形是模型元素“笔记”的符号,其中的文字是注释,分别说明两个子类的操作drive的功能。,注释,抽象类通常都具有抽象操作。抽象操作仅用来指定该类的所有子类应具有哪些行为。抽象操作的图示方法与抽象类相似,在操作标记后面跟随一个性质串abstract。与抽象类相反的类是具体类,具体类有自己的对象,并且该类的操作都有具体的实现方法。给出一个比较复杂的类图示例,这个例子综合应用了前面讲过的许多概念和图示符号。,泛化,组合聚集,组合聚集,(2)受限泛化可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。预定义的约束有4种:多重、不相交、完全和不完全。这些约束都是语义约束。多重继承指的是,一个子类可以同时多次继承同一个上层基类,图中的水陆两用类继承了两次交通工具类。与多重继承相反的是不相交继承,即一个子类不能多次继承同一个基类(这样的基类相当于C+语言中的虚基类)。如果图中没有指定多重约束,则是不相交继承,一般的继承都是不相交继承。,完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定完全约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,随着对问题理解的深入,可不断补充和维护,这为日后系统的扩充和维护带来很大方便。不完全继承是一般情况下默认的继承关系。,4.依赖和细化依赖关系描述两个模型元素(类、用例等)之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。在UML的类图中,用带箭头的虚线连接有依赖关系的两个类,箭头指向独立的类。在虚线上可以带一个版类标签,具体说明依赖的种类。,分析类,设计类,当对同一个事物在不同抽象层词次上描述时,这些描述之间具有细化关系,动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列对象都具有自己的生命周期(或称为运行周期)对象生命周期由许多阶段组成,在每个特定阶段中,都有适合该对象的一组运行规律和行为规则,用以规范该对象的行为生命周期中的阶段也就是对象的状态。,5 动态模型,状态,是对对象属性值的一种抽象。各对象之间相互触发(即作用)就形成了一系列的状态变化。一个触发行为称作一个事件。状态有持续性,它占用一段时间间隔。状态与事件密不可分,一个事件分开两个状态,一个状态隔开两个事件。事件表示时刻,状态代表时间间隔。,三要素:事件(event):引发 object 状态改变的控制信息(瞬时)。状态(status):即 object 的 attributes 所处的情形(可持续)。行为(action):Object 要达到某种 status 所做的操作(耗时)。,表示方法:,注:当描述循环运行过程时,通常不关心是怎样启动的。,通常,用UML提供的状态图来描绘对象的状态、触发状态转换的事件以及对象的行为(对事件的响应)每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。,功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。功能模型由一组数据流图组成。在面向对象方法学中,数据流图远不如在结构分析、设计方法中那样重要。,6 功能模型,UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。在UML中把用用例图建立起来的系统模型称为用例模型。用例模型描述的是外部行为者(actor)所理解的系统功能。用例模型的建立是系统开发者和用户反复讨论的结果,它描述了开发者和用户对需求规格所达成的共识。,一幅用例图包含的模型元素有系统、行为者、用例及用例之间的关系。1.系统系统被看作是一个提供用例的黑盒子,内部如何工作、用例如何实现。代表系统的方框的边线表示系统的边界,用于划定系统的功能范围,定义了系统所具有的功能。描述该系统功能的用例置于方框内,代表外部实体的行为者置于方框外。,一、用例图,2.用例一个用例是可以被行为者感受到的、系统的一个完整的功能。UML中把用例定义成系统完成的一系列动作,动作的结果能被特定的行为者察觉到。动作包括:完成系统内部的计算与工作,与一些行为者的通信。用例通过关联与行为者连接,关联指出一个用例与哪些行为者交互,这种交互是双向的。,用例具有下述特征:(1)用例代表某些用户可见的功能,实现一个具体的用户目标;(2)用例总是被行为者启动的,并向行为者提供可识别的值;(3)用例必须是完整的。,注意,用例是一个类,它代表一类功能而不是使用该功能的某个具体实例。用例的实例是系统的一种实际使用方法,通常把用例的实例称为脚本。脚本是系统的一次具体执行过程,例如,在自动售货机系统中,张三投入硬币购买矿泉水,系统收到钱后把矿泉水送出来,上述过程就是一个脚本;李四投币买可乐,但是可乐已卖完了,于是系统给出提示信息并把钱退还给李四,这个过程是另一个脚本。,3.行为者行为者是指与系统交互的人或其他系统,它代表外部实体使用用例并且与系统交互的任何人或物都是行为者行为者代表一种角色,而不是某个具体的人或物。事实上,一个具体的人可以充当多种不同角色。,在用例图中用直线连接行为者和用例,表示两者之间交换信息,称为通信联系。行为者触发(激活)用例,并与用例交换信息。单个行为者可与多个用例联系;反之,一个用例也可与多个行为者联系。对于同一个用例而言,不同行为者起的作用也不同。可以把行为者分成主行为者和副行为者,还可分成主动行为者和被动行为者。,4.用例之间的关系UML用例之间主要有扩展和使用两种关系,它们是泛化关系的两种不同形式。(1)扩展关系向一个用例中添加一些动作后构成了另一个用例,这两个用例之间的关系就是扩展关系,后者继承前者的一些行为,通常把后者称为扩展用例。,例如,在自动售货机系统中,“售货”是一个基本的用例,如果顾客购买罐装饮料,售货功能完成得很顺利,但是,如果顾客要购买用纸杯装的散装饮料,则不能执行该用例提供的常规动作,而要做些改动。,可以修改售货用例,使之既能提供售罐装饮料的常规动作又能提供售散装饮料的非常规动作把常规动作放在“售货”用例中,而把非常规动作放置于“售散装饮料”用例中,这两个用例之间的关系就是扩展关系。在用例图中,用例之间的扩展关系图示为带版类扩展的泛化关系。,含扩展和使用关系的用例图,(2)使用关系当一个用例使用另一个用例时,这两个用例之间就构成了使用关系。,扩展与使用之间的异同:这两种关系都意味着从几个用例中抽取那些公共的行为并放入一个单独的用例中,而这个用例被其他用例使用或扩展,但是,使用和扩展的目的是不同的。通常在描述一般行为的变化时采用扩展关系;在两个或多个用例中出现重复描述又想避免这种重复时,可以采用使用关系。,通过用例可以获取用户需求,规划和控制项目。获取用例是需求分析阶段的主要工作之一,而且是首先要做的工作。大部分用例将在项目的需求分析阶段产生,并且随着开发工作的深入还会发现更多用例,这些新发现的用例都应及时补充进已有的用例集中。用例集中的每个用例都是对系统的一个潜在的需求。,二、用例建模,一个用例模型由若干幅用例图组成。创建用例模型的工作包括:定义系统,寻找行为者和用例,描述用例,定义用例之间的关系,确认模型。其中,寻找行为者和用例是关键。,1.寻找行为者为获取用例首先要找出系统的行为者。下述问题有助于发现行为者:谁将使用系统的主要功能(主行为者)?谁需要借助系统的支持来完成日常工作?谁来维护和管理系统(副行为者)?系统控制哪些硬件设备?系统需要与哪些其他系统交互?哪些人或系统对本系统产生的结果(值)感兴趣?,2.寻找用例可以通过请每个行为者回答下述问题来获取用例:行为者需要系统提供哪些功能?行为者自身需要做什么?行为者是否需要读取、创建、删除、修改或存储系统中的某类信息?系统中发生的事件需要通知行为者吗?行为者需要通知系统某些事情吗?从功能观点看,这些事件能做什么?,行为者的日常工作是否因为系统的新功能而被简化或提高了效率?还有一些不是针对具体行为者而是针对整个系统的问题,也能帮助建模者发现用例,例如:系统需要哪些输入输出?输入来自何处?输出到哪里去?当前使用的系统(可能是人工系统)存在的主要问题是什么?注意,最后这两个问题并不意味着没有行为者也可以有用例,只是在获取用例时还不知道行为者是谁。事实上,一个用例必须至少与一个行为者相关联。,7 三者关系,功能模型(FM):做什么 What,动态模型(DM):何时做 When,对象模型(OM):操作的实体,OM,DM,FM,Object,DM,Action,Process,Method,Data storage,Data flow,Attribute,Event,对每个object(class)建立DM;,Action对应DFD中的 process 以及OM中的 method;,FM中的 process 对应OM中的method;,FM中的数据存储及数据的源/终点对应OM中的 object;,FM中的数据流对应OM中的attribute,或是整个 object;,FM中的 process 产生DM中的 event;,OM描述了FM中的动作对象、数据存储及数据流的结构。,建立顺序,

    注意事项

    本文(软件工程ppt课件第09章面向对象方法学引论.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开