面向对象与UML建模作业.docx
- 文档编号:2206125
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:18
- 大小:96.53KB
面向对象与UML建模作业.docx
《面向对象与UML建模作业.docx》由会员分享,可在线阅读,更多相关《面向对象与UML建模作业.docx(18页珍藏版)》请在冰豆网上搜索。
面向对象与UML建模作业
面向对象技术作业
1.通过WWW.OMG.ORG网站了解UML。
大型的企业应用程序不仅仅是一堆代码模块。
他们必须有能支持可扩展性、安全性和在有压力的环境下能健壮的执行的结构方式。
建模是在编码之前的软件应用程序设计。
建模是一个大型软件项目重要的一部分,有助于介质,甚至小项目。
在软件开发中,一个模型扮演了类似蓝图和其他计划(站点地图、海拔、物理模型)在摩天大楼的建设使用一个模型的角色,,那些负责软件开发项目的成功可以保证自己业务功能是完整和正确的,终端用户的需要得到满足,和程序设计支持要求健壮性、可伸缩性、安全性、可扩展性和其他特性,在实现代码中呈现的变的更困难和昂贵。
调查显示,大型软件项目有一个巨大的失效概率——事实上,更多的是一个大型的软件应用程序将无法满足所有的需求在时间和预算比,它就会成功。
如果你运行这些项目,你需要做所有你可以增加成功的几率,建模是唯一的方法来可视化您的设计和检查它反对要求你的员工之前开始的代码。
统一建模语言(unifiedmodelinglanguage,UML)是一种面向对象的建模语言,它是运用统一的、标准化的标记和定义实现对软件系统进行面向对象的描述和建模。
它统一了GradyBooch、JimRumbangh、和IvarJacobson三位大师的面向对象建模描述语言(Booch,OMT、OOSE),并对其做了进一步的发展,最终成为广泛接受的面向对象建模语言。
UML已被OMG所采用,目前成为业界的标准。
UML是用模型来描述系统的结构或静态特征以及行为或动态特征的,它从不同的视角为系统的架构建模形成系统的不同视图(view)。
在UML中主要包括的视图为静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图和模型管理视图。
UML2.0定义了13个类型的图,分为三个类别:
六图类型表示静态应用程序结构;三个代表普通类型的行为,和四个代表交互作用的不同方面:
结构图包括类图、对象图,组件图,复合结构图表,包图和部署图。
行为图包括用例图(使用一些方法在需求收集);活动图、状态机图、交互图。
所有来自更一般的行为图,包括序列图,通信图,计时图和交互概览图。
静态视图是对在应用领域中的各种概念以及与系统实现相关的各种内部概念进行的建模。
由于这种视图不描述与时间有关的系统行为所以我们称之为是静态的,描述与时间相关的系统行为我们在其他视图中进行描述。
静态视图主要是由类与类之间的关系构成。
这些关系包括:
关联、泛化和依赖关系,我们又把依赖关系具体可以再分为使用和实现关系。
用例视图描述了系统的参与者与系统进行交互的功能,是参与者所能观察和使用到的系统功能的模型图。
一个用例是系统的一个功能单元,是系统参与者与系统之间进行的一次交互作用。
交互视图描述了执行系统功能的各个角色之间相互传递消息的顺序关系,是描绘系统中各种角色或功能交互的模型。
交互视图显示了跨越多个对象的系统控制流程。
我们通过不同对象间的相互作用来描述系统的行为,是通过两种方式进行的,一种是以独立的对象为中心进行描述,另外一种方式是以相互作用的一组对象为中心进行描述。
交互视图可运用两种图的形式来表示:
序列图和协作图。
状态机视图是通过对象的各种状态来建立模型来描述对象随时间变化的动态行为。
状态机视图也是通过不同对象间的相互作用来描述系统的行为的,不同的它是以独立的对象为中心进行描述。
状态机视图中,每一个对象都拥有自己的状态,这些状态之间的变化是通过事件进行触发的。
对象被看成为通过事件进行触发并做出相应的动作来与外界的其他对象进行通信的独立实体。
事件表达了对象可以被使用操作,同时反映了对象状态的变化。
活动视图是一种特殊形式的状态机视图,是状态机的一个变体,用来描述执行算法的工作流程中涉及的活动。
通常活动视图用于对计算流程和工作流程建模。
活动视图中的状态表示计算过程中所处的各种状态。
活动视图是在假定整个计算处理的过程中没有外部事件引起的中断的条件下进行描述的,否则普通的状态机更加适合于描述这种情况。
物理视图是对应用自身的实现结构建模,例如系统的构件组织情况以及运行节点的配置等等。
物理视图提供了将系统中的类映射成物理构件和节点的机制。
物理视图提供了将系统中的类映射成物理构件和节点的机制。
系统模型的大部分内容反映了系统的逻辑和设计方面的信息,并且独立于系统的最终实现单元。
模型管理视图是对模型自身组织进行的建模,是由自身的一系列模型元素(如类、状态机和用例)构成的包所组成的模型。
模型是从某一观点以一定的精确程度对系统所进行的完整描述。
从不同的视角出发,对同一系统可能会建立多个模型,例如有系统分析模型和系统设计模型等等。
模型是一种特殊的包。
一个包(package)还可以包含其他的包。
整个系统的静态模型实际上可看成是系统最大的包,它直接或间接包含了模型中的所有元素内容。
如果要开始第一个基于uml的开发项目。
主要需要做以下几步:
1)选择一个方法:
一个方法的过程,你正式定义用于收集需求,对它们进行分析和设计一个应用程序中,以满足他们在各方面。
有许多方法,每个不同的以某种方式或从其他途径。
有很多原因我们可能比另一种方法为您的特定项目:
例如,一些更适合大型企业应用程序,而另一些则用来设计小型嵌入式或对安全性要求苛刻的系统。
在另一个轴,一些方法更好地支持大量的建筑师和设计师的工作在相同的项目,而其他人工作更好的使用时,由一个人或一个小群体。
OMG,作为一个独立于供应商的组织,没有任何方法的意见。
帮助你开始选择最适合你的方式。
2)选择一个UML开发工具。
因为大部分(尽管不是全部)基于uml的工具实现一个特定的方法,在某些情况下它可能不是实用工具,然后选择一个想用一个方法,它不是建立。
(对于其他工具/方法的组合,这可能不是个问题,也可能是容易解决。
)但是,一些方法已经实现在多个工具,这不是严格意义上的一个选择环境。
你可能会发现一个工具,适合您的应用程序或组织,你愿意开关的方法来使用它。
如果是这样的话,去吧,我们的建议来选择一个方法首先是一般,不得适用于一个特定的项目。
另一种可能性:
你可能会找到一种方法,你喜欢,这不是实现的工具,适合您的项目的规模,或你的预算,所以你必须开关。
如果这两种情况下发生的,你要尽量选择一个替代方法,不会相差太多从你的首选最初。
3)得到培训:
你和你的员工(除非你足够幸运雇佣UML经验丰富的架构师)将需要在UML中训练最好是得到培训,教如何使用你选择的工具与你所选择的方法,通常是通过提供工具供应商或方法论者。
如果你决定不走这条路线,看看OMG的培训页面。
2.比较传统技术,OOT有哪些优点?
OOT(ObjectOrientedtechnology):
面向对象技术。
面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。
它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定性。
它将数据和对数据的操作封装在一起,作为一个整体来处理,采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型——类,并且考虑不同类之间的联系和类的重用性。
类的集成度越高,就越适合大型应用程序的开发。
另一方面,面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际。
事件驱动程序的执行围绕消息的产生与处理,靠消息循环机制来实现。
在实际编程时可以采用搭积木的方式来组织程序,站在“巨人”的肩上实现自己的目标。
在结构上,面向对象程序与面向过程程序有很大不同。
面向对象程序由类的定义和类的使用两部分组成:
在主程序中定义各对象并规定他们之间传替消息的规律,程序中的一切操作都通过向对象发送消息来实现;对象接到消息后,启动消息处理函数完成相应的操作。
面向对象程序设计方法出现之前,程序员用面向过程的方法开发程序。
面向过程的方法把密切相关、相互依赖的数据和对数据的操作相互分离这种实质上的依赖与形式上的分离使得大型程序不但难以编写,而且难以调试和修改。
面向对象程序的设计方法使得程序结构清晰、简单,提高了代码的重用性,有效减少了程序的维护量,提高了软件的开发效率。
使用面向对象思想进行开发有以下优点:
(1)易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
(2)质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
(3)效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。
使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
(4)易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
面向对象技术使软件的开发超越了过程式编程,而进入了简化应用程序开发的可重用编程世界。
不象旧的编程方式,当程序的体积增长时,程序维护和调试并不变得更复杂。
对象技术在两个级别发挥作用:
在数据级别,对象技术可以集成一个机构中的许多不同类型的信息,过去的信息已经不再兼容了。
在程序开发级别,对象技术提供模块化程序构造,这时,程序员在现有对象的基础之上进行开发。
对象可以被其他对象再使用,以利用它们的过程,从而消除了当再次需要它们的时候,必须每次都重写这些代码。
由于无需改变或分解整个系统,所以再设计或扩展系统是很容易的。
实际上,是放弃或修改这些模块,并且增加新的模块以提供增强的功能。
面向对象技术被认为对实现未来的分布式系统是很有生命力的。
这样,系统的复杂性可以通过实现消息传递服务(如对象请求代管器)的模型而简化。
对象只是简单地请求服务,并且其他对象提供这些服务。
开发人员不需要更多地知道对象将在上面通信的系统情况。
事实上,对象技术为局部使用、将来扩展到异构分布式环境、设计应用提供了途径。
3.举例说明C++和Java实现多态的各种技术。
多态(polymorphism)一词最初来源于希腊语polumorphos,含义是具有多种形式或形态的情形。
在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。
(1)C++实现多态的技术
多态是一种不同的对象以单独的方式作用于相同消息的能力,这个概念是从自然语言中引进的。
C++的多态性是C++实现面向对象技术的基础。
具体的说,通过一个指向基类的指针调用虚成员函数的时候,运行时系统将能够根据指针所指向的实际对象调用恰当的成员函数实现。
和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义,其实现方式有4种,分别是强制多态、重载多态、类型参数化多态和包含多态.其中,类型参数化多态和包含多态称为一般多态性,用来系统地描述语义上相关的一组类型;强制多态和重载多态称为特殊多态性,用来描述语义上无关联的类型间的关系。
包含多态在C++中公有继承关系是一种包含关系.派生类直接公有继承基类定义中的属性或服务,如果一个程序段既能处理基类的对象也能处理基类的派生类的对象,该程序段称为多态程序段.C++采用虚函数实现包含多态.一个函数一旦声明为虚函数,在编译阶段,编译器并不按照它的静态类型为它生成调用此函数的版本,而只为它生成虚函数表(表中存放与此函数同名、同参数、同返回值的虚函数的地址).在程序运行时,再根据实际对象的类型,查虚函数表,找出相应版本的函数后,才能使用它.因此,这种不是在编译阶段而是在运行阶段动态确定应使用哪一个虚函数的方式叫动态束定.要把一个函数声明为虚函数,只要在原函数的声明之前加上virtul关键字即可.利用虚函数进行动态束定,必须用指向基类的指针或引用来访问它,这是因为C++是类型系统,在编译阶段,C++的变量名或函数名就与相应的存储单元联系起来,使用名字也就是使用对应的存储单元.这有利于检查类型系统,并可产生高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 UML 建模 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)