上海交通大学计算机集成技术开放实验室_第1页
上海交通大学计算机集成技术开放实验室_第2页
上海交通大学计算机集成技术开放实验室_第3页
上海交通大学计算机集成技术开放实验室_第4页
上海交通大学计算机集成技术开放实验室_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

02四月2024上海交通大学计算机集成技术开放实验室31三月2024上海交通大学计算机集成技术开放实验室1关于课程(1)目标

进一步学会面向过程编程理解面向对象思想以对象的方式思考熟悉C++(P)利用C++编程Date上海交通大学计算机集成技术开放实验室关于课程(1)目标

Date上海交通大学计算机集成技术开放实2在本课程中:C++是一个学习面向对象概念的工具运用面向对象模式进行程序设计Date上海交通大学计算机集成技术开放实验室在本课程中:Date上海交通大学计算机集成技术开放实验室3采用面向对象方法的效果(OOA/OOD)可维护性可扩展性可靠性Date上海交通大学计算机集成技术开放实验室采用面向对象方法的效果(OOA/OOD)Date上海交通大4如何实现课程目标阅读和记忆阅读书籍,记住语言特点思考以对象和类的方式思考实践多编程Date上海交通大学计算机集成技术开放实验室如何实现课程目标阅读和记忆Date上海交通大学计算机集成技术5参考课本C++程序设计教程(钱能),清华大学出版社C++程序设计教程,H.M.Deitel,P.J.Deitel著,机械工业出版社C++大学教程(第二版),HarveayM.Deitel著,电子工业出版社

