02面向对象编程与非面向对象编程.ppt

上传人:qwe****56 文档编号:70011031 上传时间:2023-01-14 格式:PPT 页数:19 大小:365.45KB
返回 下载 相关 举报
02面向对象编程与非面向对象编程.ppt_第1页
第1页 / 共19页
02面向对象编程与非面向对象编程.ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《02面向对象编程与非面向对象编程.ppt》由会员分享,可在线阅读,更多相关《02面向对象编程与非面向对象编程.ppt(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、面向对象编程与非面向对象面向对象编程与非面向对象编程编程山东大学计算机学院1软件开发方法软件工程所采用的方法不是唯一的,自软件工程出现以来,人们已经提出了多种软件开发方法,例如:功能分解法、数据流法(结构化方法)、快速原型法、信息模型法、面向对象方法。山东大学计算机学院2结构化软件开发方法简介1978年,E.Yourdon和L.L.Constantine提出了结构化开发方法SASD(Structure Analysis Structure Design)也称面向数据流的软件开发方法把软件系统的功能看做是根据给定的输入数据,进行相应的运算,然后输出结果。功能输入数据输出数据结构化设计是属于自顶向

2、下的设计,在设计阶段就不得不考虑如何实现系统的功能,因为分解的过程其实就是实现功能的过程。局限性不能灵活地适应用户不断变化的需求比如要求修改现有软件的实现方式或追加新功能时需要自顶向下地修改模块的结构,有时甚至整个软件系统的设计被推翻。结构化编程SP(Structure Programming)程序的主体是方法方法是最小的功能模块一组相关的方法组合成一个大的功能模块结构化开发过程举例一个画板系统Panel包括4个功能选择形状画长方形画圆画直线自顶向下结构化分析设计工具:数据流图DFD选择形状模块数据流图结构化编程定义形状标示常量drawCircle()drawLine()drawRectang

3、le()selectShape()接收用户输入的形状switchvoid selectShape()int shape;scanf(%d,&shape);switch(shape)case Circle;drawCircle();break;case Line;drawLine();break;case Rectangle;drawRectangle();break;default;printf(输入的形状不存在);break;假定需求发生变化要求增加一个画三角形的功能需要对系统做多处改动增加一个形状常量定义增加一个画三角形的功能方法在selectShape中增加一个分支逻辑结构化开发方法制约

4、了软件的可维护性和可扩展性模块之间的松耦合性不高 修改或增加一个模块会影响到其他模块这些缺陷的根本原因在于:自顶向下地按照功能来划分。但是软件的功能不是一成不变的软件系统中最小的子系统是方法。方法和一部分与之相关的数据分离,全局变量和常量数据分散在系统的各个角落,削弱了各个系统之间的相对独立性。山东大学计算机学院13非面向对象编程对于非面向对象编程,程序往往是面向过程或者面向数据的。这些程序中通常有可全访问的数据及过程,由主程序或其子程序来控制及操作这些数据。程序的每个部分都可以访问全局数据,得到数据的一部分,操作这些数据,然后在在需要时,保存对数据的更改。山东大学计算机学院14对于面向对象编

5、程程序被划分为一组通信的对象。每个对象均封装了关于某个概念所有行为和信息实现功能的能力、实现功能所需的“知识”或数据被分布在对象之中。当一个对象对其他对象有需求时,就向该对象发出消息,这个对象接受到此消息后做出相应的动作并很有可能返回值给调用者。第一个对象甚至可以在第二个对象不存在的情况下创建该对象山东大学计算机学院15因此,要开始进行面向对象编程时,通常就是先创建几个对象,然后让这些对象开始通信。这种面向对象编程的观点,即对象分摊工作和责任,对我们而言是十分熟悉的,因为现实中人类也采用这样的交互方式。例如一位企业主,并不需要对所有的事亲历亲为,事实上,该企业主只需要将任务分配给雇员。每位雇员

6、不仅要完成给定的任务,并且还得负责维护和该任务相关的数据。比如,秘书不仅需要负责打印文件,也要负责将文件存放在适合的档案柜中;并且,如果文件中存放的是机密数据,秘书也要负责保护这些文件,并且负责允许或拒绝他人对文件的查看。在秘书的工作过程中,他可能还需要办公室内外其他人员的帮助。山东大学计算机学院162.1.2 面向对象语言类(class)的概念可以从建模角度及编程语言的角度来理解。在设计软件应用的时候,类模型将对系统中重要的概念进行抽象处理,建立良好定义的责任及与其他类的良好关系。在面向对象编程语言中,类可以被视为对象的模板,而这些对象描述了某种行为、某些责任以及某些相关数据对象(objec

7、t)是类的实例。一个对象就类似于一位秘书或一位警察。对象所属的类定义了该对象拥有的数据类型、该对象的行为及该对象对这些数据的责任。但对于一位秘书而言,个人拥有用各自需要维护的数据(各自的状态)。山东大学计算机学院17对象之间通过消息传递的方式通信并命令彼此进行动作。通过向其他对象传递消息,第一个对象让第二个对象执行某些代码。这些代码实际上就是一个过程浓面向对象语言中称为方法(method),该过程与第二个对象关联。因此,消息传递实际上就是一个对象向另一个对象发出的要求执行其某个方法的要求(或命令)。通过这个机制,对象可以被视为能对发出请求的任何客户端提供服务的服务器(通过消息的接受)。山东大学

8、计算机学院182.1.3 面向对象编程的优点面向对象的方式与非面向对象的方式相比由于所谓的“智能”被分布在了各个对象之中,每个对象都维护了各自实现任务所需的数据,将数据保存于较小的可管理单元就相对比较容易,这种方式也便于理解这些单元是如何互相影响的。面向对象编程的分布性可以增加代码的可读性。对于非面向对象程序而言,在全局数据结构上的一次小改动将有可能迫使所有访问该数据的过程进行相应的改变。设计良好的面向对象程序只有少量的全局数据,而将大部分数据存储于对象中进行内部使用。山东大学计算机学院19对象所属的类中的数据存储方式的改变通常意味着,程序中需要改变的部分只有该类内部的代码而已。如果编程人员认为某个对象工作过于低效,就可以在不对系统的其他部分产生影响的情况下,重新设计该对象使其变得高效,从而支持了软件的可维护性。由于每个对象都具有一个小的良好设计的角色,并独自包含所需的数据,在其他情况下重用该对象就会十分容易。

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

当前位置:首页 > 技术资料 > 其他杂项

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com