面向对象的程序设计c++演示课件_第1页
面向对象的程序设计c++演示课件_第2页
面向对象的程序设计c++演示课件_第3页
面向对象的程序设计c++演示课件_第4页
面向对象的程序设计c++演示课件_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计,杨卫东 左峥嵘华中科技大学 自动化学院,2017秋,教学安排,任课教师杨卫东 副教授Email: ,QQ14223185逸夫科技楼北1003O)左峥嵘 副教授Email: 逸夫科技楼北1003O)学时:32,学分:2上课时间、地点周五,早34节,2-4,6,8-19周C12-S202,前言,IT 技术为基础的信息产业正深入到人类社会生活的方方面面,无论是生产制造、商业、国防和科技等领域、还是第三产业计算机软件现已成为担当重任的核心力量,互联网和软件已成为推动新经济发展的重要基础。AI、云计算,工业监测:组态软件,可视化图像信息处理平台,嵌入式应用软件,导航仪,云狗,数据自动更新,AI应用: 自动图像标注,检测字词:女人、人群、猫、相机、举着、紫色生成句子:一台紫色相机和一个女人。一个女人在人群中举着一台相机一个女人抱着一只猫,前言,软件 程序程序设计与实现语言:汇编、basic、fortran、pascal、C、C+、 Java、C#、Python、PHP、VB,课程目标,讲述面向对象程序设计方法和思想,培养面向对象分析设计的思维习惯系统介绍C+的主要语言特征,使学生掌握C+语言的语法体系,使学生具有阅读、分析和独立编写C+程序的能力培养快速学习编程语言的能力,教学安排,考核方式平时成绩(20%)作业考勤考试(80%),教材和主要参考书,面向对象程序设计,刘正林编,华中科技大学出版社 C+面向对象程序设计教程(第3版),陈维兴、林小茶编著,清华大学出版社深入浅出MFC ,侯俊杰,华中科技大学出版社 C+大学教程(第二版),电子工业出版社,资料网站,VC知识库:/index.php/code,CNNCVC知识库5周年精华珍藏版A/B盘.ISO程序员联合开发网:/,/,/GitHubMcGraw-C.程序调试实用手册.XiDong.Net.pdfC+面向对象程序设计教程习题解答与上机指导Baidu云盘:链接:/s/1sl4XIo9 密码:sw82qq群:555037771,baidu云盘,案例,VC6VS2010 + OpenCV,第1章 面向对象程序设计概述,程序设计语言的发展过程面向过程程序设计面向对象程序设计面向对象程序技术的基本特征C/C+程序特点C+编程规范,程序设计语言的发展过程,面向对象程序设计OOP(Object -Oriented Programming)是计算机软件开发方法的一场革命。“对象” 的概念可追溯到20世纪50年代初, 1980年Grady Booch提出了面向对象设计的概念。高级语言出现使得编写复杂的程序变得容易,可更好地对付日益增加的复杂性。但是,如果软件系统达到一定规模,即使应用结构化程序设计方法,局势仍将变得不可控制。作为一种降低复杂性的工具,面向对象程序设计思想和面向对象语言产生了,并得到迅速的发展和应用低级语言:机器语言与汇编语言高级编程语言及工具Basic, QBasic, Visual BasicPASCALC, Visual C+JavaC#Python,程序设计语言的发展过程,Basic,解释型QBasic,MS-DOS,编译型Visual Basic,Windows,对象属性,是可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,程序设计语言的发展过程,C+是面向对象程序设计语言的第一个大众化版本,是当前学习面向对象程序设计方法的首选语言,为了兼容C,其设计较复杂Java具有完全面向对象特点_TestCodesch10_对话框test1a,Debug,Win32,编程语言对比,编程语言排行榜,IEEE,2017.7,程序设计方法的演变,两种程序设计模式对问题定义的差别传统的方法(面向过程)和面向对象的方法传统方法:把系统看成一个过程的集合体,过程与数据实体交互,过程接受输入而产生输出面向对象方法:是把系统看成一个相互作用的对象集,而这些对象是有行为的(方法)。对象与人和其他对象交互发送和响应消息,面向过程的程序设计,过去所学的各种程序设计语言(包括C语言)都是面向功能的(Function Oriented),称为传统的程序设计语言首先要求编程者详细了解所研究对象的具体细节,包括它的功能、外观、内部结构、各种状态和基本原理等然后再考虑在程序中如何用数据来描述它还要花费很大精力研究出一些算法,设计出一些函数来操作这些数据,改变它的状态,并实现各种功能面向功能的程序定律为:程序 =(算法)+(数据结构),面向过程的程序设计,面向过程结构化程序设计思想:利用过程或函数来抽象和模拟客观现实设计强调:自顶向下、逐步求精模块化语句结构化算法(过程)与数据,面向过程的程序设计,自顶向下、逐步求精是将编写程序看成是一个逐步演化的过程,步步深入,逐层细分,户籍管理系统,户籍迁入迁出,人员迁入迁出,户籍注销,人员注销,录入信息,查询信息,修改信息,返回信息,面向过程的程序设计,模块化是将整个系统分解成若干个模块,每个模块实现特定的的功能,最终系统由这些模块组装而成,人员迁入迁出,录入信息,查询信息,修改信息,返回信息,面向过程的程序设计,语句结构化有顺序、选择、循环三种结构,A,B,S,A,B,S,A,Y,N,Y,N,面向过程的程序设计,结构化程序设计方法所谓“算法”是一个有限条指令的集合,这些指令确定了解决某一特定类型问题的运算序列,它是一个独立的整体数据结构(包括数据类型和数据)也是一个整体两者分开设计,重点放在如何实现细节过程方面,以算法(函数或过程)为主形式:主模块+若干个子模块(如:main()+子函数),面向过程的程序设计,结构化程序的案例通信录程序struct Person char name10; char addr20; char phone11;Person p100;int n=0;void InputData() .void SearchAddr(char *name)void SearchPhone(char *name)void PrintData()Void main()/调用前面编写的函数,完成通信录数据处理,定义数据结构,定义全局数据,定义操作数据的函数,主函数控制程序流程,面向过程的程序设计,结构化程序的问题数据和算法分离程序数据和操作数据的函数是分离的,全局变量,只有函数才能访问,只有函数才能访问,可被任何函数访问,全局变量,面向过程的程序设计,结构化程序设计范列及特点大型程序中,有很多全局数据和全局函数,这导致了函数和数据之间数目巨大的潜在连接!若全局数据有所改动,可能会导致所有访问这个数据若的全部函数的重写,面向过程的程序设计,结构化程序设计方法的局限性开发软件的生产效率低,是手工作坊式的编程难以应付日益庞大的信息量和多样的信息类型难以适应各种新环境随着实践经验的不断积累,软件工程师越来越注重把数据结构与算法看作一个独立功能模块面向对象程序设计方法的产生,面向对象的程序设计,对程序进行重新定义: 程序 = (算法 + 数据结构)算法与数据结构是一个不可分割的整体,因为:算法总是离不开数据结构,算法是用来访问数据结构的,所以算法只能适用于特定的数据结构程序设计时,最好使算法与数据结构构成一对一1:1)的关系若数据结构改变了,必须重新设计算法,面向对象的程序设计,程序代码的可重用性软件升级、可维护性,算法2,数据结构3,数据结构1,数据结构2,数据结构4,数据结构,算法1,算法2,只能与一个对应,同一种操作的不同 算法实现是多余的,算法与数据结构应为1:1关系,面向对象的基本概念,对象(Object)是面向对象程序设计的核心概念“对象”的概念并不神秘,它来源于生活。在现实生活中,其实我们每时每刻都在和对象打交道。例如,一本书、一台电脑、一部电话机,戴的手表、骑的自行车等,在面向对象程序员的眼中无一例外都看成“对象”。如果把问题抽象一下,会发现现实生活中的这些对象具有两个共同特点,第一,它们都有自己的状态。例如,一部电话有机型、大小、颜色等。第二它们都具有自己的行为。例如,电话有通话、拨打、挂起等行为。,面向对象的基本概念,封装性和数据隐藏往往只关注起使用,无需了解具体实现方式无需知道封装单元是如何工作的就能使用的思想称为“数据隐藏”,也具有保护的作用例如:电话、声卡,面向对象的基本概念,面向对象程序设计中,抽象是最基本的原则思想之一抽象是对现实世界中的实体进行简化的描述,使它模型化,即抓住编程者所关心的重要信息,而忽略掉一些不重要的细节部分,这是克服软件复杂性,将现实世界的模型在计算机中自然地表示出来的最好办法因此,人们将对象的状态用数据来表示,称为对象的属性(attribute /Properties),而对象的行为用对象中的程序代码来实现,称为对象的方法(method),并将这数据和程序代码封装在一个实体内,面向对象的基本概念,struct Complex double real; (C语言中的结构体) double imag; class Complex 程序实体private : double real , imag;public : void Set(double r , double i) real = r; imag = i; .;,面向对象的基本概念,void main( ) Complex a , b;/a,b是Complex类的实例变量,即该类的对象 a. Set(4.0 , 6.0);/用成员函数的调用来实现消息发送 b.Set(8.0 , 12.0);/用一条消息可发向多个对象 .因此,对象类是一个“状态”和“操作”的封装体。“状态”是由对象的数据结构的内容及其值定义的,方法是一系列的实现步骤,它由若干个“操作”组成的。例如,一个人有很多信息,姓名、年龄、身高、体重、文化程度、身份证号码等,但最重要的信息是姓名和身份证号码。这是人的重要属性,面向对象程序设计,面向对象程序设计的基本思想在程序空间内,对客观世界中的实体,利用数据抽象的方法进行描述,即将一种数据结构和操作该数据结构的方法捆在一起,封装在一个程序实体内,从而实现了“数据隐藏”和“封装性”把数据结构隐藏在操作的后面,通过“操作”作为接口界面实现与外部的交流(消息传递)对外部来讲,只知道“是做什么的”,而不知道“是如何做的”,面向对象的程序设计,面向对象的程序设计思想OOP(Object-Oriented Programming)自然界是由各种各样的实体(对象)所组成,每种对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了各种不同的系统,进而构成整个客观世界表达为:程序=对象+消息程序设计方法使用面向对象的观点来描述模仿并处理现实问题要求:高度概括、分类和抽象目的:实现软件设计的产业化,面向对象的程序设计,基本概念对象:客观存在的实体称为对象属性:描述对象的特征的数据行为:对象自身的行为,对现实世界某些信息的响应对象之间通过传递消息相互影响,属性,行为,对象由属性和行为构成,面向对象的程序设计,通信录程序在C+中的类代码形式struct Person private:char name10;char addr20;char phone11;public:void InitData() void SearchAddr(char *name);void SearchPhone(char *name);,在+中,struct的功能被扩展了,在struct中不仅可以定义数据,还可以定义函数。数据与函数构成了一个整体。其中的private和public是访问权限。,面向对象的程序设计,面向对象程序设计范列及特点将客观事物的属性和行为抽象成数据和操作数据的函数,并把它们组合成一个不可分割的整体(即对象)的方法能够实现对客观世界的真实模拟,反映出世界的本来面目。从客观世界中抽象出一个个对象,对象之间能够传递消息,面向对象程序设计语言的特征,面向对象程序设计语言:应支持对象、类和继承(Inheritance)等要素类和对象:由于客观世界是复杂的,人们常根据不同的目的将客观事物加以区别,按照事物的状态和特性(属性)、行为或用途进行分门别类,这就是归纳分类,简称“归类”Class在程序空间内,这种归类的结果便是逐步抽象的过程,最终可抽象出具有相同属性和行为的某一类对象。就可以编写此类(Class)的代码,实现抽象数据类型(ADT,Abstract Data type)客观世界是由各种对象(Object)组成,任何事物都是对象,对象是某个类(Class)的实例(instance),举例对象和类,例如,对于各种各样的飞机,今天看见一架波音747,它是一个对象,明天又看到一架图154,它也是一个对象,如此等等。如果将这一类对象抽取它们的共同特性,便可构造一个类”Airplane”(飞机)。描述飞机的所有共有特性:凡是飞机都能在空中飞行,具有改变飞行方向,控制飞行高度和速度的操作。飞机都具有机名、机型、飞行速度、高度、方向等数据,用来描述飞机的结构特性和状态等。而每架具体的飞机自然可作为这种类”Airplane”的一个实例。所以该类的抽象数据类型ADT为:飞机的属性飞机的操作(方法) 机名 改变飞行高度 机型 改变飞行方向 飞行高度 改变飞行速度 飞行方向 飞行速度,矩阵CMatrix ?,什么是类类是面向对象程序设计封装的基本单元,它被当作一个样板,用来生产该类的所有对象,就象将“类”比如成“饼干模具”,用来生产“饼干”之类的“对象”一样一个类的所有对象都具有相同的数据结构,并且共享实现操作的程序代码。这就是说,在创建一个新对象时,该对象具有“类”定义中所描述的相同数据结构和操作它们的方法所对应的程序代码。而不必对每个新创建对象的操作代码和数据结构重新编写一次,从而大大减轻了编程者的劳动强度再加上无数软件技术人员对OOP语言系统完成了标准类库的设计工作,形成了“应用程序框架”(Application Framework)机制,为面向对象应用程序设计提供了有力的支持。例如Visual C+已为OOP应用程序的编程者提供了MFC(Microsoft Foundation Class)标准类库和ATL(Active Template Library)活动模板类库作为“应用程序框架”。已为编程者预先定义了许多象窗体、按纽、滚动条和对话框等对象的标准类。当编程者需要这些类的对象时,例如要创建一个新的窗体,只需用窗体类创建一个实例即可,既然现实世界是由各种对象组成,任何对象都具有一定的属性与操作,也就总能用数据结构和算法(操作该数据结构的方法)两者合一地加以描述。这样前述程序定律就变成:对象 =(算法 + 数据结构)程序 =(对象1 + 对象2 + .) 即程序就是许多对象在计算机中相继表现自己,而对象又是一个个程序实体。人们不再静止地去看待数据结构了,而把它看成是一个程序单位,一个程序分子或者一个对象的象征。它本身又包含有算法和数据结构,即“对象”,如图1.3所示。,数据结构,算法+数据结构,算法+数据结构,算法,对象,算法+数据结构,算法+数据结构,算法+数据结构,算法+数据结构,图1.3 构成程序的对象,OOP采用消息(message)传递机制作为对象之间相互通信和作用的唯一方式。传统的结构化程序设计方法强调功能抽象和模块性,正如图1.4所示,每个模块都是一个过程,其输入与输出对应着处理过程前、后的数据。因此结构化程序设计方法将解题过程看作一系列的处理过程。由编程者编写调用“过程”的程序,对于相同的输入数据经“过程”处理后,每次输出结果都相同的,编程繁琐,使用不灵活。,图1.4 传统的结构化方法,数据1 数据2 参数 f2( ) 返回值,过程2,参数 f1( ) 返回值 数据3,数据5,过程1 数据4 参数 f3( ) 返回值,过程3,对象与传统的结构化程序设计方法中所说的数据有本质区别,对象本身具有很强的独立性,它不象结构化程序设计方法中的数据被动地等待对它执行某种操作,而是操作处理的主体,必须发消息(message)请求对象执行它的某个(算法)操作,正如图1.5所示,(算法)操作不是独立存在的实体,而是隶属于对象的,是对象的功能体现其中MF1(Method Function,方法函数),.,MF4是隶属于对象的方法函数。每当需要改变对象的状态时,只能向对象发送消息来处理对象,消息带来了执行该操作的详细信息C+是利用成员函数调用来实现消息发送。在成员函数体内,处理对象的数据改变其状态,对象收到消息后,按消息提供的详细信息(包括目标对象、所请求的操作方法和参数)激活本对象内相匹配的操作(成员函数),并执行该操作,返回所需要的结果,以响应这条消息。并且,同一条消息可同时发至多个对象,并允许这些对象按照自身的状态加以响应。因此与过程调用不同,同样的输入数据,可能因对象的状态不同而产生不同的输出结果,图1.5 面向对象方法,消息2,MF1 MF1,MF4 对象1 MF2 MF4 对象2 MF2,MF3 MF3,消息1,继承,对象类将按照“父类”(或称基类),“子类”(或称派生类)的关系构成一个层次结构的系统。称为“类层次结构”。在这种“类层次结构”中,上层对象类所具有的属性和方法全部被下层对象类自动继承。因此,越在上层的类越具有普遍性和共性,越在下层的类越细化,越具体和专门化。(1)继承将客观世界中一般和特殊的关系模型化成层次结构。,图 1.6 “人”的类层次结构图,举例,例如图1.6所示,小学生、中学生、大学生和研究生可归纳为“学生”,教授、讲师、助教可归纳为“教师”,学生、工人、教师、农民、.又可进一步用“人”加以概括,从而形成了类层次结构,一个类的上层可以有父类,下层可以有子类。例如:最上层的对象类“人”是“学生”类的基类而“学生”又派生出“小学生”、“中学生”、“大学生”、“研究生”等派生类。 在一个“类层次结构”中,每个类只允许一个基类时,类的继承是单继承,即类的层次结构为树结构。最上层的“人”为根结点,最下层的“小学生”、“中学生”、“大学生”、.等为叶结点,除根结点外,每个类都有它的基类,除了叶结点外,每个类都有它的派生类。一个派生类可以从它的基类那里继承所有的数据和操作,并扩充自己的特殊数据及其操作。基类抽象出共同的特征,派生类表达差别。当允许一个类有多个基类时,类的继承是多重继承。图1.6中“研究生”子类中,既攻读学位又从事教师工作时,就出现了既属于学生又属于教师的情况。ANSI C+ 支持多重继承,因此功能更强,使用更方便。,实例 :研究生 王 平,图1.7 类的继承,(2)通过继承增强程序代码的可重用性(reusable),代码的重用是利用继承基类的属性和方法来实现的。 例如,由于研究生是学生的派生类,而学生又是人的派生类。因此,对于任一位研究生都应具有本类的属性:“专业”和“入学年月日”,还应当继承学生的属性:“学校名称”和“学号”,进而向上还应该继承人的属性:“身份证号码”和“姓名”。 (3)在创建新的派生类时,只要指明新派生类是以哪一个已存在的类作为基类派生而来,就可自动继承基类的全部属性和方法。即新派生类只需定义新增加的属性和方法,不必再重复定义基类已有的属性和方法,减少了程序的冗余信息,节省了存储空间。如图1.7所示,在创建新的派生类例如学生时,只要指明新派生类是以“人”作为基类派生而来,就可自动继承基类“人”的全部属性和方法。即新派生类“学生”不必再重写一遍基类“人”中的“身份证号码”和“姓名”的程序代码,只需写出新增加的“学校名称”和“学号”等。同样只要指明研究生是学生的派生类,它自动继承了“身份证号码”、“姓名”、 “学校名称”、“学号”等。减少了程序的冗余信息,节省了存储空间。,(4)修改和扩充程序时也不必修改原有的程序代码,只需增加一些新的代码,因而也无需知道原有的程序模块是如何实现的,从而极大地减少了软件的维护工作量,这是实现软件重用的重要机制。 类的层次结构和继承性使得相似的对象可以共享程序代码的数据,不同对象的共有特性只需定义一次。从而大大减少了程序中的冗余信息。在创建新的派生类时,只要声明新的派生类以哪一个已存在的类作为基类,就可自动继承基类的全部特性,即新派生类不必再重定义基类已有的性质,减少程序的冗余信息,节省存储空间。同时使得用户在编写程序时不必从零开始,可继承原有程序模块的功能。修改和扩充程序时也不必修改原有的程序代码,只需增加一些新的代码,因而无须知道原有的程序模块是怎样实现的,从而极大地减少了软件维护工作量,这是实现软件重用的重要机制。 在软件开发过程中,编程人员一次又一次地重复编制一些基本模式:分类,搜索,读写,分配,同步,比较.但这些事情并不是每 次都一模一样的,有非常多的细节需要变化,因此软件工程师大多情况下是这样做的,时时不断地在同一主题上,精心雕琢着一个个新的变种。,4.面向对象和软件“I C (Integrated Circuits ) a.软件 IC 的概念。 在软件工程中要提高软件的生产率就应当走类似硬件的道路,应该有软件的“集成电路”(称软件 I C)。因此,必须寻找一种能够比较容易地将正确成熟的软件单元应用于新的软件系统中的技术。最好有一种集成机制,将已经成熟的软件单元制成一个相对独立的实体,使它们可以不加改动或很少改动就可以应用于新的软件系统中。只有这样生产软件才可望减少重复劳动,提高生产率。“软件 I ” 的概念就是基于这一思想的一种软件集成机制。“软件 I C 是一种可重用模块。具有如下特征:,(1) 模块性好,独立性强,可靠性高。一个“软件 I C 是用于构造新软件系统的基本单位,应是可以独立存在的实体,它应当不受或少受外界的影响,以便自由地为各个不同的软件系统所用。 (2) 封装功能,连接简单,使用方便,作为集成机制,“软件 I C 必须将集成的功能封装起来,使用者不必搞清楚它的内部细节,便能方便地连接,安全地用于新的软件,提高了软件的生产率。(3)内部功能的高效实现和清晰,简明的说明。软件 I C 是可重用的,内 部代码实现的高效与否,直接影响到软件系统的性能。作为产品交给用户,它应当具有类似于硬件集成插件的功能及各项指标的说明,以便使用户可以根据需要选择合适的“软件 I C ”。,在面向对象语言中,对象类充当了系统构造的单元,支持“软件 I C ”技术。这是因为: (1) 类是一类对象的统一模板;它具有很强的模块性。类的功能代码实现只通过外部接口与外界联系,具有很强的独立性,其可靠性表现在一个类 的出错不会传播到其它类中,一个系统的类如果出错了,可以将其删除,作为一个降级的的系统使用,而不会使整个系统瘫痪。 (2) 类是对象一级的抽象,它将一类对象的数据结构的描述和其功能封装起来,使得外界不必清楚其内部实现细节,只要从它的说明中了解其基本功能,就可以使用它。 (3) 类之间的连接有继承性描述和一组外协消息,因而清晰,明了。,因此,面向对象方法实际上是当前软件开发中最接近问题的一种方法它产生一种与现实世界具有自然关系的软件系统,是软件开发的一场革命。但面向对象的研究还不成熟。我们不能指望在许多领域马上有类似上述“软件 I C 的产品出售,但在一个开发小组,或一个开发项目中自觉地“按对象方式思维( thinking like an object )”,采用面向对象的思想开发和组织软件系统是很有必要的。,开发工具,1. 应用程序框架:是C+产品所提供的一个开发工具,有了它可以大大减少编写代码的工作量,它为编程者提供了极好的“拿来即用”的能力,充分体现了OOP的代码的可重用性。 OOP是软件开发领域的一次革命,它把事物分解成一个个的模块,就象是一个个集成电路块,每个模块完成一定的功能,只要各个模块是现成的,象集成电路块是一块块标准的芯片,我们就可以用它组合成一个新的应用软件,windows 系统(windows 3.1 + DOS V6.22 , windows 95 ,Windows NT. .)为微机提供了一个先进的OS,界面漂亮,使用方便, 功能强大。但在Windows 环境下编写应用程序的开发方法与 DOS 的应用程序有很大的差别。Windows 是采用OOP 的程序设计方法来设计的。只有采用这种方法设计才能和Windows 系统保持一致。发挥Windows 的优势,但它的程序设计思想在概念和结构上与DOS的应用程序有本质的区别,C+的产品理应提 供一种开发工具,以确 保开发的高质量和高效率。,OWL,Borland C+采用一种新的应用程序机制,即应用程序框架称为对象窗口库(Object Windows Library)简称OWL。它在Windows下以图形方式运行,OWL由于对应用程序代码隐藏了许多底细,消除了许多Windows 应用程序开发中的繁琐工作。从而大大简化了Windows 应用程序的编写过程。比如,Windows把窗口作为一标准窗口类,在自行编写 的应用程序中自然要借用它来描述窗口的行为。虽然OWL提供了极其丰富的标准类库,但它不能把所有的问题全部包括在内,比如在一个应用程序中需要一个特殊形状的按钮,我们就不能直接利用OWL提供的标准类。而需要自行定义一个按钮类的派生类,在派生类中把特殊的需要加进去,特别在开发复杂程序的过程中。其思路必须使用“框架”的概念,利用OWL可以替编程者开发的应用程序创建合适的框架,并附有大量的插座,允许插入指明应用程序“做什么”的代码段。如图 所示,已有现存的标准模块,A、B ,类似于硬件的标准芯片。OWL应用程序框架可提供大量的插座,插座 A 、B指明模块A、B“做什么 ”,正如同硬件一样构成一个新的应用程序。而编程者不能了解模块A和B,“怎么做”的具体细节,也不必掌握太多的框架知识,就能象用现成的集成电路标准芯片组合成一个新的机器。 微软公司Visual C+ 提供的应用程序框架是微软基类数据库Microsoft Foundation Classes. 简称MFC,它已成为所有应用程序开发的标准。 Symantec C+ 通过设置编译器和链接器,既能具有支持MFC的途 径,又能具有支 持OWL的途径。 而IBM 公司的Visual Age C+ 的应用程序框架目前只能无可奉告。由于它的性能较差,尚不能成气候,今后如何只能拭目以待。,2. 执行速度。执行速度最快 的要数Symantec C+;其运行之快的原因,是它的链接器完全是由汇编语言手写 的,这意味着它能优化到处理器层。Borland C+在Windows 95 上比 Visual C+要快。但在Windows NT 是它 比Visual C+ 要快。3. 对Java语言的支持,由于计算机联网已成大势所趋。Java 语言也已成为网络上的编程语言。是目前公认的Internet 网上的世界语。Sun Micro System 公司推出 。它由C+ 发展而来。保留了大部分C+内容。它是面向网络的语言。其类库中所提供的网络软件包支持TCP/ IP (Transmission Control Protocol / Intersection Protocol 传输控制协议/ 互联协议)协议用于Internet 访问。具有语法规范,完全面向对象,与平台无关,支持多线程机制,健壮灵活等优点。是面向网络的一种类似于C/ C+ 的高级语言。,Java 语言采用Java虚拟机的概念,所谓Java 虚拟机VM (Virtual Machine )是一种想象中的机器,在实际的计算机上通过程序模拟来实现。如图 所示Java VM 屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标码(字节码),就可以在多种平台上不加修改地运行,Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这种结构模式的中立原则。非常适合Internet 网的多平台特性。为了提高执行速度 Sun Micro System 公司推出了Java芯片。即用硬件芯片实现Java 虚拟机。Java虚拟机由一组指令集,一组寄存器,一个堆栈,一个垃圾(无用单元)回收堆(Garbage Collected Heap ).一个方法区域等五部分组成。它支持大约248个字节码,每个字节码执行一种基本的CPU运算和操作。Java 指令集相当于Java程序的 汇编语言。用Java编写 的小型可视化应用软件为“Applets. Applets 被编译后,便成为在VM上使用的中间语言。可在任何CPU,任何操作系统OS 的平台上运 行。即平台无关性。特别可在不带软盘/硬盘,内存8M 价格500美元的NC(Network Computer) 上运行。,C/C+程序特点,标识符关键字预处理语句函数输入输出注释符,C/C+程序特点,为了理解C+程序的特点,先看一个小的示例程序:/This is a C+ program #include void main( ) double x , y; cout x y ; double z = x + y ; cout x + y = z 等。它的定义和说明语句放在iostream.h的头文件中,必须写上:#include ,3.输入(Input)/输出(Output)流操作,C+源程序总少不了I/O的语句,几乎每个源程序都要用到,首先作一简单介绍。(1)输入运算符和输出运算符右移运算符、右移运算符和左移运算符赋予了新的含义和功能,用来作为输入/输出运算符。,C/C+程序特点,(2)左移运算符“” 输出运算符(插入符 Inserting、putting) 数据的流动 终点 源点cout(CRT显示器) 程序中的对象名;例如在示范程序中: . cout ”Enter two float number:”; double z = x + y; cout ”x + y = ” z x y;希望显示一下x和y的值,校核键盘输入的值可加入如下一条语句: cout ”x=” x “ty=” y ” 输入运算符(提取符extracting、getting)数据的流动 源点 终点 cin(键盘) 程序中的变量名(或对象名) 例如示范程序中: double x , y; cin x;读取从键盘敲入的数据,传递给程序中的变量x。,a.由于从键盘进行输入操作时,应允许用户敲错,即需要处理输入操作中的语法错。输入的数据类型分为整型、浮点型和字符串等三种。,对于整型和浮点型的输入,输入运算符跳过空白符(它包括空格符space、 换行符、水平制表符等),然后读取对应于输入变量类型的值。读输入的过程一直进行到回车键和一个不合法部分出现时,输入处理停止。,#include void main( ) cout i; cout f; cout n The two numbers were i and i;)没有接收字符b就结束,输入操作在字符b的位置上停止处理。第2次输入操作(cin f;)遇到的第一个字符是b,因此输入操作立即结束,变量f所得的值为零。错误的输入方法:Type a number : 12.23(cr)Type another number : (cr)The two numbers were 12 and 0.23,C/C+程序特点,将值12和0.23分别赋给i和f,这是因为对于整型变

温馨提示

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

评论

0/150

提交评论