面向对象分析设计.ppt
软件系统的建模及建模原则,计算机软件是“产品”,因为它具有产品特征:1)软件产品为用户提供功能;2)开发者和使用者是脱离的;3)软件产品具有质量的概念;4)软件产品具备完备的用户手册技术文档;5)软件产品的生产过程具有工业化生产的特点;6)开发团队协同工作,软件产品需要使用工具,技术可重用,质量必须稳定,不应在不同版本的软件之间产生质量不稳定。,在解决问题之前必须首先理解所要解决的问题。对问题理解得越透彻,就越容易解决它。为了更好地理解问题,人们常常采用建立问题模型的方法。所谓模型,就是为了理解事物而对事物作出的一种抽象。,模型化方法,日常生活中经常能见到模型技术的应用。模型都具有抽象化的特性,是某件实物的抽象表示.模型省略了细节,便于理解,容易操作。模型便于设计者和用户之间的沟通。,软件建模基本目的有四点:规范(specifying)、可视化(visualizing)、建造(constructing)建档(documentation)。(1)规范。在分析和设计阶段为软件系统的各个组成部分规定其功能、结构和对外接口。(2)可视化。有助于软件规范的表达和交流。,(3)建造(生成源代码)。完整定义的软件规范可以实现通过模型向源代码的映射,支持软件系统的建造。(4)建档。完整定义的软件模型是反映软件系统的结构和实现的重要技术资料,可以作为技术档案保存,以便后续产品或相关产品能有效地重用其中的成熟技术。,2.建模的原则(1)准确的原则模型必须准确地反映软件系统的真实情况。模型必须准确,意味着在软件开发的整个周期内模型必须和产品始终保持一致。(2)分层的原则在建模的过程中,必须有不同的模型,以不同的抽象程度,反映系统的不同侧面。在软件构筑的不同阶段,不同的开发人员如:投资者、管理者、设计者、程序员、测试者和使用者看待软件的侧重面有所不同。因此,软件系统的建模需要不同的模型以反映系统的不同侧面。如,一类模型描绘系统的外部边界和行为,另一类模型描绘系统的内部逻辑关系。,(3)分治的原则不可能单独用一个模型来反映整个系统的任何侧面。软件系统是复杂的,对于软件模型的任意一个侧面不可能用一个模型来反映所有内容,需要把问题分解为不同的子模型,分别处理这些模型,相对独立但又互相联系,综合起来构成了此侧面的一个完整的模型。(4)标准的原则模型必须在某种程度上是通用的。建模的基本目的是交流,一个开发队伍内部的交流,同一软件的不同时期的版本的开发队伍的交流,不同软件的开发队伍之间的交流,以实现最大程度的软件复用。交流需要语言,语言是通用的、标准的。,面向对象建模方法概述,面向对象方法学 采用面向对象的概念及其抽象机制建立应用系统模型,将系统开发视为对象模型的转换和不断细化过程对象建模 是一种用于辨识系统环境中的对象和这些对象关系的技术,面向对象的方法学,分析与设计的鸿沟,面向对象的方法学,问题求解面向对象设计方法:实现问题空间和问题求解空间的近似和直接模拟。,意识部分教室,物质部分303教室,抽象部分教室类,具体部分一个对象:教室实例,现实问题空间,解空间,面向对象的软件开发方法,顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为,支持增量式开发,支持大型软件开发,支持软件重用,改善软件结构(模块化与封装),提高软件灵活性,面向对象建模方法概述,面向对象分析(Object-Oriented Analysis,OOA)技术用于 研究现有对象,看它们是否能够被复用或者被调整用于新的用途;定义各种新对象和修改后的对象,它们将于现有对象一起组合成一个有用的企业计算应用系统面向对象方法的核心是对象建模技术,面向对象分析设计的基本思路,识别对象和类通过一组互相关联的模型详细表示类之间的关系和对象的行为,并最终描述系统的信息、功能和行为静态逻辑模型-对象模型动态逻辑模型,Booch方法,Booch与1986年发表论文介绍该方法提出需要建立4个模型 逻辑模型、物理模型、静态模型、动态模型。Booch的方法是一个迭代的、渐进的开发方法开发过程分为:宏过程和微过程,宏过程:概念化-获得需求 概念化活动是一个非常有创造性的过程,所以没有严格的开发规则,可以通过原型法建立系统。分析-建立行为模型 分析的目的是通过识别构成问题域词汇表的类和对象来为系统建立模型。设计-建立体系结构进化-实现维护-管理软件的交付使用微过程(由4个没有顺序的步骤组成):在给定的抽象层次上识别出类和对象。识别出这些类和对象的语义识别出类间和对象间的关系.实现类和对象,把系统的开发工作分为两个部分:微观过程和宏观过程。,微观过程,宏观过程,Booch方法,OMT方法,OMT(Object Modeling Technigue)对象模型技术方法由Rumbaugh等提出的,OMT方法的目的是构造一系列模型,这些模型不断对系统设计进行细化,直到找到适合实现的最后模型.,1.什么是OMT方法 OMT是对象建模技术(Object Modeling Technology)的简称,它将使用三种不同的模型从不同侧面来描述现实世界,即使用对象模型,动态模型和功能模型三种模型。,OMT方法概述,2.OMT的三个模型对象模型:描述静态结构,定义做事情的实体功能模型:描述处理(数据变换),指明系统应“做什么”动态模型:描述交互过程,规定什么时候做,Rambaugh方法(OMT方法),创建三个模型:对象模型(对象类、层次和关系的表示)、动态模型(对象和系统行为的表示)和功能模型(高层的类似DFD的系统信息流的表示),主要分为分析、设计(系统设计和对象设计)和实现几个阶段。分析阶段:确定对象模型、动态模型和功能模型设计阶段:系统设计和对象设计实现阶段的细节和具体的实现环境有关,Rambaugh方法(OMT方法),OMT的四个阶段分析阶段:理解应用问题,建立对象模型、动态模型和功能模型,说明对象关联、控制流及数据变换。系统设计阶段:确定系统框架,考虑并发任务、通讯机制和数据存储策略。对象设计阶段:从实现的角度细化分析对象模型、动态模型和功能模型实现阶段:具体代码实现,OMT方法突出的特点是在分析阶段,它可以较为全面地描述系统的静态结构,所以0MT方法适合于数据密集型的信息系统的开发。,OMT系统分析和设计过程概观图,对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。该模型主要关心系统中对象的结构、属性和操作,它是分析阶段模型的核心。,对象模型,(Object Model):,对象模型(Object Model):,对象模型是用来描述系统内部对象结构的,包括对象本身的特性以及对象之间的关系。对象模型是建立动态模型和功能模型的基础。对象模型是由对象图表示的,对象图是由类构成,并依据类之间的结构与行为的关系,加以安排组织而成的。,对象模型包含,1.对象和类(1)对象。对象建模的目的就是描述对象。(2)类。通过将对象抽象成类,我们可以使问题抽象化,抽象增强了模型的归纳能力。(3)属性。属性指的是类中对象所具有的性质(数据值)。(4)操作和方法。操作是类中对象所使用的一种功能或变换。类中的各对象可以共享操作,每个操作都有一个目标对象作为其隐含参数。方法是类的操作的实现步骤。,2.关联和链关联是建立类之间关系的一种手段,而链则是建立对象之间关系的一种手段。(1)关联和链的含义。链表示对象间的物理与概念联结,关联表示类之间的一种关系,链是关联的实例,关联是链的抽象。(2)角色。角色说明类在关联中的作用,它位于关联的端点。(3)受限关联。受限关联由两个类及一个限定词组成,限定词是一种特定的属性,用来有效的减少关联的重数,限定词在关联的终端对象集中说明。限定提高了语义的精确性,增强了查询能力,在现实世界中,常常出现限定词。(4)关联的多重性。关联的多重性是指类中有多少个对象与关联的类的一个对象相关。重数常描述为“一”或“多”。,3.类的层次结构(1)聚集关系。聚集是一种“整体部分”关系。在这种关系中,有整体类和部分类之分。聚集最重要的性质是传递性,也具有逆对称性。(2)一般化关系。一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式。它是“一般-具体”的关系。一般化类称为你类,具体类又能称为子类,各子类继承了交类的性质,而各子类的一些共同性质和操作又归纳到你类中。因此,一般化关系和继承是同时存在的。一般化关系的符号表示是在类关联的连线上加一个小三角形.,4.链和关联的概念图例 对象之间的静态联系称为实例连接,该实例连接称为链,类之间的实例连接称为关联。,5.关联的多重性,6.二元关联和三元关联,7.角色,8.受限关联,9.链属性,10.类的聚集关系,11.聚集树,键盘,12.类的一般化关系,12.类的树型层次结构(单重继承),13.类的格型层次结构(多重继承),建立对象模型的方法标识和问题相关的类定义属性和关联定义对象的连接组织对象类的层次,对象模型示例,公司,动态模型(Dynamic Model),动态模型是用来描述系统与时间相关的动态行为的。动态模型表现的是对象彼此之间经过交互作用后,随时间而改变的情况。动态模型以事件(event)和状态(state)为其模型的主要概念。动态模型以状态图和时序图表示的。,2.动态模型与对象模型的关系 每个对象的操作用动态模型来描述。,1.事件事件是指定时刻发生的某件事。2.状态状态是对象属性值的抽象。对象的属性值按照影响对象显著行为的性质将其归并到一个状态中去。状态指明了对象对输入事件的响应。3.状态图状态图是一个标准的计算机概念,他是有限自动机的图形表示,这里把状态图作为建立动态模型的图形工具。状态图反映了状态与事件的关系。当接收一事件时,下一状态就取决于当前状态和所接收的该事件,由该事件引起的状态变化称为转换。状态图是一种图,用结点表示状态,结点用圆圈表示;圆圈内有状态名,用箭头连线表示状态的转换,上面标记事件名,箭头方向表示转换的方向。,事件举例 扭动插在汽车点火器中的钥匙是打开和关闭电子系统的一个信号。用对象术语,扭动钥匙是一个事件。按电梯的按钮也是一个事件,按压按钮是使电梯移动到另一层楼的信号。,什么是场景 系统某一次特定运行时期内发生的事件序列称为场景(也叫脚本),也是完成系统某个功能的一个时间序列。脚本起始于一个系统外部的输入事件,结束于一个系统外部的输出事件。,脚本举例,事件追踪图(时序图)侧重说明发生于系统执行过程中的一个特定“场景”。,什么是状态 对象的状态由对象属性的值定义。具有时间性和持续性。,状态举例 只能打开和关闭的开关有两种状态:开和关如果一个矩形由三个属性描述:长、宽和位置,给定这些属性的值就定义了矩形对象的一个状态,状态图 状态图是由事件和状态组成的结构图,有流线和圆角矩形两个基本符号。流线表示事件圆角矩形表示状态,状态与事件的关系 一个事件分开两种状态,一个状态分开两个事件状态具有持续性,只有在响应一个事件时才发生变化事件具有瞬时性,状态图举例汽车点火系统状态图,状态:关闭、打开、启动事件:扭动钥匙打开、扭动钥匙启动、扭动钥匙关闭、放开钥匙,状态图前提条件 也称防护措施,列在事件名后面的方括号内。说明除非前提条件被满足,否则事件不能发生。,状态图动作、活动事件与动作相关联状态与活动相关联动作和活动的差异体现在完成它们所需要的时间上完成动作所花时间假定为零(瞬时),完成活动则需要花一段时间。,状态图的动作表示法 动作名放在事件后面,用“/动作名”表示,状态图的活动表示法 在状态框内加上“do:活动名”,意味着当进入状态时,活动开始,离开状态时,活动结束。例如:,状态图单程图、循环图,建立动态模型的方法准备场景从场景中抽取事件组织事件的顺序和状态开发状态图评审行为的一致性和完整性,1.拿起电话,立即放下2.拿起电话,超时放下3.拿起电话,拨号不全,放下4.拿起电话,拨号不全,超时放下5.拿起电话,无效拨号,放下6.拿起电话,有效拨号,立即放下7.拿起电话,有效拨号,忙音放下8.拿起电话,有效拨号,自动中断放下9.拿起电话,有效拨号,对方铃响放下10.拿起电话,有效拨号,对方应答未完放下11.拿起电话,有效拨号,对方应答完毕放下,举例,功能模型(Functional Model),功能模型用来描述系统中数据的转换的。在动态模型中对象间彼此交互作用,所处理的数据由功能模型表达出来。功能模型是以数据流程图的形式表示的,数据流程图描述数据间的相依性及数据从输入到输出的整个转换过程。,功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑计算的次序。功能模型由多张数据流图组成。数据流图用来表示从源对象到目标对象的数据值的流向,它不包含控制信息,控制信息在动态模型中表示,同时数据流图也不表示对象中值的组织,值的组织在对象模型中表示。,使用OMT方法的面向对象开发过程可分为5步,分析:分析问题域并进行建模系统设计:设计系统的整体体系结构对象设计:为了有效地实现系统,对对象结构进行细化,为对象添加细节.编码:用目标编程语言实现对象和类测试:验证系统是否正确,分析是OMT方法的第一步。开发系统,首先必须了解系统的需求及系统周围的环境。,OMT分析阶段需要进行的活动,分析的第一步是对问题的描述,即,获得用户要解决的问题并编写问题陈述文档(Problem Statement)。根据问题域确定对象并建立对象模型(1)识别出类和对象(2)舍弃不必要和不正确的类(3)准备数据字典(将抽象出的类放入数据字典,并在数据字典中对每个类进行描述)(4)识别出类之间的关联关系(5)丢弃不必要和不正确的关联(6)抽象出类和对象的属性(7)建立类之间的层次关系,一个小例子,与汽车有关的概念:汽车、轮子、引擎、齿轮箱、自动齿轮箱、车门、引擎罩、离合器、无线电、油箱、刹车、排气管、轮胎。,无线电可以是类,但是在我们的系统里无用。车门:无用。引擎罩:无用。油箱:无用。,轿车,悬架,车轮,轮胎,刹车,引擎,转换器,齿轮箱,自动转换器,手动转换器,离合器,OMT分析阶段需要进行的活动,建立动态模型 识别出用例和系统中典型的交互并用脚本描述 识别出对象间的事件,为典型的交互的脚本标注事件,建立事件流图 为系统中具有重要的动态行为的类建立状态图建立功能模型 如有必要,通过数据流图建立系统的功能模型细化对象模型、动态模型和功能模型,建立完善的文档,系统设计阶段需要完成的活动,系统设计首先需要完成的是将系统划分为一个个的子系统。对于每个子系统,必须确定与其它子系统的接口。良好的接口定义可使不同的子系统的设计能独立完成。子系统的划分可以不断进行下去,直到将子系统分解为模块。识别出系统中存在的并发。如可能将子系统脚由硬件完成。选择数据的存储策略。识别出全局资源。,对象设计需要完成的活动,进一步完善对象的操作设计算法实现对象的服务调整类的结构,需要的话可增加继承设计对象之间关联的实现用模块(如动态库、包、名字空间)封装相关的类和关联,2.实例:饮料自动售货机系统需求一饮料自动售货机的设置 一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。,2.实例:饮料自动售货机系统需求二饮料自动售货机销售饮料 顾客将硬币投入售货机,经累加,金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物篓掉出,并自动结算及找钱。需求三饮料自动售货机取消交易 顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。,3.实例分析一:找出饮料自动售货机系统中的对象需求一饮料自动售货机的设置 一个饮料自动售货机可以放置五种不同或部分相同的饮料,可由厂商根据销售状况自动调配,并可随时重新设置售价,但售货机最多仅能放置50罐饮料,其按钮设计在各种饮料样本的下方,若经金额计算器累计金额足够,则选择键灯会亮;若某一种饮料已销售完毕,则售完灯会亮。,3.实例分析一:找出饮料自动售货机系统中的对象需求二饮料自动售货机销售饮料顾客将硬币投入售货机,经累加,金额足额的饮料选择键灯亮,等顾客按键选择。顾客按键后饮料由取物篓掉出,并自动结算及找钱。需求三饮料自动售货机取消交易 顾客可在按下选择键前任何一个时刻,拉动退币杆取消交易收回硬币。,5.实例分析三:动态建模画出自动售货机事件追踪图,存量为零,找零,扣减存量,灯亮,余额,饮料,结算,选择键#,选择按纽,灯亮,金额足够,显示总额,总额,累加,投入硬币,金额计算器,存量计算器,顾客,售货机,选择键,售完灯,6.实例分析四:动态建模画出自动售货机系统状态图,投入硬币金额(1元、5元、10元),投入硬币(有效的),按下选择饮料键,Do:显示售货机在备用 所有灯都关闭,Do:显示金额总数,Do:显示金额已够 饮料选择灯亮,取出饮料 结算找零 扣减存量 完成交易,饮料“售完”灯亮,金额不足再投币,存量为零,无效的硬币,取消,取消,回到备用状态,回到备用状态,课后练习,(1)一个公司可以雇佣多人,人也可以为多个公司工作。每个公司有一个总经理,公司中的每个雇员有一个经理,经理可以管理多个下属的雇员。请用对象类图描述上述模型。(2)客户想供应商发出一个订单,订单订购各种不同的零件。一个订单由若干订单行组成,每行制定供应商目录中的一种特定零件,并说明要订购多少。作为对订单的响应,供应商安排一次交货,由所有订购的零件组成。请用对象类图描述上述模型。,Jocobson方法(OOSE方法),用例(use case)驱动,它建立的所有模型都是以用例模型为基础的。用例用以描述用户和系统间如何交互的场景,统一建模语言(UML),统一建模语言(UML)是一套建模规则,它使用对象说明或描述软件系统UML 并未规定一种系统开发方法,它只是一种广泛接受的对象建模标准的符号体系。,统一建模语言的发展过程,Unified Modeling Language(UML)是一套建模规则,它使用对象说明或描述软件系统。UML 并未规定一种系统开发方法,它只是一种广泛接受的对象建模标准的符号体系。OMG于1997年采纳为国际标准。,统一建模语言UML,对象、属性和实例,表示一个对象实例,对象实例的名称为:412209;分类为:Customer。,表示一个对象实例的属性。对象实例的名称是唯一表示该对象的属性值。,对象类,表示一个对象类,主要包含三部分:对象类的名称、属性名称、方法名称。,UML Representation of Generalization/Specialization,对象/类的关联关系,对象/类的关联关系 是一种存在于一个或多个对象/类之间的自然业务联系。,连线表示类之间的关联关系:places 关联关系是双向的,一个客户提交零个或多个订单 一个订单由一个且仅有一个客户提交,重数,重数:定义一个对象/类对应相关对象类的一个实例关联可能的最小出现次数和最大出现次数.,聚合关系,聚合关系:是一个较大的“整体”类饱含一个或多个较小的“部分”类之间的关系。,合成关系,合成关系:是一种特殊的聚合关系,其中“整体”负责其“部分”的创建和销毁,如果整体不存在,部分也不存在.,消息,消息请求:包括请求行为名称和对象所需属性名称,多态,多态:不同对象可以以不同的形式响应同样的消息.重载:是一种技术,其中子类使用它自己的属性或行为,而不是从父类继承属性或行为。,UML Diagrams,用例模型图(Use-Case Model Diagrams)静态结构图(Static Structure Diagrams)类图(Class diagrams)对象图(Object diagrams)交互图(Interaction Diagrams)顺序图(Sequence diagrams)协作图(Collaboration diagrams)状态图(State Diagrams)状态图(Statechart diagrams)活动图(Activity diagrams)实现图(Implementation Diagrams)组件图(Component diagrams)部署图(Deployment diagrams),是一种用于建模需求的技术.它以图形化的方式描述系统与外部系统和用户的交互。用例描述也用于以文本化的方式描述每个交互步骤的顺序,描述系统的对象结构.它们显示构成系统的对象类,以及对象类之间的关系.,建模实际的对象实例,描述在一个用例或操作的执行过程中对象如何通过消息互相交互,说明了消息如何在对象之间被发送和接受以及发送的顺序。,类似于顺序图,但重点不是消息的定时或“顺序”,相反,它以一种网络格式表现对象之间的交互(或协作),建模一个特定对象的动态行为,说明了一个对象的生命周期对象可以经历的各种状态,以及引起对象从一个状态向另一个状态转换的事件。,描述活动的序列流,用于描述系统的软件组件的组织和依赖关系,描述系统中硬件和软件的物理架构,用以说明构成系统架构的运行时软件组件、处理器和设备的配置。,对象,实例描述:习题管理系统系统需求说明按三方面描述:系统问题域说明:应用系统的业务范围系统边界说明:确定系统与用户之间接口系统功能说明:系统需要实现的责任,系统问题域说明:,在一个公共习题库的支持下,负责各科习题的教师:可用系统编写习题及答案,并存入习题库;从习题库中选择一组习题去组成作业,并在要求时间公布习题答案;从习题库中选择一组习题组成考试题公布;可以批改学生的作业;学生答题后收卷,阅卷评分.,系统问题域说明:,每个学生:用系统完成作业或答题并提交给系统;可在习题库中选择习题自己练习;可以在公布答案后核对自己的作业;一名系统管理员:负责习题,编班和权限管理和维护习题库.,系统边界说明:,系统的用户有本校教师,学生,系统管理员.学校以班组织学生,每班每学期有若干课程.每门课的习题由一位教师负责.只有本科教师可提交或修改习题.,系统功能说明:,教师编写习题及答案入库;教师选择习题作为作业公布于习题板上向学生布置;教师选择习题作为试题公布于考试板上(有考题,时间和评分要求).每个学生每门课程都有一个练习本.记录学生完成每道习题(或考题)的解答.教师通过练习本批改习题(或考题);习题库提供入库,提取,权限,查询等管理.,发现对象,出发点:问题域和系统功能问题域:考虑客观事务与系统中对象的映射.系统功能:系统中每项功能应落实到某些对象来完成.边界:考虑用户界面对象.,发现对象,筛选对象原则:舍弃与功能无关的事物对系统有关的事物中筛选是否对系统提供有用的信息,是否向系统提供某些服务.如:一本书是图书馆管理系统的类,但不能是书店管理系统的类,发现对象,具体做法:从需求中找名词作为侯选对象:教师,系统,习题,答案,作业,时间,学生,试题,系统管理员,权限,学校,班,学期,课程,习题板,考试板,练习本,习题库.共18项,发现对象,分析候选对象:系统:太大的抽象,不能作为对象.作业:是习题的同义词,可舍弃.时间:只有考试板要求,可作为考试板属性处理.试题:习题的同义词,可舍弃.,发现对象,分析候选对象:权限:是系统管理员的功能,作为其属性.学校:与系统功能无关,可舍弃.学期:与系统功能无关,可舍弃.系统管理员(一个)与习题库合并为习题库服务对象.,发现对象,筛选结果:班,课程,教师,学生,习题板,练习本习题,考试板,习题答案,习题库服务共10项,分4层对象.,确定对象类,班对象类的属性和方法属性:方法:ID 编班本班学生名单负责教师名单,确定对象类,课程类的属性和方法属性:(无方法)课程编号课程名称授课起止时间负责教师ID,确定对象类,教师类的属性和方法属性:方法:ID 工作姓名负责班号负责课程,确定对象类,教师“工作”方法的注释:教师行为有编写习题和答案,选习题,公布习题和答案,检查作业,阅卷等.这些行为应与“习题”,“习题班”,“考试板”,“练习本”等对象封装更合理(共享).因此,设立“工作”方法抽象表示,它通过教师发送不同消息,去分别完成不同功能.,确定对象类,学生类的属性和方法属性:方法:ID 练习姓名班级,确定对象类,学生“练习”方法的注释:与教师类似,学生行为有提取习题,核对答案,自选习题,答题等.这些行为应与“练习本”,“习题解答”和“习题库服务”等对象封装更合理.因此,设立“练习”方法抽象表示,通过学生发不同消息,去完成不同功能.,确定对象类,习题板类的属性和方法属性:方法:所属课程,选题,查题,要求完成期限,公布答案一组习题,查阅答案公布时间,确定对象类,练习本类的属性和方法属性:方法:课程号 提取习题,答案 检查作业,学生ID 自选习题,习题解答 核对答案,确定对象类,习题类的属性和方法属性:方法:习题号 编写习题,题目内容 编写答案,答案 习题入库 所属课程 难度系数,确定对象类,考试板类的属性和方法属性:方法:所属课程 收卷要求完成期限 阅卷答卷评分标准,确定对象类,习题答案类的属性和方法属性:方法:习题号 答题解答答案,确定对象类,习题库服务类的属性和方法属性:方法:权限表 库管理,编班,查询表 习题入库,索引表 提取习题,权限检查.,确定对象类的关系,各类对象之间的关系:分类关系:一般-特殊(继承)关系组成关系:整体-部分(结构)关系静态关系:实例连接(属性相关)动态关系:消息连接(行为相关),分析本例的对象之间的关系,分类的关系习题板与考试板是父子关系.考试板可看作为特殊的习题板,除习题板的共性外,增加了评分标准.,分析本例的对象之间的关系,组成的关系:班与学生是组成的关系()(1对n)习题板与习题是组成的关系(1,0对n)练习本与习题答案是组成关系(1对n),分析本例的对象之间的关系,实例连接关系:学生与练习本对象之间存在一对多的实例连接关系.由练习本中的学生ID属性体现.考试板与练习本对象之间存在一对多的实例连接关系.练习本用快照复制答案作为考试板中答卷属性体现.教师与课程对象之间存在一对多的实例连接关系.由课程中负责教师ID属性体现.,对象间关系图,班,教师,习题板,练 习本,学生,考试板,习题库,系统管理员,习题,课程,习题解答,1,n,n,n,n,n,n,n,1,1,1,1,0,1,0,1,分析本例的对象之间的关系,对象消息连接:消息连接与系统分布相关.如何安排系统对象所在地是关键.本例假设用3台处理机,对象分3组:教师,课程,习题,习题板,考试板班,学生,练习本,习题解答习题库服务,分析本例的对象之间的关系,对象消息连接:(同机通信)教师向习题发消息:调用编写习题,编写答案,习题入库等方法.教师向习题板发消息,可调用选题,公布答案,查询答案,查询习题等方法.教师向考试板发消息可调用收卷,阅卷方法,分析本例的对象之间的关系,对象消息连接:(同机通信)学生向练习本发消息,可调用提取作业,核对答案,自选习题等方法学生向习题答案发消息,可调用答题方法,分析本例的对象之间的关系,对象消息连接:(异机通信)教师向练习本发消息,可调用检查作业方法练习本向习题板发消息,可调用查询习题,查询答案方法练习本调用自选习题时,要向习题库发消息去提取习题,分析本例的对象之间的关系,对象消息连接:(异机通信)习题对象向习题库发消息可调用习题入库,提取习题方法.习题板对象向习题库发消息可调用习题入库,提取习题方法,确定对象类图,画完整的类图:(如下一页)每个类有属性和方法.各类之间的各种关系.各类之间的各种消息.将确定类与用户交流,进行几次修改最后确定.再找开发工具就可以编程.,类图:,班,教师,习题板,练 习本,学生,考试板,习题库,系统管理员,习题,课程,习题解答,1,n,n,1,n,n,n,n,1,n,1,1,0,1,0,1,