C第01讲-1前言-2.ppt_第1页
C第01讲-1前言-2.ppt_第2页
C第01讲-1前言-2.ppt_第3页
C第01讲-1前言-2.ppt_第4页
C第01讲-1前言-2.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1,C+面向对象程序设计,第一讲 简单的C+程序,2,第0讲 前言,程序设计语言表达软件的工具 计算机不是一台真正的机器 程序一种软件机器。这种机器的建造依赖于工具、材料和想象 力之间的相互作用,程序设计语言定义了工具和材料。 数学模型(形式化描述)比程序设计语言更重要。,程序设计语言的发展 硬件发展结构化程序设计软件危机软件工程面向对象技术 机器码低级高级;,3,结构化过程和面向对象编程 结构化程序设计: 总体结构层次树状;局部组织模块化。一般不允许goto. 程序处理数据的一系列过程; 数据,过程分开存储; “分而治之”。 缺点:数据和任务分离,难理解、维护; 重用性差;,软件开发的六个阶段: 软件计划可行性分析、工作范围和代价; 需求分析(做什么)功能需求、性能需求、环境需求与限制; 软件设计(怎么做)概要设计和详细设计; 软件编码用具体语言实现设计; 软件测试单元测试和综合测试; 软件维护已交付的软件修改、扩充、排错;,4,C语言特点: 1结构化的程序设计语言 2兼具高级语言与汇编语言的特点 3程序的可移植性好 4语法结构不严密,有自由度,5,面向对象程序设计: 菜单、按钮、窗口事件驱动; 数据和数据处理过程对象; 面向对象的四大支柱:封装、数据隐藏、继承和多态性。 C语言是贝尔实验室的 Dennis Ritchie 开发的,1972年在一台DEC PDP-11实现。用于UNIX系统的开发语言。 满足复杂性要求,1980年 贝尔实验室的 Bjame Stroustrup 开发带类的C。1983年正式取名C+。,6,C之父,Bjarne Stroustrup,7,C简史,1979: C with class 1983: C+ 1985: The C+ Programming Language 1e 1990: The Annotated C+ Reference Manual 1991: The C+ Programming Language 2e 1997: The C+ Programming Language 3e 1998: ANSI 和ISO: 到1998年正式发布 C+的国际标准。,8,C+成功的奥秘 面向对象程序设计; 解决了程序员的烦恼,也就解决了程序编写过程的难题;,9,C+的特点: 1 C+是C语言的超集 2 面向对象的程序设计语言 3 程序设计的可扩充性强 4. 类、对象 5. 重载(函数与操作符) 6. 异常 7. 引用 8. 内存 9. 模板,10,发展史: BCPL语言B语言C语言ANSI C(标准) (UNIX操作系统) Microsoft C Turbo C Quick C C+ VC+ BC+ AT&T C+ 未来:CC+(AT&T) Java(SUN) C#(MS),11,面向对象的思想和方法,面向对象是一种认知方法学 从人们的认识过程来看,主要有以下两种方法: 一种是从一般到特殊的演绎方法。 在分类到一定程度后,用面向对象的方法,就是对已经分好的各类对象进行状态描述和功能定义,以明确这一类对象所能完成的工作,其实这也是一种分类。最后一步就是怎样让这一类对象运转起来,也就是使各类对象建立联系,完成它们应有的功能。,12,另一种是从特殊到一般的归纳方法。 面向对象提供了从一般到特殊的演绎手段(如继承等),又提供了从特殊到一般的归纳形式(如类等),从而说明它是一种很好的认知方法。 这种分类、归纳的方法在面向对象设计技术中是很重要的。,13,“软件 IC” 的概念:,在软件工程中要提高软件生产率,就应当走类似硬件的道路,应该有软件的 “集成电路”(称软件 IC)。 因此,必须寻找一种能够比较容易地将正确成熟的软件单元应用于新的软件系统中的技术。 最好有一种集成机制,可以将已经成熟的软件单元制成一个相对独立的实体,使它们可以不加改动或很少改动就可以应用于新的软件系统中。 “软件 IC”的概念就是基于这一思想的一种软件集成机制。“软件IC”是一种可重用模块。,14,软件可重用性的问题,避开许多非技术障碍,来考虑软件开发中的重复性质。编程人员一次又一次地重复编制一些基本模式:分类、搜索、读写、分配、同步、比较、但这些事情并不是每次都一模一样的,有如此之多的细节需要变化。因此,软件工程师大多情况是这样做的:时时不断地在同一主题上,精心雕琢一个个新的变种。 针对软件重复的这种性质,如何寻找合适的可重用模块,以达到不变应万变 的能力。,15,类概念支持 “软件 IC” 技术,在面向对象语言中,类充当了系统构造的单元,这是因为它具有以下特点: 类是一类对象的统一模板,它具有很强的模块性。类的功能代码实现只通过外部接口与外界联系,具有很强的独立性。 类的可靠性表现在一个类的出错不会传播到其他类中。 类是对象一级的抽象,它将一类对象的数据结构和功能实现封装起来,使得外界不必清楚其内部实现,只要从它的说明中了解其基本功能就可以使用它。,16,另外,类支持代码共享,类中的代码均是可再入的,这也支持了可重用性。因此类作为 “软件 IC” 来组织软件系统从概念上是非常合适的。,17,面对对象系统的特性,类 封装性 继承性 多态性,18,面向对象的特性,封装性,19,封装性,class 钟 private : 钟的构造; / 数据 public : 读取时间值 ; / 成员函数 调整时间值 ; ,20,封装性,将一个数据与这个数据有关的操作集合封装在一起,形成一个能动的实体,称为对象。 用户不必知道对象行为的实现细节,只须根据对象提供的外部特性接口访问对象。,21,万物皆有源,龙眼葡萄葡萄水果 红葡萄、白葡萄 生物系统:界,门,纲,目,科,属,种 如梅花鹿属于动物界、脊索动物门、哺乳纲、偶蹄目、鹿科、鹿属 丹顶鹤属于动物界、脊索动物门、鸟纲、鹤形目、鹤科、鹤属。,继承性,22,又如常见的马、牛、驴和猪四种动物 都是哺乳动物,属哺乳纲,但马、驴同属奇蹄目、马科,而牛和猪属于偶蹄目,牛属于牛科,猪属于猪科。 所以我们从中可以知道,在进化上,马和驴的亲缘关系要比牛和猪的亲缘关系更近一些。 人 家族 姓 名 属名相当于我们的姓,告诉人们自己属于哪个家族,种名是自己的名字,可以在属内进一步对这一物种给予确认。,多态性,23,第2章 数据和类型表达式 第3章 程序结构设计循环和选择 第4章 函 数 第5章 对象和类 第6章 数组与字符串 第7章 指 针(一)(二) 第8章 派生和继承 第9章 虚函数和友元 第10章 运算符重载 第11章 I/O流 第12章 文模板和异常处理,目 录,24,第一讲 简单的C+程序,C+应用程序的结构 简单的C+程序 C+源程序的执行,25,1.1 C+应用程序的结构,类对象,C+程序是一组相互通信的对象,C+应用程序设计: 1.定义应用需要的类对象; 2.定义主控对象,完成对象间的通信;,26,1.2 简单的C+程序 # include int main( ) cout“Hello, Worldn”; / 插入符 一般: 公用数据和函数说明放在头文件(.h)中; 实现函数功能的函数体和局部数据放在源文件(.cpp)中;,27,C+的I/O: 1. 利用C语言的库函数实现,它们包含在文件stdio.h中,基本的有:getc(),gets(),puc(),puts(),scanf(),printf(). 2. 利用C+语言的I/O:利用运算符和 , cin 和 cout,,它们包含在文件iostream.h中。,C+的I/O,28,1.3 C+程序的执行,29,例子 # include int main( void) double a, b, c; cout a b; / 提取符 c=a+b; / ab之间用回车或空格 cout“a+b=”cendl; return(1); ,30,简单的输入/输出,1. cin输入流 C+中没有专门的输入/输出语句,但可以利用输入流和输出流来进行数据的输入和输出。 要使用输入流和输出流时,要在程序开始处增加一行: #include 输入十进制整数和实数 cin输入流的一般语法格式: cin 运算符“”称为提取运算符,表示将暂停程序的执行,等待用户从键盘上输入相应的数据。一个提取运算符只能跟一个变量名。 输入十进制数据时的注意事项: 两个数据之间用空格或回车间隔 输入的数据的类型要与对应的变量一致,数据个数要相同,31,输入字符数据 用cin数据流输入字符数据时的注意事项: 两个数据之间用空格或回车间隔 可以用函数get()输入字符,格式: cin.get() 但是,get函数只能接受一个字符,32,2. cout输出流 输出字符或字符串 cout输入流的一般语法格式: cout 运算符“”称为插入运算符,它将紧跟其后的表达式的值输出到显示器当前光标的位置。 可以输出转义字符。,33,输出十进制整数和实数 用endl表示要输出一个换行符,等同于字符n。 用空格、制表符、或换行符来将两个数据分隔开。 使用函数setw()来控制两个数据间的间隔,使用函数setw()的注意事项: (1)程序开头要包含头文件iomanip.h; (2)用一个整数表示其输出项的宽度; (3)一次使用函数setw()只能控制一个输出项,34,用来hex / dec / oct使数据以非十进制格式显示 couthex2004; 或 cout.setf(ios:hex); cout2004; 用cout.setf(ios:scientific); 实数以科学表示法输出;,35,C+程序结构,程序结构包含:声明区,主程序区,函数定义区 声明区 包含以下内容: a包含文件或编译预处理指令 b宏(Macro)定义: #Define PI 3.14159 c类别(Class)定义: d结构(Structure)定义: e函数原型(Function prototype)声明: f全局(Global)或整体变量声明: g函数定义(Function definition): h编译条件指令:如# ifdef 等,36,主程序区主函数main() 一个C+程序总是从main()函数开始,不管该函数在整个程序中的位置。 在主函数中可能包含的项目: a私有(Local)或局部变量的声明; b函数的调用(Function call); c一般运算处理: b = a + b * c / d + 6 d条件(if)的控制; e循环(Loop)的控制; f对象(Object)与结构(Structure)的处理; g文件(File)的处理,37,函数定义区 任意C+程序均由一个或多个函数组成。一般一个函数实现一定的功能,一个函数可以被多次调用。 称为函数或语句括号。花括号必须配对使用。 程序的书写规则 (1)对齐规则; (2)缩进规则; (3)每个函数都从第一列开始书写; 程序的基本要求 正确性 可读性和可理解性 可维护性 程序构思好、程序简短、执行速度快,38,FAQ,VC+ vs C+ 1. VC+是一个编译器;C+是一种语言,是一个标准,一个符合C+语言标准的程序可以在任何支持标准C+的编译器上编译(如VC+,TC+和BC+)。 2.VC+是与系统相关的,而C+则与系统无关。 3.VC+不仅能编译C+程序,还能编译C程序。VC能编写Windows程序,C+并没有为特殊的操作系统提供任何支持。两者之间的关系是具体实现与标准的关系,也是物理与逻辑的关系。VC+是C+语言载体的一种。,39,C+学习提示,C+是在C语言的基础上发展而来的。对C语言是完全兼容的。 在C语言的基础上,增加了新的语言成分和抽象数据类型的概念,就得到了C

温馨提示

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

评论

0/150

提交评论