第一讲_面向对象程序设计概论赵致琢_六年级科学ppt课件教案人教版_第1页
第一讲_面向对象程序设计概论赵致琢_六年级科学ppt课件教案人教版_第2页
第一讲_面向对象程序设计概论赵致琢_六年级科学ppt课件教案人教版_第3页
第一讲_面向对象程序设计概论赵致琢_六年级科学ppt课件教案人教版_第4页
第一讲_面向对象程序设计概论赵致琢_六年级科学ppt课件教案人教版_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面 向 对 象 程 序 设 计 (讲座类课程),赵致琢 博士 教授 仰恩大学计算机科学系 厦门大学计算机科学系, 仰恩大学,泉州,福建,中国,2010年9月,同学们注意:在学习这门讲座类课程的过程中,不必局限于或拘泥于某一种具体的面向对象程序设计语言,而是应该重点选择和结合某一种流行的面向对象程序设计语言(如C+或Java),以自学为主,教师引导为辅,紧紧围绕面向对象程序设计的基本思想、概念、原理、方法和技术,开展从理论到实践的自主学习,同时完成一个课程设计项目,写出读书报告,最终基本掌握面向对象程序设计的基本内容。 课程设计项目内容:用面向对象程序设计方法,完成“数据结构”课程布置的信息管理系统的设计与实现任务。,课程结束考核方式: 结合你完成的课程设计,提交面向对象程序设计课程读书报告,按照讲座类课程的讲授要点,写出读书和开展课程设计的过程中,自己对面向对象程序设计的认识和体会。 提交的报告(电子版)的文件名称是: 1 仰恩大学计算机科学系2008级“面向对象程序设计”课程读书报告陈建强 2 仰恩大学计算机科学系2008级“面向对象程序设计”课程设计报告陈建强,第一讲:面向对象程序设计概论 这一讲主要解决三个问题: 1. 什么是面向对象程序设计? 2. 面向对象程序设计的科学意义和 实用价值是什么? 3. 面向对象程序设计的起源和发展 的历史渊源如何?,1.1 什么是面向对象程序设计?,面向对象程序设计是一种程序设计范型(风格、范式,Paradigms) ,来源于数据抽象的思想方法,以类和对象为基础,以类的定义实现对信息处理对象的静态描述,用对象和动态方法约束、控制和实现对信息处理对象的操作,从而实现程序设计和软件开发方法的一种比较先进的程序设计范型。,1.2 面向对象程序设计的起源与发展,1. 传统程序设计与软件开发方法分析 典型的面向过程的程序设计与软件开发方法 Jackson方法、结构化方法 Jackson方法:面向数据结构,是以数据结构为中心的方法,强调信息处理对象的数据结构设计; 结构化方法提出了一套提高软件结构合理性的准则,如分解和抽象、模块的独立性、信息的隐蔽等。结构化方法的特点是快速、自然和方便。以后又出现了: 指导思想:自顶向下、逐步求精、融入程序验证等 工作模型:瀑布模型,以数据为中心的程序设计模式可以用如下公式来加以描述: 程序 = 数据结构 + 算法 该公式强调算法对数据结构的依赖性,体现了一种以数据结构为中心的理念。其弊端在于: 从宏观到微观,程序员需要深入了解整个程序的全部细节,大型软件开发过程中程序员的负担太重,而且,如果整个程序中重要的过程和函数的实现依赖于一个或几个关键数据结构,那么,一旦关键数据结构中的一个或几个有所改变,则会波及到整个系统,许多过程和函数必须重写,不利于整个程序的维护和扩展。从方法的角度观察,对程序和软件成分思维对象的颗粒过细、太小,不利于在概念层面进行思考和直观描述。,1960年代中期,随着计算机程序设计及其应用的展开,在一些较大规模的程序设计和软件开发中遇到了一些困难和问题:如何防止不同人编写的程序之间出现地址越界和非法操作?如何阻止非法访问数据结构并篡改数据?如何提高既有软件的可扩展性,降低软件维护成本?如何更好地保证程序的质量?等等。这些问题的实质是程序设计和软件开发急需一整套的科学方法来较好地满足多人合作下提出的分层次、结构化、概念抽象、数据掩蔽、数据安全、功能透明、可维护、可扩展等一系列要求。 如果这些问题不能很好地得到解决,那么,程序设计和软件开发进程就会受到影响。,2. 从抽象数据类型到面向对象程序设计 多种程序设计思想、方法、语言的探索 1960年代是高级语言大发展的时期,不同的应用领域、应用特点、程序设计思想、理论和方法催生了众多不同的程序设计语言,其中有COBOL、LISP、APL、SIMULA、SNOBOL、PASCAL,等等。 如何看待程序和程序设计、程序设计方法? Lisp语言:将程序的数据对象看成表,从最简单的表出发,运用递归函数论的思想方法,构造更复杂的程序,把对数据的处理转化成对表的运算操作,由此可构造各种复杂的大型程序。,SIMULA语言:通过数据抽象,设计了一种称为类的概念和语言成分,这是早期抽象数据类型的雏形。 数据抽象的发展经历了几个重要的阶段: 1 目的:机器无关性与更易于做程序设计 程序设计语言特征与特定的计算机体系结构、指令系统相分离,它使计算机指令系统经抽象形成了高级程序设计语言,深刻地影响了语言的设计; 2 目的:对程序中的各种成分或片段在语境中进行抽象,用名字代替,在概念上实现从细小颗粒向较大颗粒的转变,而且,通过名字关联一段复杂的程序片段,使我们可以将它看成是一种功能或作用,而不必关心这种功能是如何实现的。于是,通过隐藏其中的细节,可以减少对原来程序在概念上的复杂性,有利于程序员分层次地理解和处理复杂的程序;,3 目的:对结构上相同的数据结构进行抽象,赋予名字,同时规定其作用域和生存期,从而可以更好地为中颗粒的程序设计提供支撑; 这个阶段的数据抽象实际上受到高级语言子程序中变量的定义域、作用域等影响。正是由于这些阶段的发展,SIMULA-65的设计中出现了类的概念和成分。 4 抽象数据类型的出现 1967年,Dijkstra在主持欧共体一个大型计算机系统的操作系统的研制过程中,引入了进程的概念。为了处理好系统进程和用户进程中对专用数据结构和公用数据结构的管理,防止出现冲突错误,借助SIMULA语言中类(Class)的思想,先后引进了管程和类程的概,念,取得了很大的成功。 管程:将专用数据结构和其上的运算操作定义为一个整体实现的进程; 类程:将公用数据结构和其上的运算操作定义为一个整体实现的进程; 抽象数据类型:将数据结构和其上基本的运算操作定义为一个整体,给予一个名字,就得到了一种特殊的结构类型,称为抽象数据类型。 抽象数据类型实现了数据掩蔽和操作封装,使得用户今后对数据的访问,只能通过施加在其上的基本运算操作来进行,其内部的数据结构是不可见的,例如栈、队列,等等。,抽象数据类型是静态的概念,一旦定义,其基本运算操作就被固定,用户访问数据,必须熟记这些运算操作,对程序员依然负担不轻。 封装性的不足:SIMULA语言虽然提出了Class的设计,但在数据掩蔽和封装性方面依然还比较弱,后来,由于1970年代Clu、Modula、Euclid 以及其他相关语言的研究,得到了改进,特别是在分层描述和属性引入方面的研究进展,提升了类的描述能力,以及后来的Smalltalk 中采用了另外一种基于消息的计算模型,可以通过对象(类的实例)之间发送消息的方式,激发类的定义中确定的方法(作用相当于基本运算操作)实现对数据的访问和操作,于是,面向对象的程序设计应运而生。,面向对象程序设计的要点:面向对象程序设计有三个基本的概念,即数据掩蔽与操作封装,分层描述与属性继承,动态方法约束。 Smalltalk 的推出虽然在面向对象程序设计方面具有里程碑式的意义,它标志着面向对象程序设计在理论上已基本成型,但由于其采用动态类型,而动态方法约束在实际的语言编译系统实现中遇到了技术上的困难,系统的效率不高,导致Smalltalk不象人们想象的那样应用广泛。以后,由于 C+、 Eiffel、Modula-3、Ada95 和 Java的研究和贡献,面向对象程序设计终于得到广泛认可,其中,C+ 和Java 两种语言成为今日应用最广泛的语言之一。,3. 面向对象程序设计方法 面向对象程序设计成为一种程序设计范型之后,面向对象程序设计方法得到了快速发展,不仅继承了结构化程序设计等方法的积极成分,创造性地引入了“对象”这一构建程序的基本元件,而且,进一步发展成为一种分析问题、解决问题的思想方法,并进一步与软件开发环境、组件软件开发方法相结合,形成了今天软件构架设计与集成软件系统开发环境的重要组成部分之一。 J2EE: Java .Net: C+,4. 面向对象程序设计方法 在面向对象的软件系统中,一个个不同类型的对象相互作用,自底向上构建起整个程序系统。面向对象的软件设计模式可以描述为: 程序 = 对象1 + 对象2 + 对象n 对象 = 数据结构 + 算法(动态生成的进程) 代它取代了传统面向过程模式下的 程序 = 数据结构 + 算

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论