OOAD1UML面向对象的分析与设计ObjectOrientedAnalysisandDesignwithUMLOOAD2课程大纲1.课程绪论(ch01-03)2.初始阶段(ch04-07)3.细化迭代1-分析(ch08-11)4.细化迭代1-设计(ch12-16)5.细化迭代1-GRASP1(ch17-18)6.细化迭代1-实现与测试(ch19-22)7.细化迭代2-GRASP2&GOF(ch23-26)8.细化迭代3(ch27,29,30,38)OOAD31.1课程大纲1.2面向对象分析与设计1.3UML概述1.4RUP概述1.5敏捷开发1.6课程案例教材CH01,CH02,CH031课程绪论OOAD4“拥有一把锤子未必能成为建筑师”!“精通编程,未必能开发一个好的系统!!良好的面向对象设计意味着什么?掌握OOA/D的核心技能!在OOA/D中应用UML和设计模式。使用统一过程的敏捷方法。OOAD51.1课程大纲•面向专业:信息管理与信息系统•课程性质:专业必修•理论学时:32(2学分)•实验学时:16(0.5学分)•先修课程:面向对象程序设计(Java)OOAD6课程目标•掌握面向对象的系统分析和设计技术,包括原则,模型,制品,活动和方法•培养OO开发的重要能力:识别领域对象,设计软件对象(为软件对象分配职责)OOAD7资源:教材及参考书OOAD8教材结构安排但是,教材迭代与实际项目迭代有差别:•教材:学习驱动,即由易至难•项目:风险驱动,即先解决高风险的问题初始阶段细化迭代1细化迭代3细化迭代2•教材编排特色:•不像传统教材按主题编排•而是遵循UP(统一过程)中”Iterative”(迭代)思想。OOAD9课程内容体系UnitedProcess统一过程UMLAnnotationUML表示法DesignPatterns设计模式OOA/D面向对象分析与设计OOADApplyingUMLandPatternsUML面向对象分析与设计OOAD101OOAD•概念:CH05,06,07•用例模型:CH06,30•概述:CH01•领域模型:CH09,31•系统顺序图和操作契约:CH10,11,32•概述:CH01,14•分配职责:CH17•用例实现:CH15,16,19•顺序图和设计类图:CH15,16OOD理解需求OOA“教材结构-教学主题”对应关系OOAD112设计模式GRASP模式•创建者,信息专家,低耦合,控制器,高内聚:CH17,18•多态,纯虚构,间接性,防止变异:CH25GoF模式•适配器,工厂,单例,策略,组合,外观,观察者,发布订阅CH26•命令,代理:CH36架构模式•分层、MVC:CH13,33,34,39“教材结构-教学主题”对应关系OOAD123UMLandUML表示法•用例图CH06,30•类图CH09,16,31•顺序图与通信图CH10,15•包图CH13•活动图CH28•状态图CH29•构件图与部署图CH38UML概述UML表示法•概述CH01•工具与应用CH14,22“教材结构-教学主题”对应关系OOAD134统一过程概述•初始阶段CH04•细化迭代CH08,12,23,24,27•构造阶段CH20,21UP阶段•迭代概念CH02•迭代计划CH40“教材结构-教学主题”对应关系OOAD14序号主题教材章节学时实验(章节)1课程绪论1,2,332初始阶段4,5,6,74用例图(6,30)活动图(28)3细化迭代1—分析8,9,10,116领域模型(9)系统顺序图与操作契约(10,11)4细化迭代1—设计12,13,14,15,165交互(15)类图与包图(16,13)5细化迭代1-GRASP117,185状态图(29)6细化迭代1-实现与测试19,20,21,221构件图与部署图(38)7细化迭代2-GRASP2,GoF23,24,25,266综合性实验8*细化迭代328,2930,38拆分到相关主题或实验中讲授教学进度安排OOAD15UMLvs.对象思想•UML是标准图形表示法•UML不是OOA/D,也不是方法•没有面向对象设计UML是没有意义的•在OOA/D中应用UML本课程的重点是学习OOA/D的思想,而不是如何画UML图。OOAD16教学体系设计课程名字简称性质学分学时UML面向对象分析与设计OOAD理论课2学分32学时UML面向对象分析与设计实验UML实践课0.5学分16学时管理信息系统课程设计MISP实践课2学分OOADUMLMISPPOSATMMIS,OOAD,UML,OOPUMLModelingOOAD,UML,RUP,DPOOAD17理论课OOAD教学方法•讲授:侧重于OOAD的基本概念/原则•案例:教学案例—NextGenPOS•课堂讨论:ATM•Coding:GRASP/GoF讲授次序遵照迭代过程,即教材结构;主题为辅。OOAD18实验课UML教学方法•掌握UML表示法,应用工具绘制UML图•UML工具–RationalRose–IBMRSA–PowerDesigner–MSVisio–Together–UMLDesigner–StarUML–...•验证性实验项目:NextGenPOS•综合性实验项目:ATMOOAD19课程设计MISP教学方法•项目:xxPOS•开发文档–OO,UML建模–Blog@OSC完成文档–“评论”反馈•程序–Java语言–Git@OSC托管代码–“issue”反馈OOAD20OOAD/UML实验•实验1用例图(NextGenPos)•实验2活动图(NextGenPos)•实验3领域模型(NextGenPos)•实验4系统顺序图与操作契约(NextGenPos)•实验5交互图(NextGenPos)•实验6类图和包图(NextGenPos)•实验7状态机图(NextGenPos)•实验8构件图和部署图(NextGenPos)•综合性实验(ATM)OOAD21实验课UML评价•学时16,学分0.5•验证性实验:40%–8个实验,每个5分,共40分–教材NextGenPos项目UML绘图–每个人提交1分报告电子版。•综合性实验:60%–分散迭代完成。–每个小组交1份报告打印稿。OOAD221.2面向对象分析与设计分析(Analysis)•强调对问题和需求的调查研究•需求分析(对需求调查研究)•面向对象分析(对领域对象的调查研究)•What设计(Design)•强调满足需求的概念上的解决方案•面向对象设计•数据库设计•输入输出设计•…•HOW分析:做正确的事情设计:正确地做事OOAD23OOAVSOOD定义用例定义领域模型定义交互图定义设计类图定义领域模型•面向对象分析(Object-OrientedAnalysis):在问题领域内发现和描述对象(或概念)。–如,在图书馆信息系统中,包含书籍、书库、借阅者等概念。•面向对象设计(Object-OrientedDesign):定义软件对象以及他们如何协作实现需求。–在图书馆信息系统中,“书”这个软件对象,可以有“title”属性和“getChapter”方法。OOAD24OOA/D的简单示例-骰子游戏•软件模拟游戏者掷两个骰子,如果总点数是7则赢得游戏,否则为输OOAD25定义用例(需求阶段)•需求分析可能包括人们使用应用的情节或场景,这些情节或场景可以被编写成用例。•用例是需求分析的一种常用工具。定义用例定义领域模型定义交互图定义设计类图用例:PlayGame(进行游戏)参与者:Player(游戏者)描述:游戏者请求掷骰子;系统展示骰子结果;判断胜负:如果骰子总点数是7,则游戏者赢,否则游戏者输。OOAD26定义领域模型(OOA)•OOA关注从对象的角度创建领域描述,鉴别领域内重要的概念、属性和关联•OOA的结果可以表示为领域模型(domainmodel)•领域模型并不是对软件对象的描述,它是真实世界领域中概念和想象可视化,又称为概念模型(conceptualobjectmodel)定义用例定义领域模型定义交互图定义设计类图OOAD27PlayernameDiceGameDiefaceValueRollsPlaysIncludes221111图1-3骰子游戏的局部领域模型骰子游戏:游戏者请求掷(两个)骰子。系统展示结果:如果骰子总点数是7,则游戏者赢,否则游戏者输。由用例描述可初步得出领域模型OOAD28分配对象职责并绘制交互图(OOD)•OOD关注的是软件对象的定义——它们的职责和协作•顺序图(sequencediagram,UML的一种交互图)是描述协作的常见表示法。•顺序图展示出软件对象之间的消息流,和由消息引起的方法调用。定义用例定义领域模型定义交互图定义设计类图OOAD29图1-4顺序图描述软件对象之间的消息(手画)骰子游戏:游戏者请求掷(两个)骰子。系统展示结果:如果骰子总点数是7,则游戏者赢,否则游戏者输。顺序图动态的展示了系统如何实现用例,展示了对象的职责和协作OOAD30:DiceGameplay()die1:Diefv1:=getFaceValue()die2:Dieroll()roll()fv2:=getFaceValue()图1-4顺序图描述软件对象之间的消息(软件画)OOAD31定义设计类图(OOD)•设计类图(designclassdiagram)是用来表示类定义的静态视图,可以描述类的属性和方法。定义用例定义领域模型定义交互图定义设计类图OOAD322DiefaceValue:intgetFaceValue():introll()DiceGamedie1:Diedie2:Dieplay()1图1-5局部设计类图:DiceGameplay()die1:Diefv1:=getFaceValue()die2:Dieroll()roll()fv2:=getFaceValue()由顺序图中对象的职责和协作,可以得出类的设计OOAD331.3UML概述•统一建模语言(UnitedModelingLanguage,UML)是描述(specifying)、构造(constructing)和文档化(documenting)系统制品的可视化(visualizing)语言。UML是OMG(ObjectManagementGroup)所接受的标准。【课堂阅读】P10UML发展历史OOAD34应用UML的三种方式•UML作为草图:非正式的、不完整的图–白板上手绘草图–用于讨论问题•UML作为蓝图:相当详细的设计图–由CASE工具完成–用于文档。•UML作为编程语言:–用UML完成软件系统可执行规格说明。–可执行代码能够被自动生成。OOAD35应用UML的三种透视图•概念透视图:–用图描述现实世界或关注领域中的事物–概念透视图中的类称为概念类(conceptualclass)•规格说明透视图:–用图来描述软件的抽象物或具有规格说明和接口的构件。–规格说明透视图中的类称为软件类(softwareclass)•实现透视图:–用图来描述特定技术(Java)中的软件实现。–实现透视图中的类称为实现类(implementationclass)OOAD36不同透视图示例ConceptualPerspective(domainmodel)RawUMLclassdiagramnotationusedtovisualizereal-worldconcepts.SpecificationorImplementationPerspective(designclassdiagram)RawUMLclassdiagramnotationusedtovisualizesoftwareelements.2DiefaceValue:intgetFaceValue():introll()DiceGamedie1:Diedie2:Dieplay()DiceGameDiefaceValueIncludes21OOAD37•统一过程(UnifiedProcess,UP)是一个流行的、