




免费预览已结束,剩余94页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML建模语言及工具,第2章对象技术与可视化建模基础AnOverviewofObjectTechnologyandVisualModeling,-3-,Review:AnApproachtotheObject-Oriented,上升到面向对象面向对象技术概述定义、利益、研究内容面向对象技术发展历史(里程碑)、现状、未来面向对象与结构化扬弃而非否定上升到面向对象利用面向对象的观点认识客观问题,-4-,学习线路图,-5-,Agenda1,ObjectandClassFourPrinciplesofOOGeneralizationandPolymorphismPrinciplesofVisualModelingTheUMLProcessandvisualmodeling,-6-,Object,Informally,anobjectrepresentsanentity,eitherphysical,conceptual,orsoftwarePhysicalentityConceptualentitySoftwareentity,化学过程,-7-,Object-FormalDefinition,Anobjectisanentitywithawell-definedboundaryandidentitythatencapsulatesstateandbehavior.Stateisrepresentedbyattributesandrelationships.Behaviorisrepresentedbyoperations,methods,andstatemachines.,-8-,对象的标识,每一个对象都有一个唯一的标识,即使其状态有可能与其它对象一样,班机747on11/10,班机747on11/11,班机747on11/12,-9-,对象的标识,Professor“JClark”teachesBiology,Professor“JClark”teachesBiology,-10-,对象的状态,一个对象的状态是它反映于现实世界的一系列属性:参数的数值(也就是,与对象有关系的数据)它与其它对象的关系,可能的状态:停泊运营着陆终止,班机747,-11-,对象的状态,Stateisaconditionorsituationduringthelifeofanobject,whichsatisfiessomecondition,performssomeactivity,orwaitsforsomeevent.Thestateofanobjectnormallychangesovertime.,Name:JClarkEmployeeID:567138DateHired:July25,1991Status:TenuredDiscipline:FinanceMaximumCourseLoad:3classes,Name:JClarkEmployeeID:567138HireDate:07/25/1991Status:TenuredDiscipline:FinanceMaxLoad:3,ProfessorClark,-12-,对象的行为,定义当其它对象发出请求时,该对象如何反应由为对象定义的一系列操作决定,-13-,对象的行为,Behaviordetermineshowanobjectactsandreacts.Thevisiblebehaviorofanobjectismodeledbyasetofmessagesitcanrespondto(operationsthattheobjectcanperform).,ProfessorClark,ProfessorClarksbehaviorSubmitFinalGradesAcceptCourseOfferingTakeSabbaticalSetMaxLoad,SubmitFinalGrades(),AcceptCourseOffering(),TakeSabbatical(),SetMaxLoad(),-14-,Sample-AnObject,-15-,RepresentingObjectsintheUML,Anobjectisrepresentedasarectanglewithanunderlinedname.,NamedObject,AnonymousObject,-16-,Class,Aclassisadescriptionofasetofobjectsthatsharethesameattributes,operations,relationships,andsemantics.Anobjectisaninstanceofaclass.AclassisanabstractioninthatitEmphasizesrelevantcharacteristics.Suppressesothercharacteristics.,-17-,Sample-AClass,ClassEmployee,PropertiesNameAddressPositionSalaryStartDateEndDate,BehaviorHireFirePromoteIncreaseSalaryRetire,-18-,RepresentingClassesintheUML,Aclassisrepresentedusingarectanglewithcompartments.,属性,操作,具有相同特征和操作的对象可以放到类中。在下面这副图中您看到了什么类?,类,对象的类,您看到了几个类?,-21-,属性,属性是类的特征或特性属性的值是某一特定对象的属性值在类中属性名必须是唯一的每一个类的实例都有为这个类定义的所有属性的值,银行帐户类属性帐号银行名称拥有者金额,Mary的银行帐户属性值12345678FirstNationalBankMarySmith$1024.48,-22-,属性取决于视点,从销售人员的角度型号价格颜色里程数,一辆汽车具有的属性:,从维修人员的角度马达类型传动类型维修记录,-23-,操作,对象的行为是由为此对象定义的一系列操作决定的操作访问或修改对象的属性值一个类可能同时存在多个实例,也可能在某一时刻没有实例一个类的所有实例都可以使用在这个类中定义的操作,-24-,类和对象,对象,实体,类,抽象数据类型,计算机世界,实例化,抽象,映射,映射,现实世界,-25-,类是生成对象的模板,类是生成对象的模板类的定义中包含有产生和删除对象的操作一个类定义了使用哪种数据表示法来描述属性每一个实例都采用有属性值的数据表示法一个类通过一系列操作来定义行为这种操作能在每个实例中激活,班机,-26-,类和对象的关系,每一个对象都是某一个类的实例每一个类在某一时刻都有零个或更多的实例类是静态的;它们的存在、语义和关系在执行前就已经定义好了对象是动态的;它们在程序执行时可以被创建和删除,-27-,Sample-ObjectandClass,现实世界中的学生对象和对Student类的建模,Bob,John,Kate,Beverly,Student属性方法,一些学生对象,Student类,-28-,Agenda-2,ObjectandClassFourPrinciplesofOOGeneralizationandPolymorphismPrinciplesofVisualModelingTheUMLProcessandvisualmodeling,-29-,BasicPrinciplesofObjectOrientation,-30-,抽象,抽象(abstraction)就是过滤掉对象的一部分特性和操作,直到只剩下所需要的属性和操作。,一些权威认为抽象对于建模者来说是最重要的技术,也就是说要搞清楚什么应该纳入模型中,什么应该舍去。,抽取共同性,例如,准备编制游戏软件,其中需要实现不同人物使用魔法的功能。每个人物具有不同的魔法,并具备使用魔法的行为,抽象得到的人物类图如:,-31-,Example:Abstraction,一个项目的抽象依赖于定义抽象的上下文,-32-,封装性-Encapsulation,Hidesimplementationfromclients.Clientsdependoninterface.,-33-,封装性,封装(encapsulation)是软件模块化思想的体现,也是面向对象的根本之一封装实现信息隐藏和数据抽象信息隐藏的出发点:对象的私有数据不能被外界存取,只能以合法的手段访问将数据抽象为一组行为,而不是内部的具体数据结构,把用户隔离在细节之外,从而使得软件各个部分依赖于抽象层,各模块获得自由,可以变化细节,可以替换,-34-,ProfessorClarkneedstobeabletoteachfourclassesinthenextsemester.,SubmitFinalGrades(),AcceptCourseOffering(),TakeSabbatical(),ProfessorClark,SetMaxLoad(),Name:JClarkEmployeeID:567138HireDate:07/25/1991Status:TenuredDiscipline:FinanceMaxLoad:4,SetMaxLoad(4),-35-,为什么要封装,结构化程序设计:程序=算法+数据结构,全局数据,算法,算法,算法,算法,一个大问题:如何保证数据的一致性?,-36-,范例:数据一致性,classShippingAddresspubliclongcityCode;publicStringaddress;,城市代码例如:北京为01上海为02,邮政地址“北京朝阳区静安里6号”,操作这个数据结构的程序员,必须严格遵守一系列业务逻辑规则,否则很容易破坏数据的一致性结构化程序设计处理大项目时,多人协同开发时,本质上无法保证数据的一致性,classShippingAddressprivatelongcityCode;privatestringaddress;publiclongModifyAddress(Stringaddress),-37-,信息隐藏保证数据一致性,通过信息隐藏:1.外围代码无法随意访问底层数据,只能以合乎规范的方式操作数据2.保证数据一致性的逻辑只需正确开发一次,便可以供所有人反复使用3.业务逻辑知识被局限起来,协同开发难度降低信息隐藏是面向对象更适应大型软件开发的根本原因之一,-38-,数据隐藏的实现:C,文件域内的数据隐藏,粒度太粗/*本文件域的私有数据*/staticintuse_count=0;voidfunc(intarg)+use_count;C的结构体无数据隐藏机制:structSimpleObject_tintmyInteger;void(*setInteger)(int);,-39-,数据隐藏的实现:C+,用private访问级别关键字定义私有数据,隐藏内部数据structSimpleObjectprivate:intmyInteger;public:voidsetInteger(inti);SimpleObject(inti=0):myInteger(i)使用:SimpleObjectso(8);so.myInteger=16;/compileerrorso.setInteger(16);/OKC+对于对象私有数据的隐藏,完全是靠编译器保证,而由于C+过于强大的指针运算能力,编译器很容易被欺骗,所以,-40-,1#include2usingnamespacestd;345classA67private:8/a20,21intA:GetA()2223returna;242526doubleA:GetB()2728returnb;2930,-41-,31int_tmain(intargc,_TCHAR*argv)3233Atest;3435coutbeforepointeraccess:n36test.a=test.GetA()n37test.b=test.GetB()nendl;38,43/valuechangingbypointer!44*privateA=1;45*privateB=2.5;4647coutafterpointeraccess:ntest.a=test.GetA()ntest.b=test.GetB()nDraw();main()ShapeaShape;CircleaCircle;SphereaSphere;DrawShape(,-59-,应用多态性,假设我们有一个数组sharr,里面放着一排Shape,但是不知道哪些是Rectangle,哪些是Circle。利用多态性,我们可以:for(inti=0;isharr.length;+i)Shapeshape=(Shape)sharri;shape.draw();遍历整个数组的过程中,各个Shape自己知道应当如何在画布上绘制自己。shape.draw()这同一行代码在shape指向不同的对象时表现出不同的行为,这就是所谓多态性,-60-,Agenda-4,ObjectandClassFourPrinciplesofOOGeneralizationandPolymorphismPrinciplesofVisualModelingTheUMLProcessandvisualmodeling,-61-,WhatIsaModel?,Amodelisasimplification(简化)ofreality,-62-,WhyModel?,Modelingachievesfouraims:Helpsyoutovisualizeasystemasyouwantittobe.Permitsyoutospecifythestructureorbehaviorofasystem.Givesyouatemplatethatguidesyouinconstructingasystem.Documentsthedecisionsyouhavemade.YoubuildmodelsofcomplexsystemsbecauseyoucannotcomprehendsuchasysteminitsentiretyYoubuildmodelstobetterunderstandthesystemyouaredeveloping,-63-,建模的意义,模型是对现实的简化,建模是为了更好地理解系统。模型帮助我们按照实际情况或需求对系统可视化;(掌握不了文字,画幅画代替)模型允许我们详细说明系统的结构、行为;模型给出了一个构造系统的模板;模型对我们作出的决策进行文档化。(先有文档,再有代码),-64-,TheImportanceofModeling,PaperAirplane,FighterJet,LessImportant,MoreImportant,-65-,Principle1:TheChoiceofModelIsImportant,ThemodelsyoucreateprofoundlyinfluencehowaproblemisattackedandhowasolutionisshapedInsoftware,themodelsyouchoosegreatlyaffectyourworldviewEachworldviewleadstoadifferentkindofsystem,-66-,Principle2:LevelsofPrecisionMayDiffer,Everymodelmaybeexpressedatdifferentlevelsofprecision(精度)Thebestkindsofmodelsletyouchooseyourdegreeofdetail,dependingon:WhoisviewingthemodelWhytheyneedtoviewit,-67-,Principle3:TheBestModelsAreConnectedtoReality,AllmodelssimplifyrealityAgoodmodelreflectspotentiallyfatalcharacteristicsThetrickistobesurethatyoursimplificationsdontmaskanyimportantdetails.Agoodmodelrevealsanypotentiallyfatalflawsindesign,-68-,Principle4:NoSingleModelIsSufficient,Nosinglemodelissufficient.Everynon-trivialsystemisbestapproachedthroughasmallsetofnearlyindependentmodels.Createmodelsthatcanbebuiltandstudiedseparately,butarestillinterrelated,-69-,建模的原理,选择创建什么模型对如何动手解决问题和如何形成解决方案有意义深远的影响。三只小猪盖房子摩天大厦每一种模型可以在不同的精度级别上表示。最好的模型可以让你根据观察的角色及原因选择它的详细程度。对每个系统最好用一组几乎独立的模型去处理。飞机模型,-70-,Agenda-5,ObjectandClassFourPrinciplesofOOGeneralizationandPolymorphismPrinciplesofVisualModelingTheUMLProcessandvisualmodeling,-71-,TheUML,UMLYouMustLearnUMLUnifiedModelingLanguageUML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示,它:不是一种可视化的程序设计语言,而是一种可视化的建模语言不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准不是过程,也不是方法,但允许任何一种过程和方法使用它,-72-,WhatIstheUML?,TheUMLisalanguageforVisualizingSpecifyingConstructingDocumentingtheartifactsofasoftware-intensivesystem,UnifiedModelingLanguage(统一建模语言)是对象管理组织(OMG)制定的一个通用的、可视化的建模语言标准,可以用来可视化(visualize)、描述(specify)、构造(construct)和文档化(document)软件密集型系统的各种工件(artifacts,又译制品),-73-,UML是标准的符号,1.用UML画图很容易,摆脱符号烦恼,全心面对问题,2.UML仅仅是一种表达形式,用好UML首先需要掌握OOAD的基本原则和方法,并在一定的软件开发过程(如统一过程UP/USDP/RUP、XP等)的指导下进行有取舍的运用,但知道要画什么是困难的!,-74-,选择UML-1,MartinFlower:如果你正在使用其它的旧技术,我强列建议您马上转用UML,因为它明显地将成为符号系统的统一标准。如果你正在考虑开始使用设计符号来工作,UML是一个好的选择,因为它已经统治业界了,-75-,选择UML-2,UML不是万能的,很多场合并不适合使用1)传统的做法已完全适用,对OOAD的要求也不高,项目非常成功,无任何改进的必要2)开发的系统比较简单,直接用源码配上少量的文字就能解决问题,软件开发文档也无需添加图形来辅助说明3)开发人员更习惯于直接阅读源码,用源码交流,这样做不影响工作效率和质量4)开发的系统本身不属于OO方法、UML适用范围,-76-,选择UML-3,很多情况下,推荐使用UML:1)OO方法是项目决定采用的方法论,是整个项目或产品成功的关键2)开发人员感觉用源码说明不了真正的问题,希望利用可视化建模语言简化文档,提高交流效率,准确抓住问题本质3)系统的规模和设计都比较复杂,需要用图形抽象地表达复杂的概念,增强设计的灵活性、可读性和可理解性,以便暴露深层次的设计问题,降低开发风险4)组织希望记录已成功项目、产品的公共设计方案,在开发新项目时可以参考、重用过去的设计,以节省投入,提高开发效率和整体成功率5)有必要采用一套通用的图形语言和符号体系描述组织的业务流程和软件需求,促进业务人员、软件开发人员之间一致、高效的交流,-77-,UML发展背景,面向对象建模语言产生于1970年代中期1990年代初,建模语言数量达到50多种众多语言各有千秋,缺乏通用性语言之间的细小差别妨碍了用户的交流1990年代中期,三位主要的OO建模大师:Booch,Rumbaugh,Jacoson开始致力于建立统一建模语言的工作,-78-,三位面向对象大师,-79-,UML诞生,公众反馈,OOPSLA95UnifiedMethod0.8,工业化标准化统一化分散的各部分,Booch93OMT-2,1996.6和1996.10UML0.9&0.91,1997.9公布UML1.1,1997.1公布UML1.0,合作伙伴意见,1997.11.17UML1.1被OMG接纳为标准,Booch91OMT-1其他方法OOSE,-80-,UML统一,-81-,Agenda-6,ObjectandClassFourPrinciplesofOOGeneralizationandPolymorphismPrinciplesofVisualModelingTheUMLProcessandvisualmodeling,-82-,HowmuchyoucandependonUML?,TheUMLisnotaprocessormethodologyobject-orientedanalysisanddesignGuidelines(指导、准则)fordesignMuchmoreimportant:Skillindesigningwithobjects.,-83-,ALanguageIsNotEnoughtoBuildaSystem,-84-,WhatIsaProcess?,DefinesWhoisdoingWhat,Whentodoit,andHowtoreachacertaingoal.,-85-,开发过程概述,传统开发过程瀑布模型统一软件开发过程(RUP),-86-,传统开发过程,瀑布模型,Requirements,Analysis,Design,Implementation,Test,Time,-87-,OOAD的开发过程,大项目分解为一些子项目使用UML工具统一软件开发过程(RUP)是一个迭代、递增的开发过程,-88-,RUP的软件开发生命周期,-89-,OverviewoftheUnifiedProcess,TheUnifiedProcessisIterativeandincrementalUsecasedrivenArchitecture-centric,-90-,OOAD的开发过程,InceptionDefinethescopeoftheprojectanddevelopbusinesscase,ElaborationPlanproject,specifyfeatures,andbaselinethearchitecture,ConstructionBuildtheproduct,TransitionTransitiontheproducttoitsusers,-91-,MajorMilestones,-92-,PhasesandIterations,Aniterationisa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第三人称单数形式的辨别与应用:小学英语教案
- 我的老师敬爱的语文老师演讲稿10篇
- 供应链管理与物流合作协议规定事项表
- 食品营养学专业知识问答练习集
- 绿色发展理念对产业提质增效的影响
- 银行业风险管理测试卷
- 技术进步对高素质应用型人才培养的影响分析
- 教育用品类型及价格列表
- 跨学科合作促进地理学实践教学的多元化
- 智能仓储物流解决协议
- 动画制作与电影特效课件
- 四川省安全员《B证》考试题库及答案
- 单值-移动极差X-MR控制图-模板
- 江苏省戏剧学校辅导员招聘考试真题2022
- 军队保密协议书模板(标准版)
- Python语言编程基础PPT完整全套教学课件
- 2023年杭州中考科学(word版及详细答案)
- 安徽诺全药业有限公司年产105吨医药中间体及原料药项目环境影响报告书
- 2022年盐城市大丰区事业单位考试真题及答案
- 2017年福州市初中毕业班质量检测英语试卷及答案
- 性科学与生殖健康智慧树知到答案章节测试2023年武汉科技大学
评论
0/150
提交评论