C++Primer(第三版),StanleyB.lippmanJoseeLajoie著,中国电力出版社C++编程思想(ThinkinginC++),BruceEckel著,机械工业出版社Date上海交通大学计算机集成技术开放实验室参考课本C++程序设计教程(钱能),清华大学出版社Date上61从C语言到C++语言C语言以其如下独有的特点风靡了全世界:(1)语言简洁、紧凑,使用方便、灵活。C语言只有32个关键字,程序书写形式自由。(2)丰富的运算符和数据类型。(3)可以直接访问内存地址,能进行位操作,使其能够胜任开发操作系统的工作。Date上海交通大学计算机集成技术开放实验室1从C语言到C++语言C语言以其如下独有的特点风靡了全世7(4)生成的目标代码质量高,程序运行效率高。(5)可移植性好。Date上海交通大学计算机集成技术开放实验室(4)生成的目标代码质量高,程序运行效率高。Date上海交通8局限性:(1)数据类型检查机制相对较弱,这使得程序中的一些错误不能在编译阶段被发现。(2)C本身几乎没有支持代码重用的语言结构,因此一个程序员精心设计的程序,很难为其它程序所用。(3)当程序的规模达到一定程度时,程序员很难控制程序的复杂性。Date上海交通大学计算机集成技术开放实验室局限性:Date上海交通大学计算机集成技术开放实验室9发展1980年,贝尔实验室的BjarneStroustrup开始对C进行改进和扩充。1983年正式命名为C++。在经历了3次C++修订后,1994年制定了ANSIC++标准的草案。以后又经过不断完善,成为目前的C++。C++仍在不断发展中。美国微软公司现已推出C#(CSharp)语言,来代替C++语言。Date上海交通大学计算机集成技术开放实验室发展1980年,贝尔实验室的BjarneStroustru10编译器VC++6.0或其它(TurborC3.0,BorlandC++)Date上海交通大学计算机集成技术开放实验室编译器VC++6.0Date上海交通大学计算机集成技术开放实11有关面向对象编程的网站/softinfo/objects.html/Technology/OTTerminology.html/oofaq/www.itr.ch/courses/case/oo.html/Date上海交通大学计算机集成技术开放实验室有关面向对象编程的网站12C++的网站/~bs/c++.html/visualc/borlandcpp/cpprod.html/mike/webjr/begcpp.htm/morph/c++/main.htm/Date上海交通大学计算机集成技术开放实验室C++的网站/~bs13Object-Oriented编程简介Date上海交通大学计算机集成技术开放实验室Object-Oriented编程简介Date上海交通大学14内容方法学编程技术面向对象语言Date上海交通大学计算机集成技术开放实验室内容方法学Date上海交通大学计算机集成技术开放实验室151.方法学Date上海交通大学计算机集成技术开放实验室1.方法学Date上海交通大学计算机集成技术开放实验室16思考问题的方法归纳从特殊到一般从不同的dogs到词汇“dog”DogDate上海交通大学计算机集成技术开放实验室思考问题的方法归纳DogDate上海交通大学计算机集成技术开17思考问题的方法演绎从一般到特殊从词汇“dog”,你可以区别出一个动物是还是不是一条狗DOGDate上海交通大学计算机集成技术开放实验室思考问题的方法演绎DOGDate上海交通大学计算机集成技术开18面向对象它是一种思考方法世界上的任何东西都是一个对象;任何系统都是由对象构成的(当然系统也是一个对象);系统的演化和开发就是通过系统内外的对象进行交互完成的。Date上海交通大学计算机集成技术开放实验室面向对象它是一种思考方法Date上海交通大学计算机集成技术开19世界上的任何东西都是一个对象花,树,动物学生,教授桌子,椅子,教室,建筑大学,城市,国家世界,宇宙学科,如计算机,信息系统,数学,历史…Date上海交通大学计算机集成技术开放实验室世界上的任何东西都是一个对象花,树,动物Date上海交通20任何系统都是由对象构成的法律系统文化系统教育系统经济系统信息系统计算机系统Date上海交通大学计算机集成技术开放实验室任何系统都是由对象构成的法律系统Date上海交通大学计算机集21系统开发就是定义对象间的交互浙江林学院是由下列对象的交互构成的:学生教授职员浙江省政府中国政府…...林院内部林院外部Date上海交通大学计算机集成技术开放实验室系统开发就是定义对象间的交互浙江林学院是由下列对象的交互构成22设计方法学面向对象首先是一种设计方法学(OOA/OOD)对象是程序的构成模块(接口对象(editor,menu,file,etc),数据管理对象(db),etc.).对象代表了在应用中对现实世界的抽象.Date上海交通大学计算机集成技术开放实验室设计方法学面向对象首先是一种设计方法学(OOA/OOD)Da23设计方法学面向对象支持归纳:对象->类需要OOA/OOD工具.演绎:类->对象编程者需要学习有关类库的知识Date上海交通大学计算机集成技术开放实验室设计方法学面向对象支持Date上海交通大学计算机集成技术开放24设计方法学面向对象支持Top-down:从超类到子类Bottom-up:从子类到超类Date上海交通大学计算机集成技术开放实验室设计方法学面向对象支持Date上海交通大学计算机集成技术开放25面向对象编程的基础*对象*封装*继承

一般说来,对象是根据类来定义的。我们也可以用一个类来定义另一个类。例如,山地车、赛车和双座自行车都是自行车的一种。用面向对象的术语来说,它都是自行车类的子类或派生类,而自行车类是它们的超类或父类或基类。它们的关系如下图所示:

