uml对象技术与可视化建模基础.pptx

上传人:莉*** 文档编号:80070672 上传时间:2023-03-22 格式:PPTX 页数:99 大小:1.07MB
返回 下载 相关 举报
uml对象技术与可视化建模基础.pptx_第1页
第1页 / 共99页
uml对象技术与可视化建模基础.pptx_第2页
第2页 / 共99页
点击查看更多>>
资源描述

《uml对象技术与可视化建模基础.pptx》由会员分享,可在线阅读,更多相关《uml对象技术与可视化建模基础.pptx(99页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第 2 2 章章对象技术与可视化建模基础对象技术与可视化建模基础An Overview of Object Technology An Overview of Object Technology and Visual Modelingand Visual Modeling第1页/共99页-2-Review:An Approach to the Object-Oriented上升到面向对象面向对象技术概述定义、利益、研究内容面向对象技术发展历史(里程碑)、现状、未来面向对象与结构化扬弃而非否定上升到面向对象利用面向对象的观点认识客观问题第2页/共99页-3-学习线路图OOOOUMLOOAOOD

2、DP Case-Study 学学 习习 线线 路路 图图第3页/共99页-4-Agenda 1 Object and ClassObject and ClassFour Principles of OOGeneralization and PolymorphismPrinciples of Visual ModelingThe UMLProcess and visual modeling第4页/共99页-5-ObjectInformally,an object represents an entity,either physical,conceptual,or softwarePhysical

3、 entityConceptual entitySoftware entity化学过程化学过程 链表链表 第5页/共99页-6-Object-Formal DefinitionAn object is an entity with a well-defined boundary and identityidentity that encapsulates statestate and behaviorbehavior.State is represented by attributesattributes and relationshipsrelationships.Behavior is r

4、epresented by operations,methods,and state machines.ObjectOperationsAttributes第6页/共99页-7-对象的标识每一个对象都有一个唯一的标识,即使其状态有可能与其它对象一样班机班机 747 on 11/10班机班机 747 on 11/11班机班机 747 on 11/12第7页/共99页-8-对象的标识Professor“J Clark”teaches BiologyProfessor“J Clark”teaches Biology第8页/共99页-9-对象的状态一个对象的状态是它反映于现实世界的一系列属性:参数的数

5、值(也就是,与对象有关系的数据)它与其它对象的关系可能的状态:可能的状态:停泊停泊 运营运营着陆着陆 终止终止班机班机 747747第9页/共99页-10-对象的状态State is a condition or situation during the life of an object,which satisfies some condition,performs some activity,or waits for some event.The state of an object normally changes over time.Name:J ClarkEmployee ID:56

6、7138Date Hired:July 25,1991Status:TenuredDiscipline:FinanceMaximum Course Load:3 classesName:J ClarkEmployee ID:567138HireDate:07/25/1991Status:TenuredDiscipline:FinanceMaxLoad:3Professor Clark第10页/共99页-11-对象的行为定义当其它对象发出请求时,该对象如何反应由为对象定义的一系列操作决定班机班机 747核对出发时间核对出发时间(返回返回 9:27)机票代理机票代理第11页/共99页-12-对象的

7、行为Behavior determines how an object acts and reacts.The visible behavior of an object is modeled by a set of messages it can respond to(operations that the object can perform).Professor ClarkProfessor Clarks behaviorSubmit Final GradesAccept Course OfferingTake Sabbatical Set Max LoadSubmitFinalGrad

8、es()AcceptCourseOffering()TakeSabbatical()SetMaxLoad()第12页/共99页-13-Sample-An Object第13页/共99页-14-Representing Objects in the UMLAn object is represented as a rectangle with an underlined name.Named ObjectNamed ObjectAnonymous ObjectAnonymous Object第14页/共99页-15-ClassA class is a description of a set o

9、f objects that share the same attributesattributes,operationsoperations,relationshipsrelationships,and semanticssemantics.An object is an instance of a class.A class is an abstractionabstraction in that it Emphasizes relevant characteristics.Suppresses other characteristics.第15页/共99页-16-Sample-A Cla

10、ssClassEmployeePropertiesNameAddressPositionSalaryStart DateEnd DateBehaviorHireFirePromoteIncrease SalaryRetire第16页/共99页-17-Representing Classes in the UMLA class is represented using a rectangle with compartments.属性属性操作操作第17页/共99页具有相同特征和操作的对象可以放到类中。具有相同特征和操作的对象可以放到类中。在下面这副图中您看到了什么类在下面这副图中您看到了什么类?类

11、第18页/共99页对象的类您看到了几个类?第19页/共99页-20-属性属性是类的特征或特性属性的值是某一特定对象的属性值在类中属性名必须是唯一的每一个类的实例都有为这个类定义的所有属性的值银行帐户类属性银行帐户类属性帐号帐号银行名称银行名称拥有者拥有者金额金额Mary的银行帐户属性值的银行帐户属性值12345678First National BankMary Smith第20页/共99页-21-属性取决于视点n 从从销售人员销售人员的角度的角度 n 型号型号n 价格价格n 颜色颜色n 里程数里程数一辆汽车具有的一辆汽车具有的属性属性:n 从从维修人员维修人员的角度的角度 n 马达类型马达类

12、型n 传动类型传动类型n 维修记录维修记录第21页/共99页-22-操作对象的行为是由为此对象定义的一系列操作决定的操作访问或修改对象的属性值一个类可能同时存在多个实例,也可能在某一时刻没有实例一个类的所有实例都可以使用在这个类中定义的操作第22页/共99页-23-类和对象对象实体类抽象数据类型计算机世界计算机世界实实例例化化抽抽 象象映映 射射映映 射射现实世界现实世界第23页/共99页-24-类是生成对象的模板类是生成对象的模板类的定义中包含有产生和删除对象的操作一个类定义了使用哪种数据表示法来描述属性每一个实例都采用有属性值的数据表示法一个类通过一系列操作来定义行为这种操作能在每个实例中

13、激活班机班机Flight 187Flight 121Flight 747第24页/共99页-25-类和对象的关系每一个对象都是某一个类的实例每一个类在某一时刻都有零个或更多的实例类是静态的;它们的存在、语义和关系在执行前就已经定义好了对象是动态的;它们在程序执行时可以被创建和删除第25页/共99页-26-Sample-Object and Class现实世界中的学生对象和对Student类的建模BobJohnKateBeverlyStudent属性方法一些学生对象Student类第26页/共99页-27-Agenda-2Object and Class Four Principles of O

14、OFour Principles of OOGeneralization and PolymorphismPrinciples of Visual ModelingThe UMLProcess and visual modeling第27页/共99页-28-Basic Principles of Object OrientationObject OrientationObject OrientationA Ab bs st tr ra ac ct ti io on nE En nc ca ap ps su ul la at ti io on nMMo od du ul la ar ri it

15、ty yH Hi ie er ra ar rc ch hy y第28页/共99页-29-抽象抽象 抽象(abstraction)就是过滤掉对象的一部分特性和操作,直到只剩下所需要的属性和操作。一些权威认为抽象对于建模者来说是最重要的技术,也就是说要搞清楚什么应该纳入模型中,什么应该舍去。抽取共同性抽取共同性例如,准备编制游戏软件,其中需要实现不同人物使用魔法的功能。每个人物具有不同的魔法,并具备使用魔法的行为,抽象得到的人物类图如:第29页/共99页-30-Example:Abstraction一个项目的抽象依赖于定义抽象的上下文一个项目的抽象依赖于定义抽象的上下文第30页/共99页-31-封

16、装性-EncapsulationHides implementation from clients.Clients depend on interface.第31页/共99页-32-封装性封装(encapsulation)是软件模块化思想的体现,也是面向对象的根本之一封装实现信息隐藏和数据抽象信息隐藏的出发点:对象的私有数据不能被外界存取,只能以合法的手段访问将数据抽象为一组行为,而不是内部的具体数据结构,把用户隔离在细节之外,从而使得软件各个部分依赖于抽象层,各模块获得自由,可以变化细节,可以替换第32页/共99页-33-Professor Clark needs to be able to

17、 teach four classes in the next semester.SubmitFinalGrades()AcceptCourseOffering()TakeSabbatical()Professor ClarkSetMaxLoad()Name:J ClarkEmployee ID:567138HireDate:07/25/1991Status:TenuredDiscipline:FinanceMaxLoad:4SetMaxLoad(4)第33页/共99页-34-为什么要封装结构化程序设计:程序=算法+数据结构全局数据全局数据算法算法一个大问题:如何保证数据的一致性?第34页/共

18、99页-35-范例:数据一致性class class ShippingAddress publicpublic long cityCode;long cityCode;publicpublic String address;String address;城市代码城市代码例如:北京为例如:北京为0101上海为上海为0202邮政地址邮政地址“北京朝阳区静安北京朝阳区静安里里6 6号号”操作这个数据结构的程序员,必须严格遵守一系列业务逻辑规则,否则很容易破坏数据的一致性结构化程序设计处理大项目时,多人协同开发时,本质上无法保证数据的一致性class class ShippingAddress pri

19、vateprivate long cityCode;long cityCode;privateprivate string address;string address;publicpublic long ModifyAddress(String address)long ModifyAddress(String address)第35页/共99页-36-信息隐藏保证数据一致性通过信息隐藏:1.外围代码无法随意访问底层数据,只能以合乎规范的方式操作数据2.保证数据一致性的逻辑只需正确开发一次,便可以供所有人反复使用3.业务逻辑知识被局限起来,协同开发难度降低信息隐藏是面向对象更适应大型软件开发

20、的根本原因之一第36页/共99页-37-数据隐藏的实现:C文件域内的数据隐藏,粒度太粗/*本文件域的私有数据*/static int use_count=0;void func(int arg)+use_count;C的结构体无数据隐藏机制:struct SimpleObject_t int myInteger;void(*setInteger)(int);第37页/共99页-38-数据隐藏的实现:C+用private访问级别关键字定义私有数据,隐藏内部数据struct SimpleObject private:int myInteger;public:void setInteger(int

21、i);SimpleObject(int i=0):myInteger(i)使用:SimpleObject so(8);so.myInteger=16;/compile errorso.setInteger(16);/OKC+对于对象私有数据的隐藏,完全是靠编译器保证,而由于C+过于强大的指针运算能力,编译器很容易被欺骗,所以第38页/共99页-39-1#include 2 using namespace std;3 4 5 class A6 7 private:8 /a&b are private members of class A9 int a;10 double b;11 public:

22、12 /initialize a&b as value 013 A():a(0),b(0)14 15 public:16 /for display the value of a&b17 int GetA();18 double GetB();19;20 21 int A:GetA()22 23 return a;24 25 26 double A:GetB()27 28 return b;29 30 第39页/共99页-40-31 int _tmain(int argc,_TCHAR*argv)32 33 A test;34 35 cout before pointer access:n36

23、test.a=test.GetA()n37 test.b=test.GetB()n endl;38 43 /value changing by pointer!44 *privateA=1;45 *privateB=2.5;46 47 cout after pointer access:n test.a=test.GetA()n test.b=test.GetB()n endl;50 return 0;51 39 /access object test of class A by pointer40 int*privateA=reinterpret_cast(&test);41 double*

24、privateB=reinterpret_cast(&test)+1;42 运行后输出结果为:before pointer access:test.a=0test.b=0after pointer access:test.a=1第40页/共99页-41-Java中的数据隐藏soSimpleObject对象实体int myInteger void setInteger(int i)虽然so本身也是指针(在Java里叫做引用reference),但是Java没有提供任何指针运算,因此无法骗过编译器,能够完全保证私有成员数据不被非法访问。第41页/共99页-42-模块性-ModularityBrea

25、ks up something complex into manageablemanageable piecesHelps people understand complex systemsCohesion(内聚),Coupling(耦合)Class,Component,Package第42页/共99页-43-模块化例子For example,break complex systems into smaller modules.Billing SystemCourse Registration SystemCourse Catalog SystemStudent Management Syst

26、em第43页/共99页-44-PackageA general purpose mechanism for organizing elements into groupsA model element that can contain other model elements.A package can be used:To organize the model under development.As a unit of configuration management.第44页/共99页-45-A Package Can Contain ClassesThe Package,Univers

27、ity Artifacts,contains one package and five classes第45页/共99页-46-层次性-HierarchyAny ranking or ordering of abstractions into a tree-like structure Types of Hierarchy:Inheritance,AggregationShapeShapeTwoDimensionalShapeTwoDimensionalShapeThreeDimensionalShapeThreeDimensionalShapeCircleCircleSquareSquare

28、TriangleTriangleSphereSphereCubeCubeTetrahedronTetrahedronIncreasingIncreasingabstractionabstractionDecreasingDecreasingabstractionabstractionElements at the same level of the hierarchy should be at the Elements at the same level of the hierarchy should be at the same level of abstractionsame level

29、of abstraction第46页/共99页-47-Agenda-3Object and ClassFour Principles of OO Generalization and PolymorphismGeneralization and PolymorphismPrinciples of Visual ModelingThe UMLProcess and visual modeling第47页/共99页-48-GeneralizationA relationshiprelationship among classes where one class shares the structu

30、re and/or behavior of one or more classesDefines a hierarchy of abstractions in which a subclasssubclass inherits from one or more superclassessuperclassesSingle inheritanceMultiple inheritanceIs an“is a kind of”relationship.第48页/共99页-49-范例:单一继承One class inherits from another第49页/共99页-50-范例:多重继承A cl

31、ass can inherit from several other classesUse multiple inheritance only when needed and Use multiple inheritance only when needed and always with caution!always with caution!第50页/共99页-51-What Is Inherited?A subclass inherits its parents attributesattributes,operationsoperations,and relationshipsrela

32、tionshipsA subclass may:Add additional attributes,operations,relationshipsRedefine inherited operations(Use caution!)Common attributes,operations,and/or relationships are shown at the highest applicable level in the hierarchy第51页/共99页-52-范例:继承什么?class Student protected string name;public string getN

33、ame()public Account theAccount;class GraduateStudent extends Student 派生类(子类)从基类(超类、父类)中派生,继承了基类中全部的public和protected数据成员和方法。所以即使GraduateStudent中没有定义getName(),也会从Student中得到getName()方法的全部实现派生类也会继承基类中的关系,因此GraduateStudent与Account也有聚合关系第52页/共99页-53-继承的原始目的在面向对象思想发展的初期,通过继承复用代码曾经被认为是面向对象最重要的目标之一当时人们的想法是:从

34、基类获得大部分成熟的代码,实现主要的功能,而修改必要的部分,实现特色功能很遗憾,实践中人们发现无法达成事先预期的效果第53页/共99页-54-继承并非代码复用的最佳机制继承在代码复用方面不如其它方式灵活有效比如函数库代码复用在今天的意义不象先前预期的那么大,原因是:代码只是细节,系统由接口定义。另外软件开发的人力资源越来越丰富,开发难度大幅降低但是继承所提供的代码复用仍然是一项重要的“福利”,应当善加利用今天继承的主要意义在于为实现多态铺平了道路第54页/共99页-55-What Is Polymorphism?The ability to hide many different implem

35、entations behind a single interface第55页/共99页-56-范例:多态 abstract class Shape public abstract void draw();class Rectangle extends Shape /覆盖覆盖(override)基类方法基类方法 public void draw()./*绘制矩形绘制矩形*/class Circle extends Shape /覆盖覆盖(override)基类方法基类方法 public void draw()/*绘制圆形绘制圆形*/第56页/共99页-57-虚函数多态class Shape p

36、ublic:virtual void Draw(void);class Circle:public Shapepublic:virtual void Draw(void);class Sphere:public Shapepublic:virtual void Draw(void);void DrawShape(Shape*aShape)aShape-Draw();main()Shape aShape;Circle aCircle;Sphere aSphere;DrawShape(&aShape);DrawShape(&aCircle);DrawShape(&aSphere);第57页/共99

37、页-58-应用多态性假设我们有一个数组sharr,里面放着一排Shape,但是不知道哪些是Rectangle,哪些是Circle。利用多态性,我们可以:;+i)Shape shape=(Shape)sharri;shape.draw();遍历整个数组的过程中,各个Shape自己知道应当如何在画布上绘制自己。shape.draw()这同一行代码在shape指向不同的对象时表现出不同的行为,这就是所谓多态性第58页/共99页-59-Agenda-4Object and ClassFour Principles of OOGeneralization and Polymorphism Princip

