




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程与实践中国水利水电出版社第8章面向对象与uml语言8.1传统方法学传统的生命周期方法学主要存在以下问题:(1)生产率提高的幅度远不能满足需要;(2)软件重用度很低;(3)软件仍然很难维护;(4)软件往往不能满足用户需要。
面向对象的方法学可以用下列式子来概括:面向对象=对象+类+继承+消息通信。
面向对象方法学的主要优点是:(1)从应用设计到解决问题的方案更加抽象化而且具有极强的对应性。(2)在设计中容易与用户沟通。(3)把数据和操作封装到对象之中。(4)设计中产生各式各样的部件,然后由部件组成框架,以至于整个程序。(5)应用程序具有较好的重用性、易改进、易维护和易扩充。8.2面向对象方法的基本概念
对象是具有相同状态的一组操作的集合,是封装了数据结构及可以施加在这些数据结构上的操作的封装体,这个封装体有可以惟一地标识它的名字,而且向外界提供一组服务(即公有的操作)。对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变,只能由其他对象向该对象发送消息。对象响应消息时,按照消息模式找出与之匹配的方法,并执行该方法。8.2.1对象
在面向对象的软件技术中,”类”就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述。例如:植物,飞行器,人等都是类。
“人”这个类具有:身高、姓名、性别、年龄、家庭住址等属性(静态特征);另外,“人”这个类还具有:跑步,开车,吃饭,思考等行为(动态特征)。
8.2.2类
实例就是由某个特定的类所描述的一个具体的对象。当使用”对象”这个术语时,既可以指一个具体的对象,也可以泛指一般的对象,但是,当使用”实例”这个术语时,必然是指一个具体的对象。8.2.3实例
消息就是要求某个对象执行在定义它的那个类中的某个操作的规格说明。
通常,一个消息由下述3部分组成:接收消息的对象;消息选择符(也称为消息名);零个或多个变元。8.2.4消息
方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法、响应消息的方法。在C++语言中把方法称为成员函数。我们前面介绍过,类由属性(静态数据)和行为(操作)组成,实际上,这里的“行为”就是面向对象中讲到的“方法”。例如:(1)飞行器这个类的方法有:飞行,落地等一些操作。(2)“人”这个类的方法:跑步,开车,吃饭,思考等。8.2.5方法8.2.6属性
属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。在C++语言中把属性称为数据成员。例如:飞行器这个类的属性有:颜色,身长,形状等。
8.2.6继承
继承是子类自动地共享父类中定义的数据和方法的机制。一个类的上层可以有父类,下层可以有子类。这种层次结构系统的一个重要性质是继承性,一个类直接继承其父类的全部描述(数据和操作)。继承具有传递性。例如:飞机是飞行器的子类,它继承了飞行器的所有属性和方法,但是它还有自己的属性和方法。飞机的属性除具有飞行器属性外,还有:乘客容量。8.2.7多态性
在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。然而不同层次中的每个类却各自按自己的需要来实现这个行为。当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法。8.2.8重载
重载有两种:函数重载和运算符重载。函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上。8.3
UML建模语言
UML(统一建模语言)是面向对象建模语言的标准,它可以对任何具有静态结构和动态行为的系统进行建模,它的主要作用是帮助用户进行面向的描述和建模,它可以描述软件从需求分析到软件实现和测试的全过程。作为一种建模语言,UML的定义包括UML语义和UML表示法两个部分。
(1)UML语义(2)UML表示法(
1)模型帮助我们按照实际情况或按照我们所需要的样式对系统进行可视化。
(2)模型允许我们详细说明系统的结构和行为。
(3)模型给出一个知道我们构造系统的模板。
(4)模型对我们的决策进行文档化。
8.3.1为什么要建模
UML有两套建模机制:静态建模机制和动态建模机制。静可描形,动可描行。动和静是辩证的两面,在UML中,静态建模可以描述系统的组织和结构,而动态建模则可描述系统的行为和动作。静态建模机制包括用例图、类图、对象图、包、组件图和配置图。动态建模机制包括消息、状态图、时序图、协作图和活动图。
8.3.2UML建模机制(1)UML基本构造元素:事务、关系和图。(2)UML的事务有四种:结构事务、行为事务、分组事务和注释事务。(3)UML的关系有四种:依赖、关联、泛化、实现。(4)UML的图有十种:用例图、类图、对象图、包图、状态图、活动图、序列图、协作图、组件图、部署图(有的书叫实施图)。
8.3.3UML的结构1.结构事物结构事物主要包括7种,分别是类、接口、协作、用例、活动类、组件和节点。类是具有相同属性、相同方法、相同语义和相同关系的一组对象的集合。接口是指类或组件所提供的、可以完成特定功能的一组操作的集合,换句话说,接口描述了类或组件的对外的、可见的动作。协作定义了交互的操作,是一些角色和其他元素一起工作,提供一些合作的动作。用例定义了系统执行的一组操作,对特定的用户产生可以观察的结果。活动类是对拥有线程并可发起控制活动的对象(往往称为主动对象)的抽象。组件是物理上可替换的,实现了一个或多个接口的系统元素。节点是一个物理元素,它在运行时存在,代表一个可计算的资源,如一台数据库服务器等。
8.3.4UML中的事务
2.行为事物行为事物主要有两种:交互和状态机。在UML图中,交互的消息通常画成带箭头的直线状态机是对象的一个或多个状态的集合。
3.组织事物组织事物是UML模型中负责分组的部分,可以把它看作一个个盒子,每个盒子里面的对象关系相对复杂,而盒子与盒子之间的关系相对简单。组织事物只有一种,称为包。包是一种有组织地将一系列元素分组的机制。4.辅助事物辅助事物,也称注释事物,属于这一类的只有注释。注释即是UML模型的解释部分。在UML图中,一般表示为折起一角的矩形。
1.关联关系关联关系是”
...hasa...”(具有)的关系。在UML图中,关联关系用一条实线表示。有一些修饰可以应用于关联。(1).
名字:可以给关系取名字。见图8-1。8.3.5UML中的关系
(2)角色:关系的两端代表不同的两种角色。见图8-2。(3).重数:表示有多少对象通过一个关系的实例相连。见图8-3。2.聚合关系聚合关系指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中”包含”、”组成”、”分为…部分”等词常意味着聚合关系。见图8-5。
聚合是”
...ownsa...”(拥有)的关系。它的UML表示法:空心菱形+实线+箭头,见图8-6
3.组合关系组合关系也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。组合关系是”
...isapartof...”(是…的一部分)的关系。它的UML表示法:实心菱形+实线+箭头,见图8-7。聚合和组合的区别在于:
(1)聚合关系是”has-a”关系,组合关系是”contains-a”关系;
(2)聚合关系表示整体与部分的关系比较弱,而组合比较强;
(3)聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。我们用浅显的例子来说明聚合和组合的区别。”国破家亡”,国灭了,家自然也没有了,”国”和”家”显然也是组合关系。(4)在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用。
(5)组合比聚合对于组合者和被组合者的关心定义的更加有约束,组合者不但要知道被组合者的情况,他们的生命周期都是由组合者来控制的。4.依赖关系对于两个对象X、Y,如果对象X发生变化,可能会引起对另一个对象Y的变化,则称Y依赖于X。依赖关系是一种”
...usesa...”(使用)关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用依赖关系。通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。在UML中你可以在其它的事物之间使用依赖关系,特别是包和节点之间。在UML图中,依赖关系用一条带有箭头的虚线来表示。人和空气是一种依赖关系,UML图见图8-10。一个人自创生就需要不停的呼吸,而人的呼吸功能之所以能维持生命就在于吸进来的气体发挥了作用,所以说空气只不过是人类的一个工具,而人并不持有对它的引用。5.泛化关系泛化是一般事物(称为超类或父类)和该事物的较为特殊的种类(称为子类)之间的关系,子类继承父类的属性和操作,除此之外通常子类还添加新的属性和操作,或者修改了父类的某些操作。泛化意味着子类的对象可以用在父类的对象可能出现的地方,但反过来则不成立。泛化关系的子类和父类是“akindof”的关系。图8-11给出了教师,学生和来宾继承人”类”的泛化关系。
若在逻辑上B是A的”一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。例如,教师是人,Teacher是Person的”一种”。那么类Teacher可以从类Person派生(继承)。如果A是基类,B是A的派生类,那么B将继承A的数据和函数。如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。
6.实现关系实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,它表示不继承结构而只继承行为。大多少情况下,实现关系用来规定接口和实现接口的类或组件之间的关系。在UML图中,实现关系一般用带有一条带有空心箭头的虚线来表示。
图8-12实现关系8.3.6UML中的视图
视图被划分成3个视图域:结构分类视图、动态行为视图和模型管理视图。结构分类视图。它描述了系统中的结构成员及其相互关系。类元包括类、用例、组件和节点。类元为研究系统动态行为奠定了基础。类元视图包括静态视图、用例视图和实现视图和配置视图。动态行为视图。它描述了系统随时间变化的行为。行为用从静态视图中抽取的系统的瞬间值的变化来描述。动态行为视图包括状态视图、活动视图和交互视图。模型管理视图。它说明了模型的分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图,并根据系统开发和配置组织这些视图。8.4UML的图序号模型种类十种图形建模机制1用例模型用例图静态建模2静态模型类图、对象图、包图静态建模3行为模型状态图、活动图动态建模4交互模型序列图、协作图动态建模5实现模型组件图、部署图静态建模
类图可用于表示逻辑类。逻辑类通常就是业务人员所谈及的事物种类。类在类图上使用包含三个部分的矩形来描述,如图8-13所示。8.4.1类图
用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具备的完成一定功能的动作----软件的功能模块,所以是设计系统分析阶段的起点,设计人员根据客户的需求来创建和解释用例图,用来描述软件应具备哪些功能模块以及这些模块之间的调用关系。
用例图包括:用例和参与者。8.4.2用例图
图8-16给出来了在线购物系统的用例图,给出了角色和用例之间的关系,以及内部用例之间的关系。角色:游客,会员,管理员。用例:商品信息,购买信息,用户信息。8.4.3对象图
对象图显示某时刻对象和对象之间的关系,是类图的变化,一个对象图可看成一个类图的实例,对象图表示的是类的对象实例而不是真实的类。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。对象图中并无新的表示法(除了对象名下要加下划线以外),与类图中的表示法一样,可以认为,只有对象而无类的类图就是一个”对象图”。
4.辅助事物辅助事物,也称注释事物,属于这一类的只有注释。注释即是UML模型的解释部分。在UML图中,一般表示为折起一角的矩形。
为了简单地表示出复杂的类图,可以把类组合成包packages。一个包是UML上有逻辑关系的元件的集合。包图由包和包之间的关系组成,模型如图。
8.4.4包图1、包的名称
包的名称有两种形式:简单名和路径名,其中简单名仅包含一个简单的名称,路径名是以包处于的外围包的名字作为前缀。
2、包图的组成
包可以拥有其他元素,比如类、接口、组件、节点、协作、用例和图,甚至可以是其它包。一个”包图”可以是任何一种的UML图组成,通常是UML用例图或UML类图。包是一个UML结构,它使得你能够把诸如用例或类之类模型元件组织为组。包被描述成文件夹,可以应用在任何一种UML图上。序列图。
序列图显示具体用例(或者是用例的一部分)的详细流程。它几乎是自描述的,并且显示了流程中中不同对象之间的调用关系,同时还可以很详细地显示对不同对象的不同调用。序列图有两个维度:垂直维度和水平维度。垂直维度以发生的时间顺序显示消息/调用的序列;水平维度显示消息被发送到的对象实例。8.4.5交互图
其中的aServlet对象表示驱动类实例。
aServlet向名为gen的ReportGenerator类实例发送一条消息。该消息被标为generateCDSalesReport,表示ReportGenerator对象实现了这个消息处理程序。进一步理解可发现,generateCDSalesReport消息标签在括号中包括了一个cdId,表明aServlet随该消息传递一个名为cdId的参数。当gen实例接收到一条generateCDSalesReport消息时,它会接着调用CDSalesReport类,并返回一个aCDReport的实例。然后gen实例对返回的aCDReport实例进行调用,在每次消息调用时向它传递参数。在该序列的结尾,gen实例向它的调用者aServlet返回一个aCDReport。
2.协作图
UML交互图的另一种形式是协作图。协作图和序列图在语义上相同,但协作图排列对象的方式比较自由,完全由绘图者的喜好决定。在协作图中,交互动作的次序由消息的编号决定。一些人偏爱这种绘图方式,许多功能比较完善的UML工具允许用户将一个图在协作图符号和序列图符号之间来回转换。
状态图是描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。通常我们创建一个UML状态图是为了研究类、角色、子系统、或组件的复杂行为。(1)初始起点,它使用实心圆来绘制;(2)状态之间的转换,它使用具有开箭头的线段来绘制;(3)状态,它使用圆角矩形来绘制;(4)判断点,它使用空心圆来绘制;(5)一个或者多个终止点,它们使用内部包含实心圆的圆来绘制。8.4.6状态图
例如,贷款处理系统最初处于LoanApplication(贷款申请)状态。当贷款审查后,如果符合基本条件转到Loanpre-approval(贷款预批)过程;否则转到LoanRejected(贷款拒绝)状态。如果Loanpre-approval过程完成这个判断(它是在转换过程期间做出的)使用一个判断点来表示--即转换线条间的空心圆。通过该状态图可知,如果没有经过LoanClosing状态,贷款不可能从LoanPre-Approved状态进入LoaninMaintenance状态。而且,所有贷款都将结束于LoanRejected或者LoaninMa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 独家授权网络小说电子版权分销及网络文学版权代理合同
- 国际市场推广策略优化补充协议
- 版权独家授权补充合同范本
- 虚拟现实医疗康复训练系统研发与授权合同
- 国际人才市场招聘与人才输送服务协议
- 股权收益权质押与资产证券化项目合作协议
- 离婚协议财产分割及变更执行仲裁协议(含子女抚养、房产、股权及债权)
- 环保节能设备技术合作与市场推广合同
- 美团餐饮行业市场拓展与合作伙伴合同
- 电子商务中个人信息保护与知情权平衡协议
- GB/T 1599-2014锑锭
- 学前教育学 黄人颂
- 《行政组织学通论》配套教学课件
- 【表格】面试评估表(模板)
- 曾国藩识人用人之道课件
- 师德师风教育整顿谈心谈话记录表
- 铸造作业指导书
- 电缆修复规范
- 储层地质学(中国石油大学)-2沉积相分析
- 大班-社会语言-小学生的一天-课件
- 大众特殊要求:Formel-Q第八版(中文版)
评论
0/150
提交评论