自行车每一个子类继承了超类的数据和操作,但是,子类并不是局限于超类的数据和操作。例如,双座自行车有两个坐垫,山地车有一个额外的低速齿轮。继承的主要益处是可以复用超类的程序代码*多态赛车三地车双座自行车Date上海交通大学计算机集成技术开放实验室面向对象编程的基础赛车三地车双座自行车Date上海交通大学计26面向对象“世界是面向对象的”----AlanKaysaid.如果你对世界了解,那么你就了解了面向对象.所以,面向对象是容易的.Date上海交通大学计算机集成技术开放实验室面向对象“世界是面向对象的”Date上海交通大学计算机集成技272.编程Date上海交通大学计算机集成技术开放实验室2.编程Date上海交通大学计算机集成技术开放实验室28编程就像写作.如果你能够描绘一样东西,你就可以写一个程序.所以,编程也是容易的.所以,面向对象的编程等于容易+容易,得到“too(2)easy”.编程Date上海交通大学计算机集成技术开放实验室编程就像写作.编程Date上海交通大学计算机集成技术开放实验29编程但是,实际上,编程并不那么容易。因为编一个真正的好的程序是不容易的。它需要编程者的智慧,知识和经验.就象写作一样,要成为一个好的作家,就需要很多的经验和对这个世界的大量知识。学习和练习就必不可少。Date上海交通大学计算机集成技术开放实验室编程但是,实际上,编程并不那么容易。因为编一个真正的好的程序30编程技术非结构化编程过程编程模块化&结构化编程抽象数据类型面向对象编程Date上海交通大学计算机集成技术开放实验室编程技术非结构化编程Date上海交通大学计算机集成技术开放实31非结构化编程我们经常将一个简单的程序写成一个主程序.此处,主程序代表了命令和声明的一个序列,这个系列在整个程序中对全局数据进行修改.MainProgramDataDate上海交通大学计算机集成技术开放实验室非结构化编程我们经常将一个简单的程序写成一个主程序.此处,32缺点这种技术只能用于很小的程序中.例如,如果相同的声明序列在不同的地方要多次出现时,我们就不得不拷贝这些序列。如果其中发生了一个错误,我们就需要对每一个拷贝进行修改.这就导致了我们将这些序列抽取出来,单独命名,并通过调用和返回值的方法来实现多处复用的方法。Date上海交通大学计算机集成技术开放实验室缺点这种技术只能用于很小的程序中.Date上海交通大学计算机33过程编程在过程编程中,你可以将序列归在一个地方过程调用可以被用于调用过程。在调用完成后,控制流继续往下。MainProgramProcedureDate上海交通大学计算机集成技术开放实验室过程编程在过程编程中,你可以将序列归在一个地方MainPr34过程通过参数和子过程(过程的过程),程序就可以写得更有结构并且可以减少错误.例如,如果过程是正确的,那么每一次使用它必然可以获得正确的结果因而,为了查找错误,你就可以缩小查找的范围.Date上海交通大学计算机集成技术开放实验室过程通过参数和子过程(过程的过程),程序就可以写得更有35模块化编程在模块化编程中,具有公共功能的过程被集中在不同的模块中一个程序就不再是一个单一整体构成的了,它被分解成多个小的部分,这些小的部分之间通过调用相互交互,构成了整个程序.Date上海交通大学计算机集成技术开放实验室模块化编程在模块化编程中,具有公共功能的过程被集中在不同的模36MainProgram(Alsoamodule)DataDataData1Module2+DataData2Module1+DataData1Procedure1Procedure2主程序协调多个模块之间的调用,并进行数据的传送Procedure3Date上海交通大学计算机集成技术开放实验室MainProgram(Alsoamodule)Dat37模块化编程每一个模块都可以有自己的数据。这将允许每一个模块来管理内部状态,这些状态可以在调用这些模块中的过程时得到修改.因此,每一个模块都有一个状态,每一个模块在整个程序中通常也最多存在一次Date上海交通大学计算机集成技术开放实验室模块化编程每一个模块都可以有自己的数据。这将允许每一个模块来38结构化编程结构化程序中的三种结构顺序(s1,s2,…,sn)分支(if-then-else)循环Loop(for,do,andwhileloops)程序中有多少结构?Date上海交通大学计算机集成技术开放实验室结构化编程结构化程序中的三种结构顺序(s1,s2,…,sn)39抽象数据类型(ADTs)抽象模型抽象数据类型属性Date上海交通大学计算机集成技术开放实验室抽象数据类型(ADTs)抽象Date上海交通大学计算机集成技40抽象

--问题处理手段为了理解问题,需要将不必要的细节分离出去:你将构造你自己针对问题的抽象视图,抽象模型这个建模过程称为抽象abstraction.Date上海交通大学计算机集成技术开放实验室抽象

--问题处理手段为了理解问题,需要将不必要的细节分离出41问题模型抽象Date上海交通大学计算机集成技术开放实验室问题模型抽象Date上海交通大学计算机集成技术开放实验室42模型模型定义了一个抽象的视图,该视图只关注于与问题和求解者相关的部分。你需要定义下列属性:影响的数据;识别出来的操作;ADT就是一种模型.Date上海交通大学计算机集成技术开放实验室模型模型定义了一个抽象的视图,该视图只关注于与问题和求解者相43Interface

