《面向对象与可视化程序设计VisualC编程课件.ppt》由会员分享,可在线阅读,更多相关《面向对象与可视化程序设计VisualC编程课件.ppt(85页珍藏版)》请在三一办公上搜索。
1、2023/4/1,1,面向对象与可视化程序设计-Visual C+编程主讲教师:唐 龙教授(计算机科学与技术系)黄维通博士(计算机与信息管理中心)清 华 大 学2001年2月,2023/4/1,2,面向对象与可视化程序设计,面向全校本科生的选修课。主要内容是在学习了C/C+程序设计语言基础上,进一步学会使用 Visual C+6.0 的编程。一门实践性很强的实用课程,要花时间多上机,才能学到手。讲解与上机学时安排为 1:1。,2023/4/1,3,主要参考教材,“Visuai C+面向对象与可视化程序设计”黄维通编著,清华大学出版社出版.“Visuai C+面向对象与可视化程序设计习题解析与编
2、程”黄维通编著清华大学出版社出版.,2023/4/1,4,本学上课时间和地点:,讲课每周六上午第二大节(9:5012:15)五教5203。上机每周日上午,计算中心机房。分两组,每组2小时。,2023/4/1,5,建议与忠告,如果您没学过C和C+程序设计语言,暂且不要选修本课程。周六和周日有其他活动的同学(例如,上外语强化班等)不要选修本课程可选同样的课,每周四晚上黄维通老师讲课。,2023/4/1,6,课程主要内容,Visual C+编程基础使用API函数的可视化编程(Application Programming Interface)使用MFC库的可视化编程(Microsoft Founda
3、tion Class),2023/4/1,7,课程教学指导思想,上机操作为主,课堂讲解为辅;鼓励读书自学,提倡上机实践;掌握基本方法,学会正确编程;,2023/4/1,8,学习成绩考核,考核主要依据课后作业两个大作业。注意:请您定要按时交作业。共有9次作业每次作业布置后两周内交过时就提交不了。,2023/4/1,9,第一章 C+基础知识,2023/4/1,10,内容提要,C+是C的继承与发展C+程序基本结构C+的数据类型、常量和变量表达式和语句类与对象的基本概念C+程序设计和实现用Visual C+开发程序,2023/4/1,11,1.1.C+是C的继承与发展,2023/4/1,12,1.关于
4、C语言的回顾,Brian Kernighan和Dennis Ritchie基于B语言首创的(1972)。一种描述程序语言,开发目的是编写UNIX操作系统。灵巧的、模块化的、结构化的程序设计语言有标准,易移植,广泛推广应用。,2023/4/1,13,1.关于C语言的回顾(续),C语言的优点:与硬件无关,可移植性强;语言简洁,使用方便;丰富的运算符和数据类型;可直接访问内存地址;能进行位操作;目标代码质量高,运行效率高.,2023/4/1,14,1.关于C语言的回顾(续),C语言的弱点:检查机制弱,编译时不能发现编程错误;面向过程的语言,没有支持代码复用的机制;很难控制大规模程序的复杂性。,202
5、3/4/1,15,2.C+是C超集,Bjarne Stroustrup开发.1983年7月正式对外发表。主要目的,是支持编写一复杂事件驱动的仿真程序。目标之一,是保持与C语言兼容.,2023/4/1,16,2.C+是C超集(续),保留了C在解决软件界面和底层程序设计方面的有效性、紧凑性和灵活性.提供了支持面向对象的程序设计和 高层次问题抽象的方法与手段。C+是为了支持大规模的软件(510万行)开发而设计的,比C语言有更强的类型检查能力,以减少错误。,2023/4/1,17,3.C+的程序设计方法具有双重性,既反映了过程的程序设计方法,又反映了面向对象的程序设计方法。它代表了早先的各种程度设计语
6、言的优点的发展和提炼。当然,它最接近于C 语言。这种双重性给初学者带来了困难。,2023/4/1,18,4.C+的关键概念类,类(class)是一种可由用户定义的、封装有数据元素及其操作函数的类型。类的引入带来许多好处:提供了数据隐藏;确保数据的初始化;对用户定义的类型隐式类型转换;动态联编和用户控制的内存管理;实现运算符和函数的重载机制:实现类的派生和继承机制;,2023/4/1,19,5.C+继承并发展了C,弥补了C的不足之处,增加了对面向对象的程序设计的支持;保持了C的简洁性和高效性;包含了C的所有语法;大多数C程序都可简单地转化为C+程序(不包含C+新特征)。,2023/4/1,20,
7、6.C+对初学者挑战,理解引入新概念:类和对象;运算符和函数的重载;数据和方法封装与隐蔽性;派生和继承及多态性;,2023/4/1,21,6.C+对初学者挑战,适应的程序设计新思路和方法过程与对象的设计方法双重性;类和类库的建立与使用;隐蔽性与多态性导致二义性;.,2023/4/1,22,1.2.C+程序基本结构,2023/4/1,23,1.C+语言成分,C+语言由特定的文字符号组成。包括:字母(a-z,A-Z)数字(0-9)及其他符号(+-*/%=!”()#?,SP)字符可遵循一定的语法规则组成各种数、标识符、运算表达式,如:123 45.67-128 0 0.123score summer
8、 people go_home1+2+3(56-12)/34 sum=n1+n2,2023/4/1,24,1.C+语言成分(续),每个变量或函数都应有其唯一的名称,用一串字符表达,称为标识符。应当用合法的标识符,作为函数或变量正确的名称,例如:_abc、people、go_home、Seg7、Lev_5。,2023/4/1,25,1.C+语言成分(续),标识符有严格限制必须以字母或下划线开头;必须由字母,数字或下划线组成;大小写字母是有区别的;不允许用若干保留字(或关键字)。不允许用非合法的标示符命名函数或变量,例如:-abc、go-home、3H、7_Seg、sUm#、$50,2023/4/
9、1,26,1.C+语言成分(续),C+语言预先定义好的标识符,称为保留字(即关键字)。ANSI C+中有61个,如下所示:auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof staticstruct switch typedef union unsigned void volatile whilebool catch class const_cast delet dynamic_c
10、astexplicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast templatethis throw ture try typeid typename using virtnalwchar,2023/4/1,27,1.C+语言成分(续),程序由语句组成。每个语句由标识符、常数、运算符号等组成,并以分号结束,例如:int num1,num2,sum;num1=num2=3;sun=num1+num2;,2023/4/1,28,1
11、.C+语言成分(续),C+程序可划分为多个模块这些模块就是函数和类。函数由一些相关的语句组成。类由一些相关的数据和函数组成起。,2023/4/1,29,2.程序的基本结构,一个简单的实例/*一个简单的C+程序,该程序在标准输出设备上输出一句问候语“hello”*/#include int main()cout hello!;return 0;/正常返回,2023/4/1,30,2.程序的基本结构(续),它由三个部分组成:注释编译预处理命令行main函数。,2023/4/1,31,3.注释,开始几行是注释,说明的程序的目的和功能。“/正常返回”也是注释。使用注释符时的注意事项:标志符/和*,/和
12、/之间不可以分开。注释符对“/*”和“*/”不可以嵌套。注释符/之后的注释结束于本行。,2023/4/1,32,思考题:下列程序是否正确?,#include int main()/*下面程序将在终端上输出/*你好*/的字样*/cout“您好!;return 0;/正常返回,2023/4/1,33,4.编译预处理命令,“#include”告诉C+编译器,将文件iostream.h内容插到此程序中。iostream.h中定义了一组标准类输入输出流(I/O stream)类。cout是标准输出流类的一个预定义的对象。,2023/4/1,34,5.函数,在C+语言中,函数是具有如下定义形式的语法单位:
13、返回值类型 函数名(函数参数表)语句组,函数头 定义了函数的名字,函数参数和返回值。,函数体 一对花括号及其中若干语句组成语句组。,2023/4/1,35,5.函数(续),C+程序是由若干个互相调用的函数组成的。一个程序必须有,且只能有一个主体主函数main()。其他函数都是由main函数直接或者间接地调用。,2023/4/1,36,5.程序实例,/*计算给定半径计算圆的周长*/#include void main()/*定义变量和常量*/const float PI=3.14;/表示圆周率 float radius=4.15;/圆的半径float circum;/圆的周长,2023/4/1,
14、37,5.程序实例(续),/计算圆的周长circum=2*PI*radius;/输出计算结果cout“radoius is:“radiusendl;cout”circumference is:”circum endl;,2023/4/1,38,1.3.C+的数据类型、常量和变量,2023/4/1,39,基本数据类型,构造数据类型,整型(int)实数型字符型(char)无值(void)(空类型)布尔型(bool),引申数据类型,结构化数据类型,指针(*)引用(&),数组()结构(struct)联合(union)位域枚举(enum)类(class),浮点型(float)双精度型(double),1
15、.C+数据类型,2023/4/1,40,1.C+数据类型,C+的基本数据类型包括有:整数型(int),例如:12,0,-127实数型,例如:3.14,12.0,0.234浮点类型(单精度型)(float)双精度型(double)字符型(char)例如:A,4,%无值型(空类型)(void)布尔型(bool),true,false,2023/4/1,41,1.C+数据类型,由基本数据引申或组合构造而成数据类型,称为构造数据类型。构造数据类型可分为两大类:引申类型指针、引用结构化类型数组、结构、联合、位域、枚举、类,2023/4/1,42,2.常量,用来代表常数的标识符称为常量。例如PI来代表3.
16、14。定义常量的方式为:const 常量类型 常量名=初始化值例如:const float PI=3.14;/表示圆周率const char BEST=A;,2023/4/1,43,3.变量,变量来表示可以变化的值,应先定义,后使用,定义的方式为:变量类型 变量名;/变量说明变量既可以初始化,也可以赋值。例如:int age;/年龄,age大于等于0char grade;/成绩,分A-E五个等级 float radius=2.5;/半径,初值2.5,注意:和常量不同,变量能被赋值。,2023/4/1,44,3.变量(续),变量名是变量的标识,由字母、数字和下划线组成,才合法。合法的变量名,例如
17、:sum student_name _Y2K非法的变量名,例如:2end 1998 us$student%,2023/4/1,45,1.4.表达式和语句,2023/4/1,46,1.表达式,操作数和操作符组成的式子称为表达式,其值是操作符施于操作数,所得的结果。最简单的表达式就是单个的常量、变量或常数。数学运算符:+、-、*、/、%(取模)是简单的操作符。,2023/4/1,47,1.表达式(续),表达式实例:aa+b*c-2002*PI*radius(x+y)/(a b),2023/4/1,48,2.语句及其分类,语句是程序中可执行的基本单元,以分号结尾。语句的分类:说明和定义语句;表达式语
18、句;流程控制语句;其他:,2023/4/1,49,3.说明和定义语句,说明或定义程序中用到的变量、常量、函数、类。例如:int grade;/变量说明const float PI=3.14;/常量定义void swap(int,2023/4/1,50,4.表达式语句,进行数据输入、输出、运算或者赋值输入语句 cin a;赋值语句 a=b+c;运算语句 a+;输出语句 cout a;函数调用语句 swap(a,b);返回语句 return a+b;空语句;/什么也不做,2023/4/1,51,5.流程控制语句,程序中一般语句是顺序的方式执行,流程控制语句可改变执行的顺序,包括:分支语句(if,s
19、witch)循环语句(for,while,do-while)跳转语句(break,continue,goto),2023/4/1,52,6.程序的执行流程,顺序 分支 循环,语句1,语句2,语句3,条件,语句2,语句1,语句1,语句2,2023/4/1,53,1.5.类与对象的基本概念,2023/4/1,54,1.对象及其属性和操作,对象是一件事物,属性和操作属性:状态,特征,组成成员;操作:修改属性,访问属性,执行命令。例如:文件具有文件名、长度、修改日期、内容等属性;文件可进行复制、更名、打印等操作。,2023/4/1,55,2.类的定义,类是具有相似特征的对象的抽象,例如:文件类 所有具
20、体文件对象的抽象书类 所有具体书对象的抽象学生类 所有具体学生对象的抽象类(class)是一种可由用户定义的、封装有数据元素及其操作函数的类型。因此,类是一种数据结构,含有数据及其操作函数的封装体。,2023/4/1,56,2.类的定义,类的定义一般格式:class 类名 类定义体;关键字class引出一个类的定义或说明。类名是类的代表。类定义体是类的数据成员和函数成员的说明。函数成员用来对这些数据成员进行操作,2023/4/1,57,3.类与对象的区别,类是抽象的,对象是具体的类是类型,对象是变量类是模型,对象是实例,2023/4/1,58,4.类和对象的好处,将数据和操作组织在一起易于理解
21、易于修改与维护类为对象提供了模板各个对象可以共享类的特征复用,class File char file_name100;intlength;Date modify_date;char*contents;boolcopy(File,属性,操作,注意分号,5.File类的定义,2023/4/1,60,boolFile:copy(File&destineFile).boolFile:rename(char*new_name).bool File:print().,5.File类的定义(续),2023/4/1,61,/修改文件名为new_nameboolFile:rename(char*new_nam
22、e)strcpy(file_name,new_name);,5.File类的定义(续),2023/4/1,62,/复制当前文件内容到指定文件中boolFile:copy(File,5.File类的定义(续),2023/4/1,63,6.对象的创建,直接创建变量File f1,f2;动态创建变量File*pFile;pFile=new File;.,2023/4/1,64,7.类与结构的异同,相同点成员的访问控制;数据加操作;可以继承。不同点类关键字为class,结构关键字为struct;类成员默认私有,结构成员默认公有;结构一般用于描述数据的集合,类一般用于描述数据和操作的集合。,2023/4
23、/1,65,8.其它概念和特性及功能,构造函数和析构函数函数重载和操作符重载友元类和友元函数派生类和继承性多态性和虚函数.,2023/4/1,66,1.6.C+程序设计和实现,2023/4/1,67,1.结构化程序设计,把程序设计看成处理数据的一系列过程;数据和程序分开存储;追踪函数调用及数据;功能分解并逐步求精。,2023/4/1,68,2.面向对象程序设计,把数据和处理数据过程看成一个整体对象定义处理对象类;支持封装和数据隐藏;支持继承和重载及多态性可实现软件复用。,2023/4/1,69,3.C+的三个重要机制,类(class)函数重载(function overloading)操作符重
24、载(operator overloading)。,2023/4/1,70,4.C+的设计方法,对象及其操作必须先定义,类及其子类必须先建立。细节方面的设计又应当在整体结构及相应的关系被确定之后,才能进行。宜采用自底向上和自顶向下相结合的方法。,2023/4/1,71,5.程序从概念到运行,高级语言源程序到可执行程序用编辑器输入源程序,以源文件的形式存放。源程序文件用编译器翻译成目标代码,以目标代码文件存放。连接器将组成程序的各个目标代码文件和一些库函数连接在一起,组成一个完整的可执行程序。,2023/4/1,72,5.程序从概念到运行(续),C+和C语言程序的生成和使用过程类似。,2023/4
25、/1,73,6.实现集成化可视化的开发,使用“集成开发环境(IDE)”(Integrated Development Environment)。Visual C+是Microsoft公司的Visual Studio开发工具箱中C+程序开发包。包括:编辑器、C+编译器、连接器、调试器、所有的库、例子和创建Windows应用程序所需要的文档。利用计算机图形技术和方法实现可视化的开发。,2023/4/1,74,1.7.用Visual C+开发程序过程实例,2023/4/1,75,1.Visual C+程序开发步骤,启动Developer Studio;创建新的程序项目(Project):项目中加C+
26、源程序文件;输入编辑C+源程序文件;编译、连接为可执行程序;运行程序。,2023/4/1,76,2.开发应用程序步骤之一,点击Microsoft Visual C+6.0的图标。(开始-程序-Microsoft Visual C+6.0文件夹-图标)进入Visual C+启动的界面.,2023/4/1,77,Visual C+启动的界面,2023/4/1,78,2.开发应用程序步骤之二,主菜单中选择File|New;New对话框中选择Projects;单击列表中Win32 Console Application;在“Location”编辑框中键入存放程序文件的目录,例如c:testVC;,20
27、23/4/1,79,3.开发应用程序步骤之二(续),在“project name”编辑框中键入项目的名字,单击OK;选择项目类型“an empty project”,单击Finish对话框中选OK结束配置,系统创建新程序(项目)所用到的各种文件。,2023/4/1,80,4.开发应用程序步骤之三,主菜单中选择File|New;New对话框中选择File;单击“C+Source File”;选中Add to Project复选框;在File name编辑框编辑框中键入文件名,如Hello,系统将自动创建并打开新文件Hello.cpp。,2023/4/1,81,5.开发应用程序步骤之四,打开的文件
28、中输入以下内容:#include int main()cout“hello!”endl;return 0;单击工具栏中的”save”图标,或选择File|Save来保存文件。,2023/4/1,82,6.开发应用程序步骤之五,选择主菜单的Build|Compile Hello.cpp来编译文件。若输入的内容没有错误,那么,输出窗口将会显示:hello.obj 0 error(s),0 warning(s)如在编译时有错误或警告,表明源文件出现错误,应改正之。,2023/4/1,83,6.开发应用程序步骤之五(续),选择主菜单的Build|Build Hello.exe来进行连接。若连接正确,得到了一个可执行程序hello.exe,则在屏幕下方的输出窗口将会显示:hello.exe 0 error(s),0 warning(s),2023/4/1,84,7.开发应用程序步骤之六,Build|Execute hello.exe(或者Ctrl+F5),开发环境中执行程序。在一个类似于DOS的窗口中显示一行hello紧接着系统提示显示Press any key to continue。按任意键,窗口关闭,退回到Visual C+开发环境。,2023/4/1,85,(第一章)完,