38、les of Visual ModelingPrinciples of Visual ModelingThe UMLProcess and visual modeling第59页/共99页-60-What Is a Model?A model is a simplification(简化)of reality第60页/共99页-61-Why Model?Modeling achieves four aims:Helps you to visualizevisualize a system as you want it to be.Permits you to specifyspecify th

39、e structure or behavior of a system.Gives you a template that guides you in constructingconstructing a system.DocumentsDocuments the decisions you have made.You build models of complex systems because you cannot comprehend such a system in its entiretyYou build models to better understand the system

40、 you are developing第61页/共99页-62-建模的意义模型是对现实的简化,建模是为了更好地理解系统。模型帮助我们按照实际情况或需求对系统可视化;(掌握不了文字,画幅画代替)模型允许我们详细说明系统的结构、行为;模型给出了一个构造系统的模板;模型对我们作出的决策进行文档化。(先有文档,再有代码)第62页/共99页-63-The Importance of ModelingPaper AirplanePaper AirplaneFighter JetFighter JetLess ImportantLess ImportantMore ImportantMore Importa

41、nt第63页/共99页-64-Principle 1:The Choice of Model Is ImportantThe models you create profoundly influence how a problem is attacked and how a solution is shapedIn software,the models you choose greatly affect your world viewEach world view leads to a different kind of system第64页/共99页-65-Principle 2:Leve

