版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四
章面向对象的技术
面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的Simula67语言中,随着的Smalltalk---76和80语言推出,面向对象的的程序设计方法得到了比较完善的实现。此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。
面向对象的技术已成为软件开发的一种新方法,新技术。4.1面向对象的基本概念4.1.1什么是面向对象的开发方法
OOSD(Object-OrientedSoftwareDevelopment)法是一种把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。问题空间—软件系统所涉及到的应用领域和业务范围(现实世界)。解空间—用于解决某些问题的软件系统。一、软件开发过程问题空间(现实世界)解空间(软件系统)映射二、传统软件开发方法存在的问题1.传统软件开发方法无法实现从问题空间到解空间的直接映射。问题空间(现实世界)解空间(软件系统)复杂映射2.传统软件开发方法无法实现高效的软件复用。原因是:传统软件开发方法数据与代码(操作)分离。3.传统软件开发方法难以实现从分析到设计的直接过渡。复杂转换分析文档(DFD)设计文档(SC)三、面向对象技术的特点1.对软件开发过程所有阶段进行综合考虑。使问题空间与解空间具有一致性,降低复杂性。2.软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。自然、连续问题空间(现实世界)解空间(软件系统)实体1实体2实体n对象1对象n对象23.将OOA、OOD、OOP有机地集成在一起。有利于系统的稳定性.
OOA(Object-OrientedAnalysis)
OOD(Object-OrientedDesign)
OOP(Object-OrientedProgram)
以对象为中心各种构造系统,而不是以功能为中心,能很好地适应需求变化.4.具有良好的可重用性由于对象所具有的封装性和信息隐蔽,具有很强的独立性。
理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。4.1.2面向对象的基本概念类(Class)对象(Object)消息(Information)多态性(Polymorphism)继承(Inheritance)永久对象(Persistentobject)1.对象(Object)对象(Object)是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象。对象可以是事、物、或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。
属性(attribute)—对象本身的性质。操作(operation)—给对象定义一组运算。对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation).
对象的最基本的特征是封装性和继承性。2.类(Class)类又称对象类(ObjectClass),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance),它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method),方法有方法名,方法体和参数。
由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。几何对象颜色位置移动(delta:矢量)选择(P:指针型):布尔型旋转(角度)图4.1对象类的描述人姓名:字符串年龄:整型改换工作改换地址文件文件名文件大小最近更新日期打印(人)张红兵28绘图员人民路8号(人)李军24程序员无图4.2对象的描述对象和类的描述类和对象一般采用“名字”、“属性”和“运算”来描述。类名属性运算
对象
类3.继承
(Inheritance)
继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。继承性分:
单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。基类子类A子类B图4.4继承性描述现存类定义父类(基类)新类定义子类(派生类)继承图4.3继承性4.消息(Message)
消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入信息、回答信息。
在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。5.多态性和动态绑定
多态性(Polymorphism)是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。
即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。
例如:“绘图”操作,作用在“椭圆”和“矩形”上,画出不同的图形。
动态绑定(dynamicbinding)是在运行时根据对象接收的消息动态地确定要连接的服务代码。
使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。继承是动态联编的基础,虚函数是动态联编的关键。多态性的实现举例
实现多态性的基本步骤(以VC为例):
(1)在基类中,定义成员函数为虚函数(virtual);
(2)定义基类的公有(public)派生类;
(3)在基类的公有派生类中“重载”该虚函数;
(4)定义指向基类的指针变量,它指向基类的公有派生类的对象。注意:重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数、参数类型和顺序完全相同。例如:下面是实现“多态性”的一个例子#include<iostream.h>classfigure//定义基类{protected:doublex,y;public:voidset_dim(doublei;doublej=0){x=i;y=j;}
virtualvoidshow_area()
//定义虚函数{
cout<<“Noareacomputationdefine”;
cout<<“forthisclass.\n”;}};(1)在基类中,将成员函数说明为虚函数(virtual);classfigureprotected:doublex,y;public:
set_dim()virtualshow_area()图4.5类classtriangle:publicfigure//(2)定义基类的公有派生类{public:
virtual
voidshow_area()
//(3)“重载”该虚函数{求三角形面积}};classsquare:publicfigure//(2)定义基类的公有派生类{public:
virtualvoidshow_area()
//(3)“重载”该虚函数{求矩形面积}};classcircle:publicfigure//(2)定义基类的公有派生类{public:
virtual
voidshow_area()
//(3)“重载”该虚函数{求园面积}};
p=&s;//
指向矩形对象
p->set_dim(10.0,5.0);p->show_area();p=&c;//
指向园形对象
p->set_dim(9.0);p->show_area();}voidmain(){figure*p;//定义指向基类的指针变量trianglet;//squares;//
定义基类的公有派生类的对象circlec;//p=&t;//指向三角形对象
p->set_dim(10.0,5.0);p->show_area();}(4)运行过程中实现“动态绑定”6.永久对象(Persistentobject)
所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象。
目前,大多数OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。为了实现永久对象,使上述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象管理系统OMS(objectmanagementsystem),能够描述和处理永久对象的编程语言。4.3面向对象的分析
面向对象分析OOA(Object-OrientedAnalysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。基本概念:
问题域(problemdomain)—被开发系统的应用领域。
系统责任(systemresponsibilities)—所开发的系统应具备的职能。4.3.1面向对象分析的特点一、需求中存在的问题
1.确定问题域和系统责任困难
2.充分交流的问题解决得不好
3.很难适应需求的不断变化
4.难以满足复用要求二、OOA的特点1.有利于对问题及系统责任的理解;2.有利于人员之间的交流;3.对需求变化有较强的适应性;4.支持软件复用。?运用面向对象的方法,对问题域和系统责任进行分析和理解,建立分析模型。
1.分析问题域,确定类和对象;
2.定义类或对象属性和操作,确定其结构;
3.建立系统中类或对象之间的静态联系和动态联系。4.3.2OOA的基本任务4.3.3OOA的分析过程获取用户基本需求标识类和对象定义类的结构和层次表示类(对象)间的关系为对象行为建模图4.7OOA分析过程4.3.4OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)图4.8OOA模型与详细说明基本模型是一个类图(classdiagram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。4.3.4OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)主题(subject)又称为子系统(subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。4.3.4OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)交互图(interactiondiagram)是Usecase与系统成分之间的对照图。主题图和交互图又称为补充模型。4.3.4OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)详细说明按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。
面向对象的设计OOD(Object-OrientedDesign)是面向对象方法在软件设计阶段应用与扩展的结果。是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与OOA没有明显的分界,采用相同的符号。4.4面向对象的设计4.4.1OOD基本任务1.系统设计
将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。保险单填写界面系统内部保险单客户数据库界面(abstract)Oracle界面Sybasec界面子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。
分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。常常使用分层和分块的混合结构,如图所示:应用程序包人机对话控制窗口图形仿真程序包屏幕图形点阵图形操作系统计算机硬件4.4.1OOD基本任务2.对象设计
在面向对象的系统中,模块、数据结构及接口等都集中体现在对象和对象层次结构中。对象设计是为每个类的属性和操作进行详细设计,包括属性和操作,它们的数据结构和实现算法。3.消息设计设计连接类与它的协作者之间的消息规约(specificationofthemessages)。4.优化及复审
主要考虑提高效率和建立良好的继承结构。4.4.2OOD模型面向对象设计准则:1)模块化 2)抽象3)信息隐藏4)弱耦合 5)强内聚6)可重用介绍几种典型的面向对象的开发方法:Coda方法,Booch方法和OMT方法
随着面向对象开发方法的发展,逐渐形成了几种主要的流派:Coda方法
Booch方法OMT方法
OOSE方法
4.5几种典型的面向对象的方法一、Coda/Yourdon方法—由OOA,OOD构成
建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。
该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强。
4.5几种典型的面向对象的方法1.
Coda方法的OOA
在Coda方法中,构造和评审OOA概念模型的顺序由五个层次组成:类与对象、属性、服务、结构和主题这五个层次表示分析的不同侧面。类与对象层属性层服务层结构层主题层类的边界实例的边界属性实例连接服务消息连接泛化与特化结构整体与部分结构主题图4.10分析过程的五个层次2.
Coda方法的OOD`
Coad方法的OOD模型是在OOA模型5个层次基础上,建立系统的4类组元,
PDC问题域组元
HIC人机界面组元
TMC任务管理组元
DMC数据管理组元主题层对象层结构层属性层服务层图4.12Coda
OOD模型1)设计问题域组元(problemdomaincomponent)2)设计人机界面组元(humaninteractioncomponent)3)设计任务管理组元(taskmanagement
component)
4)设计数据管理组元(datamanagement
component)
Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。二、Booch方法
1.
Booch方法的基本模型
⑴类图类名类名父类子类(a)关联(b)继承整体类成员类请求服务类提供服务类(c)包含(d)使用图4.13类图表示控制环境冷气管理计划暖气灯光温度执行机构111N图4.14温室管理系统的类图
对象图由对象和消息组成⑵对象图对象1对象2编号:消息名:计划分析计划度量1:收获时间(C)C:谷物:计划管理3:成熟时间()6:成本()5:作物::产量4:产量()2:状态()图4.16温室管理系统的对象图图4.15对象图的表示⑶状态图状态1状态2事件名/操作空闲白天定义气候夜晚日落日出终止气候温度上升/调温()温度下降/调温()图4.18环境控制器类的状态图图4.17状态图的表示⑷时序图用户对象1对象2
用户服务请求
内部服务请求
服务返回
服务返回图4.19温室管理系统的时序图
⑸模块图⑹进程图气候暖气计划
作物定义冷气
气候定义图4.20温室管理系统的模块图温室工作站温室A温室B温室C图4.21温室管理系统的进程图
面向对象的方法学又称为对象模型技术,OMT(ObjectModelTechnology)是一种软件工程方法学,支持整个软件生存周期,它覆盖了问题构成、分析、设计和实现等阶段。
OMT方法使用了建模的思想,讨论如何建立一个实际的应用模型。从3个不同而又相关的角度建立了三类模型:对象模型、动态模型和函数模型,OMT为每一个模型提供了图形表示。三、面向对象的建模技术(OMT)1.
对象模型技术的基本概念
OMT方法讨论的核心就是建立三类模型:
对象模型描述了由对象和相应实体构成的系统静态结构,描述了系统中对象的标识,属性、操作及对象的相互关系。
动态模型根据事件和状态描述了系统的控制结构,系统中与时间和操作顺序有关的内容。
函数模型着重描述系统中与值的转换有关的问题,如函数、映射、约束和函数作用等。三类模型描述的角度不同,却又相互联系。2.
建立对象模型对象模型描述了系统的静态结构。构成对象模型的基本元素有:对象(类)、它们之间的关系。类名属性操作
类名属性名(1),数据类型1=缺省值1属性名(2),数据类型2=缺省值2………操作名1(变量名1):结果类型1操作名2(变量名2):结果类型2………(类名)对象名属性操作对象名类名类之间、对象之间的关系⑴关联与链
①二元关联、三元关联人员公司雇用二元关联的例(人员)张涛(公司)通大雇用链的例子项目语言◆人(项目)CAD系统(语言)C语言◆(人)林珩三元关联的例链的例子②受限关联③用重数、链属性和角色进一步描述。直线名称点名称相交2+人公司●●公司名字个人名字工作职务工资关联雇主雇员⑵继承性(Inheritance)继承性通常又称为概括,表示基类与子类的关系。运输工具陆上运输工具水上运输工具汽车水陆两用车船⑶聚集表整体与部分的关系。段落句子◆●微机系统◆监视器主机箱鼠标键盘●◆底架CPURAM风扇
银行网络系统ATM(AutoTradeMachine)银行网络系统包括人工出纳和分行共享的自动出纳机。自动出纳机自动出纳机自动出纳机出纳站分理处计算机分理处计算机出纳站帐户帐户图1银行网络系统的示意图用户分行计算机问题的陈述
采用OMT方法对银行网络系统ATM(AutoTradeMachine)进行分析和设计。银行网络系统包括人工出纳和分行共享的自动出纳机;各分理处用自己的计算机处理业务(保存帐户、处理事务等);各分理处与出纳站通过网络通信;出纳站录入帐户和事务数据;自动出纳机与分行计算机通信;自动出纳机与用户接口,接受现金卡;发放现金;打印收据;分行计算机与拨款分理处结帐。要求系统正确处理同一帐户的并发访问;网络费用平均摊派给各分理处。图1给出了银行网络系统的示意图。对象模型银行码录入站远程事务现金卡银行名、卡片码安全号出纳员事务出纳员名字出纳站分行站代码帐户余额、类型贷款限定顾客名字地址事务种类、日期、时间、数量卡片权限密码、限制更新数量、类型自动出纳机分发现金雇员号站代码分理处名字帐户号卡片码录入组成拥有拥有雇用访问标识发行被录入开始涉及维持有有3.
建立动态模型动态模型着重于系统的逻辑结构;描述某时刻对象及其联系的改变。包括状态图和事件追综图。一、事件和状态状态—对象所具有的属性值,具有时间性和持续性。事件—对于对象的触发行为,指从一个对象到另一个对象的信息的单向传递。脚本—在系统的某一执行期间内的一系列事件。在系统中具有属性值、链路的对象,可能相互激发,引起状态的一系列变化。
有的事件传递的是简单信号,有的事件则传递的是数据值。由事件传送的数据值称为“属性”。⑴状态图
状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为,状态的迁移。●状态A活动状态B◎状态A/
操作事件B[条件]起始状态终结状态状态图
动态模型由多个状态图组成,每个有重要行为的类都有一个状态图。各状态图可并发地执行及独立改变状态。图例 状态状态迁移状态打电话状态图空闲拨号连接铃响连接断连忙音快速忙音拨号音超出时间记录的信息放下话筒放下话筒提起话筒超时超时无效号码有效号码对方应答通路一位号码中断线忙号码忙对方电话挂断信息送完图4.39打电话状态图⑶事件追踪图事件追踪图侧重描述系统执行过程中的一个特定的“场景(Scenarios)”。场景有时也叫“脚本”,是完成系统某个功能的一个事件序列。即是描述多个对象的集体行为。脚本—系统某一次特定运行时期内发生的事件序列。例如:打电话的场景:1、拿起电话受话器 12、打电话者听见振铃声2、电话忙音开始 13、对方接电话3、拨电话号码数5 12、接话方停止振铃4、电话忙音结束 14、打电话方停止振铃声5、拨电话号码数5 15、通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国均苯四甲酸二酐产业前景趋势展望及投资战略决策报告
- 2024-2030年中国发动机轴承橡胶模行业市场运营模式及未来发展动向预测报告
- 2024年生态修复工程用草种采购合同
- 2024年生态旅游区门面房买卖合同范本3篇
- 2024年版地下水开采合同3篇
- 2024年珠宝首饰租赁协议2篇
- 2024年企事业单位食堂餐饮承包合同及员工餐饮健康促进3篇
- 2018企业首席质量官培训考核试题(综合卷)
- 2024年标准离婚股权分割合同模板版B版
- 2025年深圳从业资格证货运模拟考试下载
- 人民日报出版社有限责任公司招聘笔试题库2024
- 2024年煤矿事故汇编
- Unit 7单元教案 2024-2025学年人教版(2024)七年级英语上册
- Unit 6 My sweet home(教学设计)-2024-2025学年外研版(三起)(2024)小学英语三年级上册
- 北师大版教案正比例函数案例分析
- 行政文秘笔试题
- 人教版(2024)七年级地理上册跨学科主题学习《探索外来食料作物传播史》精美课件
- 2024-2025学年七年级数学上册第一学期 期末模拟测试卷(湘教版)
- 职业素质养成(吉林交通职业技术学院)智慧树知到答案2024年吉林交通职业技术学院
- 《红楼梦》第5课时:欣赏小说人物创作的诗词(教学教学设计)高一语文同步备课系列(统编版必修下册)
- 【新教材】苏科版(2024)七年级上册数学第1-6章全册教案设计
评论
0/150
提交评论