1七面向对象分析与设计建模2面向对象分析与设计的建模软件开发需要把问题解决模型化。模型化是理解一个复杂系统的工具;模型是系统早期抽象的重要结构;常用的面向对象分析与设计模型Rumbaugh等人的OMT模型Coad和Yourdon的模型Booch开发模型UML统一建模语言3对象模型化技术的三类模型:对象模型、动态模型和功能模型。这个模型化的过程是一个迭代过程通过不断更新、细化,直到切合系统真正需求为止。。Rumbaugh的对象模型化技术OMT(objectmodelingtechnique)动态模型对象模型功能模型41.对象模型也叫做静态模型,是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。在OMT中,类与类之间的关系叫做关联。关联代表一组存在于两个或多个对象之间的,具有相同结构和含义的具体链接。关联可以是物理的,也可以是逻辑的。5类名属性操作类类的实例(类名)属性值类定义示例自动售货机饮料编号价格投入货币送出饮料显示金额按下按钮按退币杆显示售完6聚合,代表整体与部分的关系,这是一种特殊形式的关联。菱形框表示整体侧对象限定,用以对关联的含义做某种约束。角色,用来说明关联的一端。由于多数关联具有两个端点,因而涉及到两个角色。附加的说明对象之间的连接连接属性。(0个或1个)(0个或多个)1+(1个或多个)12,4(1~2个或4个)7整体部分段落句子聚合类A类B限定词目录文件文件名限定公司名字个人名字工作职务工资雇主雇员类A角色角色类B8泛化关联(一般-特殊关系)派生类A派生类A基类雇员年初至今收入计算月工资正式雇员年工资额计算月工资临时雇员小时工资额计算月工资9金额计算器金额累加找零重置自动售货机饮料编号价格投入硬币送出饮料显示金额按下按钮按退币杆显示售空存量计算器饮料编号存量递减显示售空重置退币杆退币杆状态按退币杆顾客姓名硬币投入硬币取出饮料选择按钮按钮状态按钮灯亮按钮灯灭售空灯亮按下按钮顾客按退币杆购买顾客按下按钮属于属于属于属于102.动态模型动态模型着重于系统的控制逻辑,它包括两个图,一是状态图,一是事件追踪图。状态图状态A活动状态B活动状态A/操作事件B[条件]起始状态终结状态状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为。11取出饮料结算找零扣减存量完成交易显示售货机就绪,所有灯灭显示金额总数饮料售空灯亮显示总额已够饮料选择灯亮投入硬币(有效的)投入硬币规定金额金额不足再投币按下饮料选择按钮回到就绪状态回到就绪状态取消无效硬币取消12事件追踪图事件追踪图侧重于说明发生于系统执行过程中的一个特定“场景”。场景也叫做脚本,是完成系统某个功能的一个事件序列。场景通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在这个期间的系统所有的内部事件。13顾客投入硬币自动售货机计算并显示金额顾客持续投入硬币直到足够的金额自动售货机选择按钮灯亮顾客选择饮料种类并按下选择按钮自动售货机送出相应饮料并结算、找零自动售货机扣除该饮料的存量如自动售货机该饮料有存货,回到初始状态如自动售货机该饮料无存货,显示该饮料“售空”灯亮,不再接受选择,回到初始状态自动售货机售货脚本(事件序列)14顾客售货机金额计算器选择按钮存量计算器售空灯投入硬币累加总额显示总额金额足够灯亮选择按钮按下按钮送出饮料结算余额找零扣减存量存量为零灯亮153.功能模型功能模型由数据流图组成,指明从外部输入到外部输出,数据在系统中传递和变换的情况。顾客自动售货机输入:投币、按选择按钮、取消交易输出饮料投币金额显示屏选择按钮灯售空灯显示投币金额选择按钮灯亮售空灯亮顶层数据流图16饮料按钮灯亮顾客投入硬币判断何种饮料按下选择按钮判断存量为零否饮料编号计算扣减存量找零存量非零顾客送出饮料找零售空灯亮存量为零数据流图17Coad与Yourdon的分析与设计1.面向对象分析的概念模型通过面向对象分析建立的系统模型是以概念为中心的,因此称为概念模型。这样的模型由一组相关的类组成。构造和评审面向对象分析概念模型的顺序和由五个层次组成,即类与对象、属性、服务、结构和主题。18类与对象层属性层服务层结构层主题层主题服务消息属性实例连接类边界实例边界192.Coad与Yourdon的设计模型设计模型被划分成了4个组成部分,这些组成部分把实现技术隐藏起来,使之与系统的基本问题领域行为分离开来。从分析转到设计需要在分析模型的基础上加入实现方面的限制。设计模型类似于构造蓝图,设计模型全面地定义了如何用特定的实现技术建立起一个目标系统。20类与对象层属性层服务层结构层主题层问题领域部分人机交互部分任务管理部分数据管理部分主题服务消息属性实例连接类边界实例边界设计模型的体系结构21UML面向对象分析与设计UML把Booch,Rumbaugh和Jacobson等各自独立的OOA和OOD方法中最优秀的特色组合成一个统一的方法。UML的特点:统一标准面向对象可视化,表示能力强大独立于过程容易掌握使用22UML的定义UML定义有两个主要组成部分:语义:用自然语言描述表示法:定义UML的可视化标准表示符号使用UML时,要从不同的角度观察系统,为此定义了概念“视图”。视图是对系统的模型在某方面的投影,注重于系统的某个方面。23结构视图行为视图实现视图环境视图用例视图为最终用户做什么系统静态结构程序员提供什么软件组织与管理系统集成人员如何组织与控制系统系统工程师如何配置和运行系统系统拓扑、交付、安装、操作、通信分析员或测试员系统任务控制与管理(性能,可伸缩性,吞吐量)行为241)结构视图:描述系统的静态结构,可根据它确定重要的设计:类、包和子系统。2)实现视图:描述处于开发环境中的静态软件成分的组织(源程序、构件、数据文件、可执行程序等)。3)行为视图:描述系统在运行时的并发性,包括任务、线程、进程及其相互作用。软件体系结构的4+1视图模型254)环境视图:描述处于运行环境中的各种可执行程序是如何映射到底层平台或计算结点上的。5)用例视图:包括若干关键场景或用例。在初始和细化阶段用来帮助发现和设计体系结构。在构造阶段用来验证各种不同视图。在文档中用来表明其他视图是如何工作的。UML分析建模着重系统的用例模型和结构模型,设计建模着重行为模型,实现模型和环境模型上。26体系结构中主要的元素包括:主要的类,如为业务实体建模的类。将行为赋予类的机制,如协同。模式与框架。层次与子系统。接口以及主要的进程控制或线程控制。UML的三个主要组成元素基本构造块组织构造块的规则运用于整个UML的公共机制27UML的构成UML包括三种基本构造块:事物、关系和图。UML事物—结构事物类名属性操作open()close()move()display()originsizeWindow1)类282)接口—描述一个类或构件的服务(操作)。3)协作—描述合作完成某个特定任务的一组类及其关联的集合,用于对使用情形的实现建模。4)用例—表示系统想要实现的行为,不关心这些行为是怎样实现的。ISpelling29PlaceOrderOrderManagement用例协作实现5)主动类—它至少拥有一个进程或线程,故能够启动控制活动。suspend()flush()EventManager306)构件—系统中物理的、可替代的部件。7)节点—系统在运行时存在的物理元素。Orderform.java数据库服务器应用服务器课程管理成绩管理31UML事物—行为事物8)交互—由在特定环境中共同完成一定任务的一组对象之间交换的消息组成。p:Person:CompanyAssign(development)消息有名对象匿名对象329)状态机—描述了一个对象或一个交互在生存周期内响应事件所经历的状态序列。initializingcommandidleKeypressFinishedExit33UML事物—分组事物10)包用户接口包业务对象包数据库包应用包34UML事物—注释事物11)注释—依附于一个元素或一组元素之上,对其进行约束或解释的简单符号。CashAccountpresentValue()Seepolicy8-5-96.docfordetailsaboutthesealgorithms.35UML关系1)依赖—两个事物之间的语义关系,其中一个事物发生变化会影响另一个事物的语义。CourseScheduleadd(c:Course)remove(c:Course)CourseIteratorfriend362)关联—一种描述一组对象之间连接的结构关系。聚合是一种特殊类型的关联,描述了整体和部分间的结构关系。3)泛化—一种一般化—特殊化的关系。employeremployee0..1*37EventConsoleWindowDialogBoxControl依赖泛化关联Windowopen()close()move()display()handleEvent()384)实现—类之间的语义关系,其中的一个类指定了由另一个类保证执行的契约。两种情况出现实现关系:a.在接口和实现它们的类或构件之间;b.用例和它们的协作之间。PlaceOrderOrderManagement用例协作实现39类属性操作对象属性操作接口用例构件节点状态机包注释依赖关联泛化实现聚合复合模型中主要的图形元素40UML模型的图形UseCaseDiagramsUseCaseDiagrams用例图ScenarioDiagramsScenarioDiagrams协作图StateDiagramsStateDiagrams构件图ComponentDiagramsComponentDiagrams部署图StateDiagramsStateDiagrams对象图ScenarioDiagramsScenarioDiagrams状态图UseCaseDiagramsUseCaseDiagrams顺序图StateDiagramsStateDiagrams类图活动图模型411.用例图用例图展现了一组用例、参与者以及它们间的关系。可以用用例图描述系统的静态使用情况,它定义了系统的功能需求,但这是从系统的外部观看系统功能,并不描述系统内部对功能的具体实现。在对系统行为组织和建模方面,用例图的是相当重要的。42查询商品价格顾客库存系统售货员总账系统查询商品信息预售商品网上销售商品打折销售商品出售商品查询商品成分商品查询售货管理43说明顾客持所欲购买的商品至收银台结帐,店员刷商品条码后,根据数量及单价计算总金额商品售出后,商品编码、单价、总金额存入电脑,数据记载到“库存系统”和“总帐系统”中(含预售、网络购物、打折销售)。。事件流基本事件流刷条码?结算金额?付款?扣库存?记入日记账?打印发票异常事件流第一异常事件流顾客结帐后更换商品第二异常事件流顾客将已售商品退回特殊需求第一个特殊需求允许退货,并将退回商品加回库存第二个特殊需求记录顾客的性别,年龄,供后续统计分析用用例规格说明:销售商品442.类图类图展示了一组类、接口和协作及它们间的关系。类图没有时间概念,是概念数据模型(如E-R图)的一种延伸。用类图说明系统的静态结构视图,包含主动类的类图—专注于系统的静态处理视图。系统可有多个类图,单个类图仅表达了系统的一个方面,要在高层给出类的主要职责,在低层给出类的属性和操作。45类图是从系统构成角度来描述系统。类的表示:类的名称属性属性:数据类型属性:数据类型=初值操作操作(参数表):结果类型46限定关联类1类2限定词关联名称角色1角色2聚合、引用和重复度0..*0..10..*整体类名部分类名2部分类名10..1聚合简单引用复合聚合双方捆绑47关联名类1类2关联类名属性操作角色1角色2关联类48泛化关系超类子类1子类2操作抽象类操作49雇员雇员标识:char姓名:char职务