第一章-面向对象程序设计课件

上传人:仙*** 文档编号:241632406 上传时间:2024-07-11 格式:PPT 页数:81 大小:1.53MB
返回 下载 相关 举报
第一章-面向对象程序设计课件_第1页
第1页 / 共81页
第一章-面向对象程序设计课件_第2页
第2页 / 共81页
第一章-面向对象程序设计课件_第3页
第3页 / 共81页
点击查看更多>>
资源描述
大家好大家好1C+面向对象程序设计面向对象程序设计2C+面向对象程序设计面向对象程序设计学分学分:学时学时:任课教师任课教师:助教助教:3学习体会学习体会学习学习C+编程技术,必须了解和掌握编程技术,必须了解和掌握C+制订的制订的各种规则,然后应用这些规则写程序,也就各种规则,然后应用这些规则写程序,也就容易了。这与学习开车,首先要学习交通规容易了。这与学习开车,首先要学习交通规则,然后才能驱车上路的道理相同。但与则,然后才能驱车上路的道理相同。但与Basic和和C等语言相比,等语言相比,C+的规则确实多出的规则确实多出许多,掌握它必须付出努力!然而一旦掌握许多,掌握它必须付出努力!然而一旦掌握了这些规则,对于学习掌握面向对象编程技了这些规则,对于学习掌握面向对象编程技术,乃至于学习术,乃至于学习JAVA,C#及及VB.net之类的之类的编程语言,也就容易多了。编程语言,也就容易多了。千里之行,始于足下!千里之行,始于足下!4参考书C+C+程序设计教程程序设计教程-清华大学出版社,钱能清华大学出版社,钱能C+Primer C+Primer 中中文文版版 -中中国国电电力力出出版版社社,Stanley Stanley B.Lippman B.Lippman 著,潘爱民,张丽译著,潘爱民,张丽译C+C+程程序序设设计计语语 -机机械械工工业业版版社社,Bjarne Bjarne Stroustrup Stroustrup 著,裘宗燕译著,裘宗燕译VC+VC+与面向对象程序设计教程与面向对象程序设计教程高等教育出版社,刘路放高等教育出版社,刘路放VC+VC+面面向向对对象象与与可可视视化化程程序序设设计计-清清华华大大学学出出版版社社,黄黄维维通通深深度度探探索索C+C+对对象象模模型型-华华中中科科技技大大学学出出版版社社,Stanley Stanley B.Lippman B.Lippman 著,侯俊杰译著,侯俊杰译深入浅出深入浅出MFCMFC华中科技大学出版社,侯俊杰华中科技大学出版社,侯俊杰5第第1章章 面向对象程序设计概述面向对象程序设计概述本章主要讲述:本章主要讲述:1.1.计算机程序语言的发展演变过程计算机程序语言的发展演变过程2.2.面各对象程序技术的基本特征面各对象程序技术的基本特征3.3.面向过程与面向对象程序设计面向过程与面向对象程序设计4.C+程序的结构及数据输入与输入程序的结构及数据输入与输入5.VC+实例编程实例编程61.1 计算机程序设计语言的发展计算机程序设计语言的发展本节主要介绍计算机语言的发展过程:本节主要介绍计算机语言的发展过程:机器语言机器语言汇编语言汇编语言高级语言高级语言面向对象程序设计语言面向对象程序设计语言着重了解面向过程(即结构化程序)着重了解面向过程(即结构化程序)和面向对象程序设计在程序结构、程和面向对象程序设计在程序结构、程序思想上的差别。序思想上的差别。71.1.1机器语言机器语言1.1.指令指令就是指计算机能够识别的命令,它们是一些由就是指计算机能够识别的命令,它们是一些由0和和1组合成的二进制编码。组合成的二进制编码。2.2.指令系统指令系统计算机硬件系统能够识别的所有指令的集合。计算机硬件系统能够识别的所有指令的集合。3.3.机器语言机器语言最早的程序设计语言,它由计算机能够识别的二最早的程序设计语言,它由计算机能够识别的二进制指令系统构成。进制指令系统构成。81.1.2汇编语言汇编语言1、汇编语言、汇编语言用用一一些些便便于于记记忆忆的的符符号号代代替替机机器器语语言言中中的的二二进进制制指指令令代代码码,就就将将二二进进制制的的机机器器语语言言转转换换成成了了一一种种便便于于记记忆忆的的符号语言,这就是汇编语言。符号语言,这就是汇编语言。2、与机器语言的比较、与机器语言的比较汇编语言编程比机器语言简单。汇编语言编程比机器语言简单。同同机机器器语语言言一一样样,它它仍仍然然是是与与机机器器相相关关的的。不不同同机机器器系系统统的的汇汇编编语语言言并并不不相相同同,要要在在不不同同硬硬件件系系统统(其其指指令令系系统统不不同同)的的计计算算机机上上完完成成相相同同的的任任务务,需需要要编编写写不同的汇编程序。不同的汇编程序。91.1.3高级语言高级语言1高级语言的概念及特征高级语言的概念及特征高高级级语语言言屏屏蔽蔽了了与与机机器器硬硬件件相相关关的的细细节节,采采用用具具有有一一定定含含义义的的命命名名符符号号和和容容易易理理解解的的程程序序语语句句进进行行程程序序设设计计,不不仅仅大大大大降降低低了了程程序序设设计计的的难难度度,而而且且也也使使程程序序易易被被人人们理解。们理解。高级语言程序的通用性和可移植性更高高级语言程序的通用性和可移植性更高与人们自然思维很接近,编程更容易、简单与人们自然思维很接近,编程更容易、简单101.1.3高级语言高级语言2、结构化程序设计的基本内容、结构化程序设计的基本内容结构的类型结构的类型顺利、分支、循环顺利、分支、循环结构化程序设计思想结构化程序设计思想利用过程或函数来抽象和模拟客观利用过程或函数来抽象和模拟客观现实现实。111.1.3高级语言高级语言2、结构化程序设计方法、结构化程序设计方法重点放在如何实现细节过程方面,将数据与函数分开。重点放在如何实现细节过程方面,将数据与函数分开。形式:主模块形式:主模块+若干个子模块若干个子模块(如:(如:main()+子函数)。子函数)。特点:特点:自顶向下,逐步求精自顶向下,逐步求精功能分解。功能分解。缺点:效率低,是手工作坊式的编程。缺点:效率低,是手工作坊式的编程。121.1.3高级语言高级语言全局变量全局变量局部变量局部变量函数函数局部变量局部变量函数函数只有函只有函数才数才能访问能访问只有函只有函数才数才能访问能访问可被任何函数访问可被任何函数访问全局变量全局变量3、结构化程序、结构化程序的问题的问题数据也算法分离,程序数据和数据也算法分离,程序数据和操作数据的函数是分离的。操作数据的函数是分离的。131.1.3高级语言高级语言structPersoncharname10;charaddr20;charphone11;Personp100;intn=0;voidInputData().voidSearchAddr(char*name)voidSearchPhone(char*name)voidPrintData()Voidmain()/调用前面编写的函数,完成通信录数据处理调用前面编写的函数,完成通信录数据处理4、结构化程序、结构化程序的案例的案例个人通信录程序个人通信录程序定义数定义数据结构据结构定义全定义全局数据局数据定义操作定义操作数据的函数据的函数数主函数控主函数控制程序流制程序流程程141.1.3高级语言高级语言大型程序中,有很多全局数据和全局函数,这大型程序中,有很多全局数据和全局函数,这导致了函数和数据之间数目巨大的导致了函数和数据之间数目巨大的潜在连接潜在连接!若全局数据有所改动,可能会导致所有访问这个若全局数据有所改动,可能会导致所有访问这个数据若的全部函数的重写数据若的全部函数的重写全局数据全局数据全局数据函数函数函数函数5、结构化程序、结构化程序设计范型设计范型151.1.4面向对象程序设计语言面向对象程序设计语言1、面向对象程序设计观点、面向对象程序设计观点自然界是由各种各样的实体(对象)所组成自然界是由各种各样的实体(对象)所组成,每种对象每种对象都有自己的内部状态和运动规律都有自己的内部状态和运动规律,不同对象之间的相互不同对象之间的相互联系和相互作用就构成了各种不同的系统联系和相互作用就构成了各种不同的系统,进而构成整进而构成整个客观世界个客观世界.2、程序设计方法:使用面向对象的观点来描述模、程序设计方法:使用面向对象的观点来描述模仿并处理现实问题。仿并处理现实问题。要求:高度概括、分类和抽象。要求:高度概括、分类和抽象。3、目的:实现软件设计的产业化。、目的:实现软件设计的产业化。161.1.4面向对象程序设计语言面向对象程序设计语言4、基本概念、基本概念对象对象客观存在的实体称为对象客观存在的实体称为对象属性属性描述对象的特征的数据描述对象的特征的数据行为行为对象自身的行为,对现实世界某些信息的应对象自身的行为,对现实世界某些信息的应对象之间通过传递消息相互影响对象之间通过传递消息相互影响属性行为行为对象由属性和对象由属性和行为构成行为构成171.1.4面向对象程序设计语言面向对象程序设计语言structPersonprivate:charname10;charaddr20;charphone11;public:voidInitData()voidSearchAddr(char*name);voidSearchPhone(char*name);5、通信录程序在、通信录程序在C+中的类代码形式中的类代码形式在在+中,中,struct的功能的功能被扩展了,在被扩展了,在struct中中不仅可以定义数据,还不仅可以定义数据,还可以定义函数。数据与可以定义函数。数据与函数构成了一个整体。函数构成了一个整体。其中的其中的private和和public是访问权限。是访问权限。181.1 计算机程序设计语言的发展计算机程序设计语言的发展将客观事物的属性和行为抽象成数据和操作数据的函数,并把将客观事物的属性和行为抽象成数据和操作数据的函数,并把它们组合成一个不可分割的整体(即对象)的方法能够实现对它们组合成一个不可分割的整体(即对象)的方法能够实现对客观世界的真实模拟,反映出世界的本来面目。从客观世界中客观世界的真实模拟,反映出世界的本来面目。从客观世界中抽象出一个个对象,对象之间能够传递消息抽象出一个个对象,对象之间能够传递消息数据成员函数成员函数成员函数成员函数数据成员函数成员函数成员函数成员函数数据成员函数成员函数成员函数成员函数对象对象对象对象对象对象消息消息消息消息消息消息6、面向对象、面向对象范型范型191.2面向对象程序语言的特征面向对象程序语言的特征本节主要介绍类与对象的基本概本节主要介绍类与对象的基本概念,以及面向对象程序设计的主念,以及面向对象程序设计的主要特征要特征201.2.1类与对象类与对象1.对象的基本概念对象的基本概念对象对象:用来描述客观事物的一个实体,它是构成系用来描述客观事物的一个实体,它是构成系统的一个基本单元。一个对象具有一组属性和行。统的一个基本单元。一个对象具有一组属性和行。实体对象实体对象 一台计算机一台计算机抽象对象抽象对象 一项计划一项计划对象构成要素对象构成要素:1.1.对象标识符:是对象的名称,用来区别与其他对象。对象标识符:是对象的名称,用来区别与其他对象。2.2.属性属性:是用来描述对象静态特征的一个数据项。是用来描述对象静态特征的一个数据项。3.3.行为行为:是用来描述对象动态特征和行为的一个操作。是用来描述对象动态特征和行为的一个操作。211.2.1类与对象类与对象对象示例对象示例1:一个:一个“学生学生”对象的例子对象的例子对象名对象名:学生:学生对象的属性对象的属性:学号:学号:123456姓名:令狐冲姓名:令狐冲年龄:年龄:18专业:信管专业:信管行为行为修改学号、姓名、专业、年龄等等修改学号、姓名、专业、年龄等等221.2.1类与对象类与对象对象示例对象示例2:一个:一个“课程课程”对象的例子:对象的例子:对象名对象名:课程:课程对象的属性对象的属性:课程号:课程号:123456课程名:程序设计课程名:程序设计任课教师:莫名任课教师:莫名选课要求:选课要求:学时:学时:48行为行为获取并修改课程名、课程号、学时数、选课要求、任课教师获取并修改课程名、课程号、学时数、选课要求、任课教师等等231.2.1类与对象类与对象2.类的基本概念类的基本概念类类:是具有相同属性和行为的一组对象的集合是具有相同属性和行为的一组对象的集合,它为属它为属于该类的全部对象提供统一的的抽象描述于该类的全部对象提供统一的的抽象描述类和对象的关系类和对象的关系:类:类对象对象抽象定义抽象定义实例实例类类 对象举例对象举例学生学生 学生王强学生王强课程课程 C+程序设计程序设计类型类型 变量变量,如如C语言中的语言中的 int和和 intx;类的实例类的实例用类定义的类变量,即对象。类是对多个特性相同用类定义的类变量,即对象。类是对多个特性相同的对象实例的抽象,所以同一类的不同实例之间必有:的对象实例的抽象,所以同一类的不同实例之间必有:相同的操作集合相同的操作集合相同的属性集合相同的属性集合不同的对象名,分配有不同的存储空间。不同的对象名,分配有不同的存储空间。241.2.1类与对象类与对象3、类的确定与划分类的确定与划分类的确定类的确定对所遇到的对象进行分析、归纳,根据对所遇到的对象进行分析、归纳,根据共同的特征来确定一个类。共同的特征来确定一个类。类的确定的方法:类的确定的方法:判断是否有一个以上的实例判断是否有一个以上的实例判断类的实例中是否有绝对的不同点判断类的实例中是否有绝对的不同点类的划分不是绝对的,可以根据不同的实际需要确定类的划分不是绝对的,可以根据不同的实际需要确定不同的类不同的类251.2.1类与对象类与对象4、类的描述类的描述类的描述类的描述不同的不同的OOP语言用不同的描述形式。在语言用不同的描述形式。在C+中用关键字中用关键字class来定义描述一个类。来定义描述一个类。classclassnamepublic:/publicmembers/friendfunctionprototypesprivate:/privatemembers;261.2.2抽象与封装抽象与封装1、封装性封装性封装封装encapsulation将数据和与这个数据有关的操作集合将数据和与这个数据有关的操作集合在一起在一起,形成一个实体形成一个实体对象,且尽可能隐藏对象的内部细节对象,且尽可能隐藏对象的内部细节特点特点:具有一个清楚的边界具有一个清楚的边界,对象的所有私有数据、内部程序(成员函对象的所有私有数据、内部程序(成员函数)细节都被固定在这个边界内。数)细节都被固定在这个边界内。具有一个接口,描述了对象之间的相互作用、请求和响应具有一个接口,描述了对象之间的相互作用、请求和响应消息消息对象内部的实现代码受到封装壳的保护,其它对象不能直接修对象内部的实现代码受到封装壳的保护,其它对象不能直接修改本对象所拥有的数据和代码。改本对象所拥有的数据和代码。封装的单位是对象。封装的单位是对象。271.2.2抽象与封装抽象与封装1、抽象、抽象抽象(抽象(abstract)是指有意忽略问题的某些细节和与当前)是指有意忽略问题的某些细节和与当前目标无关的方面,以便把问题的本质表达得更清楚。目标无关的方面,以便把问题的本质表达得更清楚。案例:案例:VCDVCD机器的抽象机器的抽象281.2.2抽象与封装抽象与封装2、封装性、封装性从外面看只能看到对象的外部特性,即能够受理哪些信息,具有从外面看只能看到对象的外部特性,即能够受理哪些信息,具有哪些处理能力;对象的内部,即处理能力的实行和内部状态,对哪些处理能力;对象的内部,即处理能力的实行和内部状态,对外是不可见的。外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。态,对象的内部状态只能由其自身改变。封装的优点:封装的优点:1.降低部件间的耦合度,提高部件的独立性降低部件间的耦合度,提高部件的独立性2.具有隐藏性和安全性具有隐藏性和安全性(如银行的帐户如银行的帐户)3.易于维护易于维护(由于数据独立由于数据独立,易于发现问题易于发现问题)4.封装将对象的使用者与设计者分开封装将对象的使用者与设计者分开,使用者只需要通过接口访问对使用者只需要通过接口访问对象象,不必须了解对象的内部细节不必须了解对象的内部细节.提高了软件复用提高了软件复用.封装的缺点:封装的缺点:需要更多的输入输出函数。需要更多的输入输出函数。293、封装的形式class classnamepublic:/public members/friend functionprivate:/private members;Public 成员成员1Public 成员成员2Public 成员成员nPrivate一个一个Class定义了一种抽定义了一种抽象的数据类型象的数据类型,用户只能用户只能访问访问Public成员成员,不能直接不能直接访问访问Private成员成员直接访问直接访问private是是禁止的禁止的边边界界301.2.2抽象与封装抽象与封装4、抽象与封装形成了程序接口与实现的分离、抽象与封装形成了程序接口与实现的分离311.2.3继承继承1、继承的基本概念、继承的基本概念古语:古语:龙生龙,凤生凤,老鼠生儿会打洞龙生龙,凤生凤,老鼠生儿会打洞继承:对象类之间的相交关系继承:对象类之间的相交关系,使得某类对象可以继承另外使得某类对象可以继承另外一类对象的特征和功能一类对象的特征和功能类间具有继承关系的特性类间具有继承关系的特性:类间具有共享特征类间具有共享特征(包括数据和程序代码的共享包括数据和程序代码的共享):遗传:遗传类间具有细微差别或新增部分类间具有细微差别或新增部分(包括非共享的程序代码和数据包括非共享的程序代码和数据):变:变异异类间具有层次结构(类间具有层次结构(如同人类通过继承构成了家簇关系一样如同人类通过继承构成了家簇关系一样)321.2.3继承继承2、继承分类、继承分类从继承源上划分:单继承(一个派生类只有一个基类)、多继承(一个从继承源上划分:单继承(一个派生类只有一个基类)、多继承(一个派生类有多个基类)派生类有多个基类)从继承内容上划分:取代继承、包含继承、受限继承、特化继承。从继承内容上划分:取代继承、包含继承、受限继承、特化继承。3 3、继承的作用、继承的作用:实现软件的可重用性实现软件的可重用性实现软件的独立性实现软件的独立性增加软件的可维护性增加软件的可维护性334 4、继承的层次结构、继承的层次结构思考:和具有哪些成员?思考:和具有哪些成员?ABECD a:int getA():int c:int getC():int setB():void b:int getB():int setB():voidinheritance(“is-a”relation)e:int getE():intsetB():void d:intgetD():int1.2.3继承继承345、继承与封装的关系、继承与封装的关系封装是指对象的的封装,在对象中数据和操作总是包裹在一起的,封装是指对象的的封装,在对象中数据和操作总是包裹在一起的,继承不会影响对象的这种封装性继承不会影响对象的这种封装性,但无限制的派生继承会在一定,但无限制的派生继承会在一定程度上损害对象中数据的隐蔽性。程度上损害对象中数据的隐蔽性。封装使类定义中实现的代码可以用于该类的各个实例(对象)中,封装使类定义中实现的代码可以用于该类的各个实例(对象)中,实现了动态共享代码实现了动态共享代码;继承使用派生类能与基类共享基类中实现;继承使用派生类能与基类共享基类中实现的代码,的代码,实现了静态共享代码实现了静态共享代码。6、类的层次、类的层次由一个类可以派生出任意多个派生类,这样就形成了类的层次关由一个类可以派生出任意多个派生类,这样就形成了类的层次关系,这是现实世界中事物的分类问题在计算机中的解形式。系,这是现实世界中事物的分类问题在计算机中的解形式。1.2.3继承继承357、继承的优势、继承的优势能清晰体现相关类间的层次结构关系。能清晰体现相关类间的层次结构关系。有效地址提高了程序的可重用性,减小了程序代码的冗余度。有效地址提高了程序的可重用性,减小了程序代码的冗余度。增强了程序的一致性,减少了程序模块间的接口和界面,使程序更易维增强了程序的一致性,减少了程序模块间的接口和界面,使程序更易维护。护。继承是自动传播程序代码的有力工具。继承是自动传播程序代码的有力工具。继承是新类构造、建立和扩充的有效手段。继承是新类构造、建立和扩充的有效手段。继承具有传递性继承具有传递性如果类如果类C继承类继承类B,类,类B继承类继承类A,则类,则类C继承类继承类A“站在巨人的肩头上站在巨人的肩头上”。用户在开发新系统时不必从零开始,可以继承。用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。原有相似功能或者从类库中选取需要的类,再派生新类。1.2.3继承继承36例例1:车辆的继承关系:车辆的继承关系车辆车辆非机动车非机动车客车客车 卡车卡车 轿车轿车机动车机动车例例1:人类按职业划分的一种继承关系:人类按职业划分的一种继承关系人人学生学生工人工人教师教师农民农民中学中学生生大学大学生生研究生研究生讲师讲师教授教授1.2.3继承继承8、两个继承的案例、两个继承的案例371、多态、多态polymorphism对象根据所接受的消息而做出动作,同样的消息为不对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动,该现象称为同的对象接受时可导致完全不同的行动,该现象称为多态性。多态性。简单的说:单接口,多实现简单的说:单接口,多实现举例:举例:sqrt_i(inti),sqrt_f(floatf)sqrt(inti),sqrt(floatf)作用作用:减轻程序员负担减轻程序员负担降低程序员出错机率降低程序员出错机率1.2.4 多态多态382、多态性的实现、多态性的实现运行时多态性:虚函数运行时多态性:虚函数编译时多态性:重载编译时多态性:重载重载重载函数重载:函数重载:是指在同一作用域内的若干个参数特征不同的函数可是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字以使用相同的函数名字。运算符重载:运算符重载:是指同一个运算符可以施加于不同类型的操作数上是指同一个运算符可以施加于不同类型的操作数上面。面。优点:优点:重载进一步提高了面向对象系统的灵活性和可读性重载进一步提高了面向对象系统的灵活性和可读性1.2.4 多态多态393、多态的一个案例、多态的一个案例图中同名函数图中同名函数area()作用在作用在Circle、Triangle等不同类上时,将执等不同类上时,将执行不同的操作,这就是多态。行不同的操作,这就是多态。1.2.4 多态多态401、面向过程程序设计的基本特点、面向过程程序设计的基本特点按层次组织模块。按层次组织模块。每一模块只有一个入口,一个出口。每一模块只有一个入口,一个出口。代码和数据分离,即程序代码和数据分离,即程序=数据结构数据结构+算法。算法。方法:自顶向下,逐步求精,模块化方法:自顶向下,逐步求精,模块化1.面向对象面向对象与面向过程程序设计与面向过程程序设计412、面向对象程序设计、面向对象程序设计它将数据和操作数据的过程(函数)绑在一起,形成一它将数据和操作数据的过程(函数)绑在一起,形成一个相互依存、不可分离的整体(即对象),从同类对象个相互依存、不可分离的整体(即对象),从同类对象中抽象出共性,形成类。中抽象出共性,形成类。同类对象中的数据原则上只能用本类提供的方法(成员同类对象中的数据原则上只能用本类提供的方法(成员函数)进行处理。类通过封装将接口与实现分离开来,函数)进行处理。类通过封装将接口与实现分离开来,通过接口与外界联系。对象之间通过消息进行通信。通过接口与外界联系。对象之间通过消息进行通信。1.面向对象面向对象与面向过程程序设计与面向过程程序设计423、两种程序方法的对比、两种程序方法的对比1.面向对象面向对象与面向过程程序设计与面向过程程序设计面向对象程序设计将数面向对象程序设计将数据和操作数据的程序代据和操作数据的程序代码绑在一起构成对象具码绑在一起构成对象具有更好的可维护性,因有更好的可维护性,因某类对象数据的改变只某类对象数据的改变只会引起该类对象操作代会引起该类对象操作代码的改变,而与其他类码的改变,而与其他类型的对象无关,这就把型的对象无关,这就把程序代码的修改维护局程序代码的修改维护局限在一个很小的范围内。限在一个很小的范围内。431.4C+与面向对象与面向对象程序设计程序设计1、面向对象程序设计语言的基本情况、面向对象程序设计语言的基本情况最早最成熟的领域最早最成熟的领域萌芽于萌芽于60年代(年代(Simula),成熟于),成熟于80年代年代70年代年代,纯面向对象语言纯面向对象语言,smalltalk常见面向对象的语言常见面向对象的语言Java:纯面向对象的语言:纯面向对象的语言VB.Net:可视化程序设计:可视化程序设计早期的早期的VB或许算不上真正的面向对象程序设计语言,不具备面向对象程序的或许算不上真正的面向对象程序设计语言,不具备面向对象程序的一些特征,但一些特征,但VB.NET已经改变了这一切!已经改变了这一切!C#:具有:具有VB和和+的特征的特征C+,ObjectPascal,Efficl其它常用的具有面向对象特征的语言其它常用的具有面向对象特征的语言BorlandDelphi、PowerBuilder、VisualFoxPro441.4C+与面向对象与面向对象程序设计程序设计2、C+起源起源20世纪80年代,AT&T Bell实验室Bjarne Stroustrup语言的扩展3、C+常用领域常用领域系统软件设备驱动程序图形学用户界面451.4C+与面向对象与面向对象程序设计程序设计4、C+特征特征兼容语言,支持面向过程的程序设计兼容语言,支持面向过程的程序设计具有高效性、灵活性、可移植性具有高效性、灵活性、可移植性丰富的数据类型丰富的数据类型支持面向对象程序设计支持面向对象程序设计5、常见编译系统、常见编译系统C+BuilderVC+VC+.net461.5C+程序的结构程序的结构1、C+程序的构成程序的构成声明部分声明部分主函数部分主函数部分函数定义函数定义2、C+程序文件程序文件头文件:头文件:.h.hpp源文件源文件:.cpp3、程序结构的一个例程如下、程序结构的一个例程如下471.5C+程序的结构程序的结构3、C+程序的一个例程声明部分0/Eg1-1.cpp1#include2#define N 103void sort(int a,int n);4void print(int a,int);5481.5C+程序的结构程序的结构对例程的补充:对例程的补充:C+的注释的注释/*/C+的函数需要先声明,然后才能调用的函数需要先声明,然后才能调用491.6数据数据的输入与输出的输入与输出本节主要介绍本节主要介绍C+程序中数据输入输出的方法,程序中数据输入输出的方法,是是C+程序设计的基础。应该掌握程序设计的基础。应该掌握流的概念iostream.hcincoutendl讲授方法:在VC+集成环境中演示集成环境中演示501.6.1流流的概念的概念1、C及及C+中的流概念中的流概念I/O(input/ouput,输入,输入/输出)数据是一些从源设备输出)数据是一些从源设备到目标设备的字节序列,称为字节流。除了图像、声到目标设备的字节序列,称为字节流。除了图像、声音数据外,字节流通常代表的都是字符,因此在多数音数据外,字节流通常代表的都是字符,因此在多数情况下的流(情况下的流(stream)是从源设备到目标设备的字)是从源设备到目标设备的字符序列,符序列,A8bcx1234源设备源设备目标设备目标设备字字符符序序列列从从源源设设备备连连续续不不断断地地流流向向目目标标设设备备,最最后后按按先先流流出出先先到到达达的的有有序序方方式式汇汇聚聚在在目目标标设设备中,如同河流一样,故此叫流。备中,如同河流一样,故此叫流。511.6.1流流的概念的概念输入流输入流输入流(输入流(inputstream)是指从输入设备流向内存的字节序)是指从输入设备流向内存的字节序列。列。输出流输出流输出流(输出流(outputstream)是指从内存流向输出设备的字节)是指从内存流向输出设备的字节序列。序列。C+中的输入输入流中的输入输入流iostreamcin输入流对象,输入流对象,C+已将其与键盘关联已将其与键盘关联cout输出流对象,输出流对象,C+已将其与显示器关联已将其与显示器关联521.6.2cin和析取运符和析取运符1、cin的用途的用途cin读作读作(see-in)是一个输入流对象,用于从键盘输入)是一个输入流对象,用于从键盘输入数据。在数据。在C+程序中,也可以使用程序中,也可以使用c语言中常用的语言中常用的scanf函数输入数据,但函数输入数据,但cin更简单。更简单。2、cin的用法的用法输入单个变量的值输入单个变量的值cinx;输入多个变量的值输入多个变量的值cinx1x2x3x4xn其中其中x,x1x2可是以内置数据类型如可是以内置数据类型如int,char,float,double等。等。531.6.2cin和析取运符和析取运符3、用、用cin时的注意事项时的注意事项在一条在一条cin语句中同时为多个变量输入数据语句中同时为多个变量输入数据。在输入。在输入数据的个数应当与数据的个数应当与cin语句中变量个数相同,各输入语句中变量个数相同,各输入数据之间用一个或多个空白(包括空格、回车、数据之间用一个或多个空白(包括空格、回车、Tab)作为间隔符,全部数据输入完成后,按)作为间隔符,全部数据输入完成后,按Enter键结束。键结束。在在后面只能出现变量名,下面的语句是错误的。后面只能出现变量名,下面的语句是错误的。cinx=x;/错误,后面含有字符串x=cin12x;/错误,后面含有常数12cinxx;541.6.2cin和析取运符和析取运符cin具有自动识别数据类型的能力,析取运算具有自动识别数据类型的能力,析取运算将根将根据它后面的变量的类型从输入流中为它们提取对应的据它后面的变量的类型从输入流中为它们提取对应的数据。比如:数据。比如:cinx;假设输入数据假设输入数据2,析取运算符,析取运算符将根据其后的将根据其后的x的类型决定输的类型决定输入的入的2到底是数字还是字符。若到底是数字还是字符。若x是是char类型,则类型,则2就是字符;就是字符;若若x是是int,float之类的类型,则之类的类型,则2就是一个数字。就是一个数字。再如,若输入再如,若输入34,且,且x是是char类型,则只有字符类型,则只有字符3被存储到被存储到x中,中,4将继续保存在流中;若将继续保存在流中;若x是是int或或float,则,则34就会存储就会存储x中。中。551.6.2cin和析取运符和析取运符数值型数据的输入。数值型数据的输入。在读取数值型数据时,析取运算符在读取数值型数据时,析取运算符首先略掉数据前面的所有首先略掉数据前面的所有空白符号,如果遇到正、负号或数字,就开始读入,包括浮空白符号,如果遇到正、负号或数字,就开始读入,包括浮点型数据的小数点,并在遇到空白符或其他非数字字符时停点型数据的小数点,并在遇到空白符或其他非数字字符时停止。例如:止。例如:intx1;doublex2;charx3;cinx1x2x3;假如输入假如输入“35.4A”并按并按Enter键,键,x1是是35;x2 是是.4;x3是是A561.6.2cin和析取运符和析取运符4、输入数据案例分析、输入数据案例分析【例例1-2】假设有变量定义语句如下:假设有变量定义语句如下:inta,b;doublez;charch;下面的语句说明数据输入的含义。下面的语句说明数据输入的含义。语句语句 输入输入内存变量的值内存变量的值 1 cinch;Ach=A2 cinch;ABch=A,而,而B被保留在输入流中等待被读取被保留在输入流中等待被读取 3 cina;32a=324 cina;32.23a=32,.23留在输入流中等待被读取留在输入流中等待被读取 5 cinz;76.21z=76.216 cinz;65z=65.07 cinachz23B3.2 a=23,ch=B,Z=3.28 cinachz23B3.2a=23,ch=B,Z=3.29cinabz2332a=23,b=32,等待输入下一个数据存入,等待输入下一个数据存入z10 cinaz23.224a=2,z=3.2,24被保留在输入流中等待被读取被保留在输入流中等待被读取11 cinach132a=132,计算机等待输入,计算机等待输入 ch的值的值12 cincha132ch=1,a=32571.6.3cout和插入运算符和插入运算符1、cout的用途的用途cout(读作(读作see-out)是一个输出流对象,已被)是一个输出流对象,已被C+默默认关联到显示器,用于在屏幕上输入数据。认关联到显示器,用于在屏幕上输入数据。在在C+程序中,也可使用程序中,也可使用C语言的语言的sprintf输出数据,但输出数据,但cout更简单。更简单。2、cout的用法的用法coutx其中其中x可是以内置数据类型如可是以内置数据类型如int,char,float,double等。等。581.6.3cout和插入运算符和插入运算符输出字符类型的数据输出字符类型的数据对于字符变量和字符串对于字符变量和字符串变量,变量,cout将把变量将把变量的值输出到显示屏幕的值输出到显示屏幕上。对于字符常量和上。对于字符常量和字符串常量,字符串常量,cout将将把它们原样输出在屏把它们原样输出在屏幕上幕上【例1-3】用cout输出字符数据。/Eg1-3.cpp#includevoid main()char ch1=c;char ch2=Hellow C+!;coutch1;coutch2;coutC;coutHellow everyone!;591.6.3cout和插入运算符和插入运算符2.连续输出连续输出cout能够同时输出多个数据,用法如下:能够同时输出多个数据,用法如下:coutx1x2x3;例:例:coutch1ch2CHelloweveryone!;与与C语言一样,在语言一样,在C+程序中也可以将一条命程序中也可以将一条命令写在多行上。比如,上面的语句也可写成下令写在多行上。比如,上面的语句也可写成下面的形式:面的形式:coutch1ch2CHelloweveryone!;601.6.3cout和插入运算符和插入运算符3、输出换成、输出换成在在cout语句中换行可用:语句中换行可用:“n”或或endl【例例1-4】在例在例1-3的输出语句中增加换行符。的输出语句中增加换行符。/Eg1-4.cpp#includevoidmain()charch1=c;charch2=HellowC+!;coutch1endl;coutch2n;coutCendl;coutHelloweveryone!n;611.6.3cout和插入运算符和插入运算符4、输入数据类型数据、输入数据类型数据在连续输入多个数据时,应注意在数据之加插入间隔符。如在连续输入多个数据时,应注意在数据之加插入间隔符。如intx1=23;floatx2=34.1;doublex3=67.12;coutx1x2x3900;其中的其中的cout语句将在屏幕上输出,语句将在屏幕上输出,2334.167.12900谁知道这是个什么数据呢?谁知道这是个什么数据呢?621.6.3cout和插入运算符和插入运算符5、数制基数、数制基数hex:16进制,进制,oct:8进制,进制,dec:10进制进制【例例1-5】输出不同进制的数据。输出不同进制的数据。/Eg1-5.cpp#includevoidmain()intx=34;couthex17x18endl;cout17octx18endl;coutdec17x18endl;631.6.3cout和插入运算符和插入运算符6、其它输出格式控制符、其它输出格式控制符设置浮点数的精度设置浮点数的精度setprecision(n)设置输出域宽和对齐方式设置输出域宽和对齐方式setw(n)设置对齐方式设置对齐方式 Setiosflags(longf);resetiosflags(longf);641.6.3cout和插入运算符和插入运算符【例例1-6】用用setiosflags和和resetiosflags设置设置和取消输出数据的对齐方式。和取消输出数据的对齐方式。/Eg1-6.cpp#include#includevoidmain()cout“123456781234567812345678”endl;coutsetiosflags(ios:left)setw(8)456setw(8)123endl;coutresetiosflags(ios:left)setw(8)123endl;651.7编程实作编程实作VC+6.0编程简介编程简介本节主要以案例方式介绍本节主要以案例方式介绍VC+的编程环境,及在的编程环境,及在VC+6.0环境下设计环境下设计C+程序的过程。请在实际的程序的过程。请在实际的C+环境中介绍本节的内容。环境中介绍本节的内容。本章介绍的是一种基于控制台的本章介绍的是一种基于控制台的VC+程序设计方程序设计方式,是一种非常简略的方式式,是一种非常简略的方式661.7编程实作编程实作VC+6.0编程简介编程简介1、关于、关于C+编译器编译器支持支持C+程序设计的编译程序很多,常见的有程序设计的编译程序很多,常见的有TurboC+、BorlandC+和和VisualC+等。等。VisualC+是微软公司的产品,简称是微软公司的产品,简称VC+。VC+6.0是微软公司是微软公司1998年推出的基于年推出的基于Windows的集成开发环的集成开发环境,它提供了编写程序源代码的编辑器,创建各类资源境,它提供了编写程序源代码的编辑器,创建各类资源文件(如对话框、图标、菜单等)的资源编辑器,具有文件(如对话框、图标、菜单等)的资源编辑器,具有编辑、编译、链接等功能。利用它可以输入、编辑源程编辑、编译、链接等功能。利用它可以输入、编辑源程序,进行程序的编译、调试、链接,最后生成可执行的序,进行程序的编译、调试、链接,最后生成可执行的命令程序。命令程序。671.7编程实作编程实作VC+6.0编程简介编程简介2、例题描述、例题描述【例例1-7】某次考试成绩如下,编写程序计算每位某次考试成绩如下,编写程序计算每位同学的平均分。要求成绩从键盘输入,程序输出结同学的平均分。要求成绩从键盘输入,程序输出结果的形式与下面相同,但要输出每位同学的平均分。果的形式与下面相同,但要输出每位同学的平均分。语文语文数学数学政治政治化学化学英语英语平均分平均分学生学生16776878976学生学生27887789087681.7编程实作编程实作VC+6.0编程简介编程简介3、编程过程、编程过程(1)启动)启动VC+6.0(2)选择)选择VC+6.0的的“文件文件|新建新建”命令,进入命令,进入VC+的的“新新建建”对话框,如图所示。对话框,如图所示。691.7编程实作编程实作VC+6.0编程简介编程简介(3)选择)选择“新建新建|文件文件”标签,通过标签,通过“目录目录”编辑框编辑框指定文件目录。指定文件目录。(4)选中)选中“新建新建|C+SourceFile”列表项,在列表项,在“文文件件”编辑框中输入源程序的名字,扩展名为编辑框中输入源程序的名字,扩展名为.cpp。单击单击“确定确定”,进入,进入VC+的编辑程序界面,如图的编辑程序界面,如图所示。所示。701.7编程实作编程实作VC+6.0编程简介编程简介711.7编程实作编程实作VC+6.0编程简介编程简介(5)在程序编辑窗口中输入程序源代码)在程序编辑窗口中输入程序源代码/Eg1-7.cpp#include#include/本程序的本程序的setw在此头文件中定在此头文件中定义义#defineStuNum5/StuNum代表学生人代表学生人数数voidReadData(doubles6,intn);/这这3行是函数行是函数声明声明voidAveScore(doubles6,intn);voidOutData(doubles6,intn);721.7编程实作编程实作VC+6.0编程简介编程简介voidmain()doublesStuNum6;/定义保存学生成绩的数组定义保存学生成绩的数组ReadData(s,2);/读入学生成绩读入学生成绩AveScore(s,2);/计算各学生的平均分计算各学生的平均分OutData(s,2);/输出学生成绩表输出学生成绩表voidReadData(doubles6,intn)for(inti=0;in;i+)cout输入学生输入学生 i+1的的5科成绩科成绩:;/在屏幕上提示在屏幕上提示for(intj=0;jsij;73voidAveScore(doubles6,intn)for(inti=0;in;i+)doublesum=0;for(intj=0;j5;j+)sum=sum+sij;si5=sum/5.0;voidOutData(doubles6,intn)/下面的下面的cout语句在屏幕上输出科目名称语句在屏幕上输出科目名称coutsetw(17)语文语文setw(8)数学数学setw(8)政治政治setw(8)化学化学setw(8)英语英语setw(8)平均分平均分endl;for(inti=0;in;i+)coutsetw(8)学生学生 i+1;for(intj=0;j6;j+)coutsetw(8)sij;coutendl;741.7编程实作编程实作VC+6.0编程简介编程简介(6)选择)选择VC+的的“编译编译|编译编译student.cpp”命命令,单击令,单击VC+编译工具按钮,弹出如图所示的编译工具按钮,弹出如图所示的对话框。对话框。751.7编程实作编程实作VC+6.0编程简介编程简介(7)一个)一个C+程序在程序在VC+环境下编译运行,必须环境下编译运行,必须有一组与之紧密相关的文件,这组文件包含了程序有一组与之紧密相关的文件,这组文件包含了程序的的环境设置环境设置、涉及的、涉及的头文件头文件、资源资源等内容,称为等内容,称为项项目文件目文件。上图所示对话框询问是否要创建本程序的。上图所示对话框询问是否要创建本程序的项目文件。单击项目文件。单击“是是”按钮,按钮,VC+将自动生成该将自动生成该程序的相关项目文件。程序的相关项目文件。761.7编程实作编程实作VC+6.0编程简介编程简介(8)编译程序,调试代码中的错误,编译成功后,选)编译程序,调试代码中的错误,编译成功后,选择择VC+的的“编译编译|执行执行”命令,或单击工具栏中的命令,或单击工具栏中的命令按钮,执行该程序命令按钮,执行该程序 771.7编程实作编程实作VC+6.0编程简介编程简介关于关于VC+的项目工作区文件的项目工作区文件同简单的同简单的C程序相比较,程序相比较,VC+程序的编译运行需要在一程序的编译运行需要在一个项目环境中才可行。前面的编程过程虽然只输入了一个项目环境中才可行。前面的编程过程虽然只输入了一个源件,但第(个源件,但第(6)步却由)步却由VC+向导建立了一组文件向导建立了一组文件,这些文件被放在新建文件时指定的目录中。这些文件被放在新建文件时指定的目录中。下图列示下图列示了这些相关文件。了这些相关文件。781.7编程实作编程实作VC+6.0编程简介编程简介791.7编程实作编程实作VC+6.0编程简介编程简介1.1.dsp的文件是项目文件的文件是项目文件2.2.dsw的文件是项目工作区文件。的文件是项目工作区文件。3.opt的文件是工作区选项文件,用于保存项目工作的文件是工作区选项文件,用于保存项目工作区的配置信息。区的配置信息。一个应用程序无论简单还是复杂,也不管它是由一个还是多一个应用程序无论简单还是复杂,也不管它是由一个还是多个文件构成,都必须建立项目文件才能被编译。个文件构成,都必须建立项目文件才能被编译。项目文件把一个应用程序的所有文件如源程序(项目文件把一个应用程序的所有文件如源程序(.cpp文件)、文件)、头文件(头文件(.h文件)、资源文件(文件)、资源文件(.rc)、程序结构信息文件及)、程序结构信息文件及系统环境配置文件等组织成一个有机的整体,构成一个能够系统环境配置文件等组织成一个有机的整体,构成一个能够被编译器所识别和编译的项目。被编译器所识别和编译的项目。801.7编程实作编程实作VC+6.0编程简介编程简介请以案例操作方式介绍请以案例操作方式介绍1.7.4节的程序方法节的程序方法81
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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