Operations

AbstractDataStructureAbstractDataTypeADTDate上海交通大学计算机集成技术开放实验室AbstractDataStructureAbstrac44定义(ADT)ADT有下列一些特性:1.它提供了一种类型.2.它提供了操作的集合.该集合被称为接口.3.接口的操作是类型数据结构的唯一访问途径.4.原理和前提定义了类型的应用领域.Date上海交通大学计算机集成技术开放实验室定义(ADT)ADT有下列一些特性:Date上海交通大45例子:ADTList类型

List.类型list实例的接口由接口定义文件定义操作:insert,get,append,delete,search,…Date上海交通大学计算机集成技术开放实验室例子:ADTList类型List.Date上海交通大46面向对象的编程对象是由抽象数据类型来的面向对象编程是对象交互的一个网络,每一个对象保存自己的状态程序中的对象通过发送消息进行交互Date上海交通大学计算机集成技术开放实验室面向对象的编程对象是由抽象数据类型来的Date上海交通大学计47Object1Data1+Procedures1DataData1Object3

Data3+

Procedures3Object2Data2+

Procedures2Object4

Data4+

Procedures4Date上海交通大学计算机集成技术开放实验室Object1Data1+Procedures1DataDa48面向对象编程在面向对象编程中,我们直接发送一个消息,而不是去调用一个程序来实现一个功能.粗略地说,每一个对象实现了自己的模块Date上海交通大学计算机集成技术开放实验室面向对象编程在面向对象编程中,我们直接发送一个消息,而不是去49面向对象编程每一个对象负责正确地初始化和销毁自身.相应地,对对象而言,我们就不需要显式地创建和生成过程Date上海交通大学计算机集成技术开放实验室面向对象编程每一个对象负责正确地初始化和销毁自身.Date50模块信息隐藏数据封装抽象数据类型对象面向对象的演化Date上海交通大学计算机集成技术开放实验室模块面向对象的演化Date上海交通大学计算机集成技术开放实验51记住封装(Data&Operations)---信息隐藏的技术——对象的用户不能看到对象的数据和操作的细节.数据抽象----从对象中发现类的过程抽象数据类型----类Date上海交通大学计算机集成技术开放实验室记住封装(Data&Operations)---信息隐523.编码语言Date上海交通大学计算机集成技术开放实验室3.编码语言Date上海交通大学计算机集成技术开放实验室53面向对象语言面向对象编程语言就是能够很方便地支持面向对象概念的语言Smalltalk:1972-1980.C++:1986.Java:1992(Smalltalk+C++).其它:Effile,Objective-C,Ada,...Date上海交通大学计算机集成技术开放实验室面向对象语言面向对象编程语言就是能够很方便地支持面向对象概念54SmalltalkSmalltalk是一个纯的面向对象语言.多数人认为Smalltalk程序比C++程序开发起来更快.Date上海交通大学计算机集成技术开放实验室SmalltalkSmalltalk是一个纯的面向对象语言55Smalltalk丰富的类库,通过继承实现重用Smalltalk拥有动态开发环境。它不是编译的,但是C++是编译的.这使得开发过程更可变,你可以方便地对类和各种情形进行修改Date上海交通大学计算机集成技术开放实验室Smalltalk丰富的类库,通过继承实现重用Date上海交56Smalltalk编程者并不能象在C++中那样立即掌握o-o概念.正因为如此,掌握Smalltalk需要更多地时间.但是多数时间是花在学习面向对象方法学和技术上,而不是编程语言上的。实际上,Smalltalk比C和C++更为简单.Date上海交通大学计算机集成技术开放实验室Smalltalk编程者并不能象在C++中那样立即掌握57C++C++是C的面向对象版本.它与C是一致的(它实际上是C的超集),所以现存的C代码能够包含在C++程序中.C++程序速度快,效率高.这些特性已经使C成为很流行的语言.Date上海交通大学计算机集成技术开放实验室C++C++是C的面向对象版本.它与C是一致

温馨提示

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

评论

0/150

提交评论