版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章面向对象系统分析与对象类建模教学目的⑴掌握面向对象系统分析的过程⑵掌握系统用例模型的设计方法⑶了解类和对象的概念、类与对象的关系等⑷重点掌握系统用例模型的设计和对象与类图的设计4.1面向对象系统分析面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。面向对象分析过程从分析陈述用户需求的文件开始可能由用户(包括出资开发该软件的业主代表及最终用户)单方面写出需求陈述,也可能由系统分析员配合用户,共同写出需求陈述当软件项目采用招标方式确定开发单位时,“标书”往往可以作为初步的需求陈述。面向对象分析的过程4.2系统用例建模4.2.1分析系统用例1.业务用例与系统用例业务用例着重于业务操作。表示实现业务目标的业务中的具体工作流。业务过程可能涉及手工和自动过程,并且在一段长期的时间内进行。系统用例着重于要设计的软件系统。参与者如何与软件系统进行交互?在系统用例说明中书写的事件流应该足够详细,便于用作编写系统测试脚本的出发点。系统用例的执行者为操作人员所代表的岗位角色,可以是实际与系统交互的操作人员、外部衔接系统、自动服务、定时器等。银行的业务建模客户银行开户银行功能银行的软件系统建模柜员软件系统开户软件系统业务用例模型与系统用例区别⑴设计范围业务用例的设计范围是业务操作,组织外部的业务参与者实现与业务组织相关的业务目标。系统用例着重于要设计的软件系统,参与者如何与软件系统进行交互⑵系统测试业务用例常常是以白盒形式编写系统用例几乎总是以黑盒形式编写⑶业务角色。业务参与者是业务之外的人在系统用例图中,参与者与用例进行交互2.系统用例的确定将每个业务用例都绘制出相应的活动图,再将其中的“活动”进行整合,就得出所有备选系统用例找出所有的备选系统用例后,要对它们进行合并和筛选。合并就是将相同的用例合并成一个,筛选就是将不符合系统用例条件的备选用例去掉。如在销售管理系统中,系统用例有采购、供应商管理、客户管理、进货查询、入库管理、出库管理、库存盘点、库存查询、销售、退货处理、价格管理、销售查询等。一个系统用例应该是实际使用系统的用户所进行的一个操作,例如,“查看新闻列表”就不能算一个系统用例,因为它只是某系统用例的一个序列项。4.2.2构造系统用例模型分析出参与者、用例和用例之间关系后,就可以绘制系统的用例模型4.3类与对象建模概述面向对象分析产生分析模型。分析时用例模型作为输入,对用例模型进行分析,把系统分解为相互协作的分析类,通过类图、对象图来描述对象、对象的属性和对象之间的关系。类图用于对系统的静态结构建模,在系统分析阶段,类图主要用于显示角色和提供系统行为的实体的职责;在系统设计阶段,类图主要用于捕捉组成系统体系结构的类结构;在系统编码阶段,根据类图中的类及它们之间的关系实现系统的功能。类图与其他的关系类图活动图用例图交互图包图状态图类图与其他图的关系4.3.1类图及对象图的图符1.类的表示方法类是任何面向对象系统中最重要的构造块。类是对一组具有相同属性、操作、关系和语义对象的描述。一个类可以实现一个或多个接口。类可以是作为问题域一部分的抽象,也可以是构成实现的类。⑴类的定义⑵类的属性在UML中,属性的完整语法形式为:[可见性]属性名称[:类型][多重性][=[默认值]][特性串{(类别)性质-字符串}][visibility]name[:type][multiplicity]
[=[default]][{property-string}][]类的内容表示可选项。下列的属性都是合法的:student 只有属性名+student 可见性和属性名origin:point 属性名和类型name:string[0..1] 属性名、类型和多重性origin:point=(0,0)属性名、类型而后初始值id:Integer{readonly}属性名、类型和特性可见性表示⑶类的操作类的操作,也称为类的方法,它描述了类的动态行为,用于修改、检索类的属性或执行某些动作。在大多数抽象层次上,对类的行为特征建模时,只需简单地写下每个操作的名称。在UML中,操作的完整语法形式为:[可见性]操作名称[(参数名称)][:返回值类型][特性串{(类别)性质-字符串}][visibility]name[(parameter-list)][:return-type][{property-string}]操作的可见性与属性相同,命名规则也与属性相同。参数名称中的参数是用跟属性类似的方式来表示的。⑶类的操作其语法如下:[方向]名称:类型[=默认值][direction]name:type[=defaultvalue]方向可以取下述值之一:in输入参数,不能对它进行修改。out输出参数,为了向调用者传送信息可以对它进行修改。inout输入参数,为了向调用者传送信息可以对它进行修改。下列操作是合法的display操作名+display可见性和操作名set(n:Name,s:String)操作名和参数restart(){gaurded}操作名和特性getID():interger操作名和返回类型+balanceOn(date:Date):Money⑷类的范围特征的范围指的是类目的每一个实例都有自己独特的特征值,还是类目的所有实例都共同拥有单独一个特征值。在UML中有两种范围:实例范围是指对于一个特征,类目的每个实例均有它自己的值。这是默认的,不需要附加符号。静态范围是指对于类目的所有特征,特征的值是唯一的,也把它称作类范围,通过对特性串加下划线来表示。静态范围的特征大多用于私有属性,它们必须为一个类的所有实例所共有。⑸类的分类类有具体类、抽象类和模板类。具体类可以定义其实例⑹接口UML类图元素中接口是一系列操作的集合,它指定了一个类所提供的服务,如所示。接口既可用的那个图标来表示,也可由附加了<<interface>>的一个标准类来表示,它直接对应于Java中的一个接口类型。通常,根据接口在类图上的样子,就能知道与其他类的关系。接口的表示⑺类的版型UML中有三种主要的类版型:边界类、控制类和实体类。边界类位于系统与外界的交界处,包括:用户界面类,如窗口、对话框、报表类等。通讯协议类,如TCP/IP的类。直接与外部设备交互的类和直接与外部系统交互的类。实体类实体类通过事件流和交互图发现,采用目标领域术语命名。通常实体类对应数据库中的表,其属性对应表的字段,但实体类与数据库中的表不一定是一一对应关系。控制类是负责管理或控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。控制较少接收消息,发出较多消息。控制类⑻类图的抽象层次按照SteveCook和JohnDianiels的观点,类图分为概念层、说明层和实现层。2.对象的表示方法对象图是类图的实例,几乎使用与类图完全相同的标识。对象图的两个基本元素是对象和它们之间的关系。展示的是一个对象图中表示对象的图标。与类图相似,水平线将图标内的文字分成了两部分,上边代表对象的名称,下边代表对象的属性和值。对象的名称表示objectName只有对象名;:ClassName只有类名;objectName:ClassName对象名和类名。所有的对象名称都加了下划线,目的是区分对象名称和类名称。如果没有指定一个对象的类,既没有用上面的语法显示地指定,也没有在对象的说明中隐式地指定,那么这个对象的类就被认为是匿名的。如果只指定了类名称,那么这个没有对象名的图标代表的就是一个明显的匿名对象。4.3.2对象/类的关系1.关联关系关联(association)是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。关联关系是对象之间一种引用关系,比如客户类与订单类之间的关系。这种关系通常使用类的属性表达。给定一个连接两类的关联,可以从一个类的对象导航到另一个类的对象。关联关系是实例之间的结构关系,关联又分为一般关联、聚合关联与组合关联。UML类关系中关联关系有6种对应的修饰,它们分别是:名称、角色、多重性、聚合、组合和导航性。⑴名称(name)关联可以有一个名称,用来描述关联的性质,通常使用一个动词或动词短语来命名关联。名称以前缀或后缀一个指引阅读的方向指示符以消除名称含义上可能存在的歧义,方向指示符用一个实心的三角形箭头表示。虽然关联可以有名称,但在明确给出关联的端点名的情况下不需要给出名称。⑵角色(role)当一个类参与了一个关联时,它就在这个关系中扮演了一个特定的角色。角色是关联关系中一个类对另一个类所表现出来的职责。角色名称是名词或名词短语,以解释对象是如何参与关联的。把关联端点扮演的角色称为端点名,在UML中称为角色名。⑶多重性(multiplicity)关联的多重性是指有多少对象可以参与该关联,多重性可以用来表达一个取值范围、特定值、无限定的范围或一组离散值。将多重性写成一个表示取值范围的表达式,其最大值和最小值可以相同,用两个圆点把它们分开。多重性说明对于关联另一端的类的每个对象,本端的类可能有多少个对象出现,对象的数目必须是在给定的范围内。可以精确地表示多重性为:一个(1);多个(0..*);一个或多个(1..*);整数范围,
(4)聚合关系聚合关系是关联的一种形式,是强的关联关系。代表两个类之间的整体/局部关系,如汽车类与引挚类、轮胎类之间的关系就是整体与个体的关系。聚合关系描述了“hasa”的关系,即整体对象拥有部分对象,是一种不稳定的包含关系。较强于一般关联,有整体与局部的关系,并且没有了整体,局部也可单独存在。在UML中使用空心的菱形表示,菱形从局部指向整体(4)聚合关系(5)组合关系组合关系是聚合关系中的一种特殊情况,是更强形式的聚合,又被称为强聚合。组合表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期,是一种更强的聚合关系,部分不能脱离整体存在。⑹导航性(nevigation)关联可以有方向,即导航。一般不作说明的时候,导航是双向的,不需要在线上标出箭头。大部分情况下导航是单向的,可以加一个箭头表示。导航性描述的是一个对象通过链(关联的实例)进行导航访问另一个对象,即对一个关联端点设置导航属性意味着本端的对象可以被另一端的对象访问。可以在关联关系上加箭头表示导航方向。只在一个方向上可以导航的关联称为单向关联,用一条带箭头的实线来表示。在两个方向上都可以导航的关联称为双向关联,用一条没有箭头的实线来表示。2.依赖关系依赖(Dependency)关系是对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。一个类调用被依赖类中的某些方法而得以完成这个类的一些职责。关联和依赖的区别:从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系;从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。3.泛化关系泛化(Generalization)把一般类连接到较为特殊的类,表示is-a的关系,表示一个更泛化的元素和一个更具体的元素之间的关系,也称为继承关系。是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类。泛化表示的是模型元素之间抽象和具体的关系,也就是模型元素之间的继承关系。继承者具有被继承者相同的特性,同时还能在被继承者的基础上进行扩展3.泛化关系4.实现关系实现(Realization)关系在类图中就是接口和实现的关系。UML模型图中类图实现关系表示一个模型元素实现了另一个模型元素定义的操作,一般是指一个类实现了一个接口定义的方法。实现关系通常在两种情况下被使用:在接口与实现该接口的类之间;在用例以及实现该用例的协作之间。在面向对象的概念中,接口就是只定义方法,并不实现这个方法。它用来给别的类继承它,并用类的操作实现它定义方法,通过这样的方法就能够将定义和抽象分开,利于代码的维护。4.实现关系4.4类与对象建模4.4.1类图的构建1)研究分析问题领域,确定系统的需求。2)确定类,明确类的含义和责任,确定属性和操作。3)确定类之间的关系。着重分析找出类之间的一般和特殊关系,部分与整体关系,研究类的继承性和多态性,把类之间的静态联系用关联、泛化、聚合、组合、依赖等联系表达出来4)调整和细化类及类之间的关系。5)绘制类图并编制相应的说明。1.确定系统类识别类的方法可以根据用例描述中的名词确定候选类;根据用例确定类;使用CRC分析法寻找类;根据边界类、控制类和实体类的划分来帮助发现类;参考设计模式来确定类;对领域进行分析或利用已有领域分析结构得到类;利用RUP在分析和设计中寻找类。常用的类识别方法有名词识别法;系统实体识别法;从用例中识别类;用分解与抽象技术识别类和CRC卡分析方法。名词识别法名称识别法的关键是识别系统问题域的实体,从系统描述中标识出名词及名词词组其中单数名词可以标识为对象复数名词可以标识为类如在学校管理信息系统中有学生、教师、学校和课程部门等类。用例识别法通过分析用例图帮助建立类用例描述中出现了哪些实体(实体类),这里的实体不是Actor,而是Actor使用系统时所调用的实体,是处在系统边界之内的实体;用例完成需要哪些实体配合(协作类);用例执行过程中会产生并存储哪些信息;用例要求与之关联的每个角色输入什么;用例反馈与之关联的每个角色输出什么;用例需要操作哪些设备(通讯类)。如在教学管理系统中教学干事,是一个参与者CRC分析法,CRC(Class-Responsibility-Collaboration)建模提供了一种简单的标识和组织与系统或产品需求相关的类的手段。CRC是目前比较流行的面向对象分析建模方法。要识别一个候选类是否是一个真正的类,应该先确定这个候选类是否担负着职责,同时是否有协作关系。在CRC建模中,用户、设计者、开发人员都要参与,完成对整个面向对象工程的设计。CRC卡是一个标准索引卡集合,包括三个部分:类名、类的职责、类的协作关系,每一张卡片表示一个类。销售类CRC卡片CRC的建模步骤(1)标识潜在的对象类(2)筛选对象类,确定最终对象类(3)标识责任(4)标识协作者(5)复审CRC卡UML支持的可见性类型的标志2.组织类并确定其关系关联关系表示不同类的对象之间的结构关系,它在一段时间内将多个类的实例连接在一起。关联描述的是类的对象之间逻辑上的关系,这些对象可以是同类的,也可以不是,关联的两端称为角色,如客户和订单就存在一种关联。在UML中关联主要有三种形式用一条线段标识双向的关联,称为关联;用一个有箭头的线段标识单向的关联;用一个带菱形头的线段表示关联的两端的类是整体和部分的关系,这种关联也称为聚合或组合。需求描述小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计发现类小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计筛选备选类“小王”、“人”、“家里”很明显是系统外的概念,无须对其建模;而“个人图书管理系统”、“系统”指的就是将要开发的系统,即系统本身,也无须对其进行建模;很明显“书籍”是一个很重要的类,而“书名”、“作者”、“类别”、“出版社”、“书号”则都是用来描述书籍的基本信息的,因此应该作为“书籍”类的属性处理,而“规则”是指书号的生成规则,而书号则是书籍的一个属性,因此“规则”可以作为编写“书籍”类构造函数的指南。“基本信息”则是书名、作者、类别等描述书籍的基本信息统称,“关键字”则是代表其中之一,因此无需对其建模;“功能”、“新书籍”、“信息”、“记录”都是在描述需求时使用到的一些相关词语,并不是问题域的本质,因此先可以将其淘汰掉;筛选修选类“计算机类”、“非计算机类”是该系统中图书的两大分类,因此应该对其建模,并改名为“计算机类书籍”和“非计算机类书籍”,以减少歧义;“外借情况”则是用来表示一次借阅行为,应该成为一个候选类,多个外借情况将组成“外借情况列表”,而外借情况中一个很重要的角色是“朋友”—借阅主体。虽然到本系统中并不需要建立“朋友”的资料库,但考虑到可能会需要列出某个朋友的借阅情况,因此还是将其列为候选类。为了能够更好地表述,将“外借情况”改名为“借阅记录”,而将“外借情况列表”改名为“借阅记录列表”;“购买金额”、“册数”都是统计的结果,都是一个数字,因此不用将其建模,而“特定时限”则是统计的范围,也无需将其建模;不过从这里的分析中,我们可以发现,在该需求描述中隐藏着一个关键类—书籍列表,也就是执行统计的主体。得到候选类在使用“名词动词法”寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过咬文嚼字关联分析,建模,多重性分析,再建模限定与修改导航性分析:Book与BookList之间、BorrowRecord和BorrowList之间是组合关系均无需添加方向描述,而Book与BorrowRecord之间则是双方关联,也无需添加约束:Book对象创建后就不能够
被删除只能被修改,因此在Book
类边上加上用自由文本写的约束;
一本书要么属于计算机类,要么
属于非计算机类,因此在ItBook
和OtherBook间加了“{Xor}”约束限定符:一本书只有一册,因此只
能够被借一次,因此对于一本Book
而言只能有一个RecordId与其对应
例1:确定银行网络系统ATM(AutoTradeMachine)的类,⑴系统简要描述银行网络系统包括人工出纳和分行共享的自动出纳机;各分理处用自己的计算机处理业务(保存帐户、处理事务等);各分理处与出纳站通过网络通信;出纳站录入帐户和事务数据;自动出纳机与分行计算机通信;自动出纳机与用户接口,接受现金卡;发放现金;打印收据;分行计算机与拨款分理处结帐。要求系统正确处理同一帐户的并发访问;网络费用平均摊派给各分理处。⑵类的识别采用名词识别法:检查问题陈述中的所有名词,得到初始类:软件银行网络分行计算机系统分行出纳站出纳员分理处分理处计算机自动出纳机帐户帐户数据现金卡事务事务数据用户顾客现金收据访问费用安全措施记录保管⑶根据下述原则进一步确定类:①去掉冗余类:如两个类表述同一信息,应保留最具有描述能力的类,如“用户”与“顾客”是重复的描述,由于“顾客”更具有描述性,故保留它,删除“用户”。②去掉不相干的类:删除与问题无关或关系不大的类,如“费用”。③删除模糊的类:有些初始类边界定义不确切,或范围太广,应该删除。如“系统”、“安全措施”、“记录保管”、“银行网络”。④删除那些性质独立性不强的,而应该是类“属性”的候选类:如“帐户数据”、“收据”、“现金”、“事务数据”。⑤所描述的操作不适宜作为对象类,并被其自身所操纵,所描述的只是实现过程中的暂时的对象,应删去。如“软件”,“访问”。4.4.2对象图的构建对象图(ObjectDiagram)是表示在某一时刻一组对象以及它们之间的关系的图,对象图由节点以及连接这些节点之间的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程费率招标文件模板汇编集锦
- 购销合同违约方履行警告函
- 食品安全质量保障声明
- 儿童成长的安全护航
- 个性化印刷品委托合同
- 英文版建材采购合同
- 私家车安全责任承诺
- 社会投资人招标文件模板的创新发展
- 守纪律讲规矩的承诺
- 员工违规处理办法
- 林业工程竣工报告
- 从偏差行为到卓越一生3.0版
- DG-TJ08-2433A-2023 外墙保温一体化系统应用技术标准(预制混凝土反打保温外墙)
- pets5历年真题(口语)
- 通信工程生涯发展规划
- 口腔专科护理疑难病例讨论
- 博雅汉语初级起步1-U11-北京的冬天比较冷
- 屠宰行业PEST分析
- 公交驾驶员心理疏导培训
- 《中国成人暴发性心肌炎诊断和治疗指南2024》解读
- 新生儿经皮测黄疸课件
评论
0/150
提交评论