42、ls of Precision May DifferEvery model may be expressed at different levels of precision(精度)The best kinds of models let you choose your degree of detail,depending on:Who is viewing the modelWhy they need to view it第65页/共99页-66-Principle 3:The Best Models Are Connected to RealityAll models simplify r

43、ealityA good model reflects potentially fatal characteristicsThe trick is to be sure that your simplifications dont mask any important details.A good model reveals any potentially fatal flaws in design第66页/共99页-67-Principle 4:No Single Model Is SufficientNo single model is sufficient.Every non-trivi

44、al system is best approached through a small set of nearly independent models.Create models that can be built and studied separately,but are still interrelated第67页/共99页-68-建模的原理选择创建什么模型对如何动手解决问题和如何形成解决方案有意义深远的影响。三只小猪盖房子 摩天大厦每一种模型可以在不同的精度级别上表示。最好的模型可以让你根据观察的角色及原因选择它的详细程度。对每个系统最好用一组几乎独立的模型去处理。飞机模型第68页

45、/共99页-69-Agenda-5Object and ClassFour Principles of OOGeneralization and PolymorphismPrinciples of Visual Modeling The UMLThe UMLProcess and visual modeling第69页/共99页-70-The UMLUMLYou Must LearnUMLUnified Modeling LanguageUML是一种标准的图形化建模语言,它是面向对象分析与设计的一种标准表示,它:不是一种可视化的程序设计语言,而是一种可视化的建模语言建模语言不是工具或知识库的规

