程序设计初步解读

上传人:tia****nde 文档编号:67697435 上传时间:2019-01-08 格式:PPT 页数:265 大小:13.24MB
返回 下载 相关 举报
程序设计初步解读_第1页
第1页 / 共265页
程序设计初步解读_第2页
第2页 / 共265页
程序设计初步解读_第3页
第3页 / 共265页
程序设计初步解读_第4页
第4页 / 共265页
程序设计初步解读_第5页
第5页 / 共265页
点击查看更多>>
资源描述

《程序设计初步解读》由会员分享,可在线阅读,更多相关《程序设计初步解读(265页珍藏版)》请在金锄头文库上搜索。

1、任课教师信息,姓名: 钟樑 手机: 15708318765(618765) Email: ,Visual C+学习参考,学习步骤: 1、掌握C+的核心知识:继承、派生、多态性。 2、熟悉利用API进行WINDOWS开发的基本原理,如消息映射。 3、学习MFC程序开发,多利用MSDN或者网上资源进行自学。 4、细分方向的开发,如图形图像方面。,参考资料: 1、MSDN 2、MFC程序设计第二版,清华大学出版社。 3、深入浅出MFC,华东理工大学出版社。 4、, ,Visual C+简介,Visual Studio是一种集成开发环境,其提供了包括Visual C+, Visual Basic, C

2、#, ASP.NET, SQL Server Express在内的多项开发功能。,Visual C+是Visual Studio的一个子集,其不是一门语言,而是多种开发技术的合集,主要包括:,1) Win32 API (Windows SDK开发) 2) Win32 Console (传统C/C+开发) 3) MFC(Microsoft Foundation Classes) 4) ATL(Active Template Library),Visual C+简介,Visual C+功能:,WEB控件:如银行的各种安全控件、甚至各种流氓控件。,通信的程序:聊天工具如QQ、BT下载工具、视频点播工

3、具等。,图形图像处理:Visual C+在图形图像处理上有先天的优势,可以说是图形图像处理领域的唯一选择。,游戏开发:Visual C+可以很方便的调用OpenGL和DirectX,是游戏开发的首选工具。,底层开发及二次开发:Visual C+有强大的底层开发功能,并能很方便为其它设计软件进行二次开发,如AutoCAD, TransModel。,Visual C+简介,利用VC编制windows程序主要有两种方法: (1)SDK ( Software Development Kit )软件开发工具包 (2)MFC(Microsoft Foundation Class Library)微软基本类

4、库,传统的结构化WINDOWS程序开发(SDK):,SDK的编程方式就是传统的C的编程方式。通过调用库函数 (win32API,也就是 Application Programming Interface,即 操作系统留给应用程序的一个调用接口)来实现程序的搭建。,优点在于:程序比较小, 效率高。,缺点在于:无框架化结构,API函数混乱,实现一个简单窗 口程序就需要上百行代码。,Visual C+简介,MFC程序开发:,MFC是面向对象程序设计与Application framework的完美结合。 它是把Win API进行封装的类库,是一个类的集合。它通过覆盖 Window API,为编程提供

5、了一个面向对象的界面。,优点在于:利用C+面象对象的特性进行编程,提供了一般性框架,大大缩短开发时间,易于实现代码移植,而且使得用户界面元素的编写变得容易起来。,缺点在于:封装复杂,细节隐藏过深,入门难度大,且不便于全面掌握其内部机理。,面向对象概念回顾,1、类,基本格式: class 类名称 public: 公有成员 protected: 保护型成员 private: 私有成员 ;,类成员函数声明的一般形式: 返回类型 函数名(形参表); 类成员函数定义的一般形式(类外定义): 返回类型 类名:函数名(形参表) /函数体 ,类属性(成员变量)的申明 同普通变量申明一致,面向对象程序设计复习,

6、2、类的构造函数,构造函数的作用: 用于在对象创建时,对对象的属性进行初始化。 构造函数的特点: 是一个函数,但没有返回值类型。 是一个和类名同名的函数。 只在对象创建时,自动地被编译器调用。 其它特征和普通函数相同,可以重载(即可以有多个版本的构造函数)。,面向对象程序设计复习,构造函数的一般声明方式: 类名(形参表); 构造函数的一般实现方式: 类名:类名(形参表) /函数体; 构造函数的另一种实现方式: 类名:类名(形参表) : 初始化列表 /函数体; 初始化列表形式: 属性(值或形参),属性(值或形参),面向对象程序设计复习,3、类的析构函数,析构函数的作用: 用于在对象生命期结束后,

7、对对象占用的内存进行清理工作。 析构函数的特点: 是一个函数,但没有返回值类型。 是一个在“类名”前加上“”符号的函数。 只在对象生命期结束时,自动地被编译器调用。 析构函数一个类中只能有一个,且不能重载。,面向对象程序设计复习,4、this指针,指向当前对象的指针。,例:Point类为例 void main() Point pt3; for(int id = 0; id 3; id+) ptid.SetX(id); ptid.SetY(id); ,void Point:SetX(int newX) m_iX = newX; ,谁的m_iX?怎么确定的?,void Point:SetX(int

8、 newX) this-m_iX = newX; ,面向对象程序设计复习,(类的)继承:一个新类从已有的类那里获得其已有的特性(属性和方法)。 获得方:子类或派生类 给予方(被获得方):父类或基类 继承的关系: 继承是一种“是一个(is-a)”的关系。 即如果一个子类B继承了父类A,我们可以说B是一个A。,5、继承的概念,面向对象程序设计复习,派生类的一般申明形式: class 类名 : 继承控制 基类名 /类声明 ;,6、基类和派生类的申明,基类的申明同一般类的申明方式。,可以是public, private, protected;,注意:基类的属性和方法在派生类中都保存了相应的一份拷贝,面

9、向对象程序设计复习,7、多重继承,派生类可以继承自多个类,一般申明形式: class 类名 : 继承控制 基类名, 继承控制 基类名, ,8、继承情况下的构造,派生类负责基类的构造 派生类利用初始化列表构造基类的属性。 派生类总是负责直接基类的构造。 有多个基类的情况下,派生类对基类的构造顺序取决于继承顺序,先继承的先构造,最后构造自身。析构顺序与此相反。,9、派生类和基类的关系以及安全赋值问题:,派生类和基类的关系为”is-a”的关系,即: 派生类是一个基类,面向对象程序设计复习,派生类的对象可以通过多种方式安全的赋值给基类,1)、派生类对象可以直接赋值给基类对象。,2)、派生类对象可以初始

10、化给基类的引用。,3)、派生类对象可以初始化给基类的指针。,动态绑定,静态绑定,基类的对象却无法安全的赋值给派生类,面向对象程序设计复习,10、虚函数与多态,虚函数的形式: virtual 成员函数申明,虚函数的意义:该成员函数在派生类中会有不同的实现方式, 即该行为因类型不同有不同的表现方法(多态),多态的使用:,第一步:必须存在继承关系。,第二步:需要表现出多态性的成员方法必须声明为基类的虚函数。,第三步:在派生类中将从基类继承而来的虚函数按照需求进行重新定义。,第四步:将派生类的对象赋值给基类的引用或者指针,第五步:通过该基类的引用或者指针调用相应的虚函数,就能根据对应的派生类表现出相应

11、的行为。,面向对象程序设计复习,11、虚函数的注意事项,几乎所有的成员函数都可以申明为虚函数(包括析构函数),但构造函数不能申明为虚函数(包括拷贝构造函数。),12、纯虚函数与抽象类,纯虚函数:一个必须由派生类实现的基类的成员方法,其实质是一个“占位符”。作用是告诉该基类的派生类,此方法必须由派生类实现。 声明方法: 虚成员函数声明 = 0; 如: virtual void GoToSchool() = 0; 抽象类:即包含了纯虚函数的类。 注意:抽象类不能实例化(即不能定义对象),面向对象程序设计复习,13、new和delete:,在堆上申请和释放内存,new的一般格式: new 类型(初值

12、) 或 new 类型数量,delete的一般格式: delete 指针 或 delete 指针,1)、必须成对使用,2)、new和delete在创建和删除对象的时候会自动调用类的构造函数和析构函数。,WINDOWS程序设计基础,基本概念: Windows程序设计是完全不同于Dos环境下的程序设计,是一种事件驱动的程序设计方法。主要是基于消息的。当用户需要完成某种功能时,会调用操作系统的某种支持,操作系统将用户的需要包装成某种消息,并投递到消息队列当中。然后利用应用程序从消息队列中取走消息并进行响应。,消息:指Windows发出的一个通知,告诉应用程序某个事情发生了, 每一次键盘按键,鼠标单击,

13、窗口更新都会产生消息。,程序中的消息:在WINDOWS开发中,一个消息被定义成了一个结构体,typedef Struct tagMsg / MSG;,WINDOWS程序设计基础,MSG的内部结构,typedef struct tagMSG / msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; MSG;,/消息来源的窗口句柄,/消息ID,/消息的附加参数,/消息产生的时间,/消息产生的窗口位置,其为消息的实质,通常为WM_XXX的样式,/如鼠标消息,WINDOWS程序设计基础,消息队列

14、:,操作系统会为每个应用程序建立一个消息队列。这个队列是个先进先出的缓冲区:,消息响应:当应用程序收到消息的时候,针对这个消息的进行处理的过程就叫消息响应。,消息1,消息2,消息n,消息产生,消息响应,消息响应是通过程序实现的,这也是Windows应用程序的主 要代码区。,WINDOWS程序设计基础,消息的传递机制:,检索队列中是否存在消息,属于某一个窗口,WINDOWS程序设计基础,窗口:窗口是屏幕上的一个矩形区域,WINDOWS程序设计基础,句柄(HANDLE):资源的标识,句柄,是整个windows编程的基础。一个句柄是指一个用来标志应用程序中的不同对象和同类对象中的不同的实例的唯一存在

15、的32位整数值,其特性类似一个地址。,在Windows编程中,句柄可以看做是相关资源或实例,如一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等,的唯一标示。句柄在Windows编程中,大量使用,如,HINSTANCE(实例句柄) HBITMAP(位图句柄) HDC(设备描述表句柄) HICON(图标句柄),实际上,WINDOWS编程中的所有句柄均统一为:HXXX,WINDOWS程序设计基础,WINDOWS自定义类型简介:,为了维护方便,WINDOWS将C/C+的内建类型都进行了重新定义,其一般定义规则为: typedef type TYPE;,如:int对应 INT, char对应CHA

16、R,float对应FLOAT,同时,WINDOWS还按照匈牙利命名法的相关规则对相关类型指针进行了重新定义,如LPSTR, PBYTE等。另外,WINDOWS还按照需要重新定义了一些类型,如WPARAM, LPARAM, WORD等,其实质也是内建类型的重命名。,参考:ms-help:/MS.VSCC.v90/MS.MSDNQTR.v90.chs/winprog/ winprog/windows_data_types.htm,WINDOWS程序设计基础,UNICODE简介:,传统的英文字符采用的是ASCII编码,但A的意思是American,这也是ASCII编码最大的问题。而要表示中文、日语在内的东方语系,ASCI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号