46、格说明,而是一种建模语言规格说明,是一种表示的标准标准不是过程,也不是方法,但允许任何一种过程和方法使用它第70页/共99页-71-What Is the UML?The UML is a language forVisualizingSpecifyingConstructingDocumenting the artifacts of a software-intensive systemUnified Modeling LanguageUnified Modeling Language(统一建模语言)是对象管理组织(统一建模语言)是对象管理组织(OMGOMG)制定制定的一个的一个通用通用的、

47、的、可视化可视化的建模语言建模语言标准,可以用来标准,可以用来可视化可视化(visualizevisualize)、描述描述(specifyspecify)、)、构造构造(constructconstruct)和)和文档化文档化(documentdocument)软件密集型系统的各)软件密集型系统的各种工件(种工件(artifactsartifacts,又译制品),又译制品)第71页/共99页-72-UML是标准的符号 1.1.用用UMLUML画图很容易画图很容易摆脱符号烦恼摆脱符号烦恼全心面对问题全心面对问题2 2.UMLUML仅仅是一种表达形式仅仅是一种表达形式用好用好UMLUML首先需要

48、掌握首先需要掌握OOADOOAD的基本原则和的基本原则和方法方法,并在一定的,并在一定的软件开发过程软件开发过程(如统一过程(如统一过程UP/USDP/RUPUP/USDP/RUP、XPXP等)的指导下进行有取等)的指导下进行有取舍的运用舍的运用但知道要画什么是困难的!但知道要画什么是困难的!第72页/共99页-73-选择UML-1Martin Flower:如果你正在使用其它的旧技术,我强列建议您马上转用UML,因为它明显地将成为符号系统的统一标准。如果你正在考虑开始使用设计符号来工作,UML是一个好的选择,因为它已经统治业界了 第73页/共99页-74-选择UML-2UML不是万能的,很多

49、场合并不适合使用1)传统的做法已完全适用完全适用,对OOAD的要求也不高,项目非常成功,无任何改进的必要2)开发的系统比较简单系统比较简单,直接用源码配上少量的文字就能解决问题,软件开发文档也无需添加图形来辅助说明3)开发人员更习惯于习惯于直接阅读源码,用源码交流,这样做不影响工作效率和质量4)开发的系统本身不属于不属于OO方法、UML适用范围第74页/共99页-75-选择UML-3很多情况下,推荐使用UML:1)OOOO方法方法是项目决定采用的方法论,是整个项目或产品成功的关键2)开发人员感觉用源码说明不了真正的问题,希望利用可视化建模语言简化文档简化文档,提高交流效率,准确抓住问题本质3)

50、系统的规模和设计都比较复杂比较复杂,需要用图形抽象地表达复杂的概念,增强设计的灵活性、可读性和可理解性,以便暴露深层次的设计问题,降低开发风险4)组织希望记录记录已成功项目、产品的公共设计方案,在开发新项目时可以参考、重用过去的设计,以节省投入,提高开发效率和整体成功率5)有必要采用一套通用通用的图形语言和符号体系描述组织的业务流程和软件需求,促进业务人员、软件开发人员之间一致、高效的交流第75页/共99页-76-UML发展背景面向对象建模语言产生于1970年代中期1990年代初,建模语言数量达到50多种众多语言各有千秋,缺乏通用性语言之间的细小差别妨碍了用户的交流1990年代中期,三位主要的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