面向对象程序设计

上传人:M****1 文档编号:590349923 上传时间:2024-09-13 格式:PPT 页数:58 大小:296.04KB
返回 下载 相关 举报
面向对象程序设计_第1页
第1页 / 共58页
面向对象程序设计_第2页
第2页 / 共58页
面向对象程序设计_第3页
第3页 / 共58页
面向对象程序设计_第4页
第4页 / 共58页
面向对象程序设计_第5页
第5页 / 共58页
点击查看更多>>
资源描述

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

1、面向对象程序设计面向对象程序设计主讲人:武云主讲人:武云中国地质大学计算机学院中国地质大学计算机学院(1 1)掌握面向对象程序设计一般方法和)掌握面向对象程序设计一般方法和特点。特点。(2 2)熟练掌握)熟练掌握C+C+语言的语法语言的语法(3 3)掌握)掌握WindowsWindows程序设计的特点。程序设计的特点。(4 4)能够开发一般的基于)能够开发一般的基于APIAPI、MFCMFC的的WindowsWindows程序。程序。(5 5)学会)学会VCVC程序调试的一般方法。程序调试的一般方法。教学目标2面向对象技术与Visual C+-第1章n上课认真听讲,下课认真复习上课认真听讲,下

2、课认真复习n多编程,勤实践多编程,勤实践n联机帮助联机帮助MSDNMSDNn多看参考书籍、资料、别人代码多看参考书籍、资料、别人代码学习方法3面向对象技术与Visual C+-第1章教材:教材:VC+VC+面向对象程序设计面向对象程序设计戴光明,李向戴光明,李向 编著编著高等教育出版社、中山大学出版社高等教育出版社、中山大学出版社 20052005参考教材:参考教材:1.1.甘玲甘玲 邱劲邱劲 主编主编 面向对象技术与面向对象技术与Visual C+Visual C+ 清华大学出版社清华大学出版社2.2.黄维通主编黄维通主编 Visual C+Visual C+面向对象与面向对象与可视化程序设

3、计可视化程序设计清华大学出版社清华大学出版社4面向对象技术与Visual C+-第1章学时学时:讲课:讲课:40 40 上机:上机:1616考试形式考试形式:平时上课和上机情况:平时上课和上机情况:30%30%闭卷考试:闭卷考试:70%70%5面向对象技术与Visual C+-第1章第第1章章 面向对象技术概述面向对象技术概述n计算机程序语言的发展计算机程序语言的发展n程序设计方法发展历程程序设计方法发展历程n面向对象技术的基本概念面向对象技术的基本概念 : :对象,类,消息和事件对象,类,消息和事件n面向对象技术的基本特征:面向对象技术的基本特征:抽象性,封装性,继承抽象性,封装性,继承性,

4、多态性性,多态性nWindowsWindows程序设计的特点程序设计的特点n常用面向对象语言简介常用面向对象语言简介6面向对象技术与Visual C+-第1章n1.11.1程序设计语言程序设计语言计算机程序设计语言计算机程序设计语言(从低级语言到高级语言的发展过程)(从低级语言到高级语言的发展过程)第一代:机器语言第一代:机器语言 第二代:汇编语言第二代:汇编语言第三代:算法语言,又称高级语言第三代:算法语言,又称高级语言lFORTRANFORTRAN:科学计算、向量处理、并行处理科学计算、向量处理、并行处理lALGOLALGOL:通用算法语言通用算法语言lCOBOL(Common COBOL

5、(Common Business-Oriented Business-Oriented Language)Language):商商用用数据处理数据处理lBASICBASIC、PascalPascal、C Cl面向对象语言如:面向对象语言如:SimulaSimula、EiffelEiffel、C+C+7面向对象技术与Visual C+-第1章机器语言和汇编语言机器语言和汇编语言n由计算机硬件系统可以识别的二进制指令组由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。成的语言称为机器语言。 计算机发展的初期,软件工程师们只能用机器语言来编计算机发展的初期,软件工程师们只能用机器语言来编写

6、程序。这一阶段,在人类的自然语言和计算机编程语写程序。这一阶段,在人类的自然语言和计算机编程语言之间存在着巨大的鸿沟。言之间存在着巨大的鸿沟。n汇编语言将机器指令映射为一些可以被人读汇编语言将机器指令映射为一些可以被人读懂的助记符,如懂的助记符,如ADDADD、SUBSUB等。等。 此时编程语言与人类自然语言间的鸿沟略有缩小,但仍此时编程语言与人类自然语言间的鸿沟略有缩小,但仍与人类的思维相差甚远。因为它的抽象层次太低,程序与人类的思维相差甚远。因为它的抽象层次太低,程序员需要考虑大量的机器细节。员需要考虑大量的机器细节。8面向对象技术与Visual C+-第1章高级语言高级语言 高级语言屏蔽

7、了机器的细节,提高了语言的抽高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数据象层次,程序中可以采用具有一定含义的数据命名和容易理解的执行语句。这使得在书写程命名和容易理解的执行语句。这使得在书写程序时可以联系到程序所描述的具体事物。序时可以联系到程序所描述的具体事物。9面向对象技术与Visual C+-第1章面向对象语言面向对象语言n出发点:出发点:q更直接地描述客观世界中存在的事物更直接地描述客观世界中存在的事物( (对象对象) )以及它们之间的关系。以及它们之间的关系。n特点:特点:q是高级语言。是高级语言。q将客观事物看作具有属性和行为的对象。将客观事物看

8、作具有属性和行为的对象。q通过抽象找出同一类对象的共同属性和行通过抽象找出同一类对象的共同属性和行为,形成类。为,形成类。q通过类的继承与多态实现代码重用通过类的继承与多态实现代码重用10面向对象技术与Visual C+-第1章 优点:优点: 使程序能够比较直接地反映问题域使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进类认识事物所采用的一般思维方法来进行软件开发。行软件开发。11面向对象技术与Visual C+-第1章n 面向对象语言发展历程面向对象语言发展历程:雏形阶段(六七十年代)雏形阶段(六七十年代)

9、先驱:先驱:Simula语言:对象、类,支持继承语言:对象、类,支持继承 Ada:美国国防部,嵌入式实时系统美国国防部,嵌入式实时系统早期的早期的Smalltalk完善阶段(八十年代初期)完善阶段(八十年代初期) Smalltalk-80:大部分的面向对象概念大部分的面向对象概念 繁荣阶段(八十年代末以来)繁荣阶段(八十年代末以来)大批大批OO语言产生语言产生纯纯OO语言:语言:Smalltalk、Eiffel、 Object-C 混合语言:混合语言:C+、Object Pascal转向转向OOD和和OOA(九十年代初期以来)九十年代初期以来) 出现大量的出现大量的OOA(面向对象的分析面向对

10、象的分析)、OOD(面向对象的设计)面向对象的设计)方法方法12面向对象技术与Visual C+-第1章1.21.2程序设计方法的发展历程程序设计方法的发展历程一、一、面向过程面向过程的的结构化结构化程序设计方法程序设计方法2020世纪世纪6060年代诞生、七八十年代广泛使用的程序设计方年代诞生、七八十年代广泛使用的程序设计方法,语言工具有:法,语言工具有:PASCALPASCAL、C C 等。等。设计思路设计思路:自顶向下,逐步求精;程序结构按功能划分:自顶向下,逐步求精;程序结构按功能划分为若干个基本模块,这些模块形成一个树型结构;各模为若干个基本模块,这些模块形成一个树型结构;各模块间的

11、关系尽可能简单,在功能上相对独立;每一模块块间的关系尽可能简单,在功能上相对独立;每一模块内部均是由内部均是由顺序、选择、循环顺序、选择、循环三种基本结构组成;其模三种基本结构组成;其模块化实现的具体方法是使用子程序。块化实现的具体方法是使用子程序。13面向对象技术与Visual C+-第1章优点:优点: 有效地将一个较复杂的程序系统设计任务分解成许多易有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。于控制和处理的子任务,便于开发和维护。存在问题:存在问题:是一种是一种面向过程的程序设计方法面向过程的程序设计方法,而,而“过程过程”和和“操作操作”又是不稳

12、定和多变的,因此不能直接反映人求解问题的思路。又是不稳定和多变的,因此不能直接反映人求解问题的思路。维护程序的一致性困难维护程序的一致性困难。数据和过程相互独立,存在着用。数据和过程相互独立,存在着用正确的程序模块调用错误的数据,或用错误的程序模块调用正确的程序模块调用错误的数据,或用错误的程序模块调用正确的数据的可能。因此,程序员必须时刻注意需要处理的正确的数据的可能。因此,程序员必须时刻注意需要处理的数据格式。数据格式。程序代码可重用性差程序代码可重用性差。程序中除少数标准库函数外,每设。程序中除少数标准库函数外,每设计一个程序时,程序员几乎从零做起。即使重用代码,通常计一个程序时,程序员

13、几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。也是通过拷贝或编辑重新生成一份。14面向对象技术与Visual C+-第1章二二. .面向面向对象程序设计方法对象程序设计方法(OOP,Object-Oriented Programming) 面向对象程序设计面向对象程序设计是一种以对象为基础,以事件是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。或消息来驱动对象执行处理的程序设计技术。将数据及对数据的操作放在一起,作为相互依存、将数据及对数据的操作放在一起,作为相互依存、不可分割的整体来考虑,它采用数据抽象和信息隐藏不可分割的整体来考虑,它采用数据抽象和信息隐

14、藏技术,将对象和对对象的操作抽象成一种新的数据类技术,将对象和对对象的操作抽象成一种新的数据类型型类类。15面向对象技术与Visual C+-第1章 这种方法集抽象性、封装性、继承性和多态性于这种方法集抽象性、封装性、继承性和多态性于一体,易于实现模块化、可重用、易维护、易扩充等一体,易于实现模块化、可重用、易维护、易扩充等功能。功能。优点:优点:l程序模块间的关系更为简单,程序模块的独立性、程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。数据的安全性就有了良好的保障。l通过继承与多态性,可以大大提高程序的可重用通过继承与多态性,可以大大提高程序的可重用性,使得软件的

15、开发和维护都更为方便。性,使得软件的开发和维护都更为方便。16面向对象技术与Visual C+-第1章 结结构构化化程程序序设设计计的的方方法法是是把把程程序序看看作作是是工工作作在在数数据据上的一系列过程或函数的集合。上的一系列过程或函数的集合。程序的定律是:程序的定律是: 程序程序= =(算法)(算法)+ +(数据结构)(数据结构) 面面向向对对象象方方法法把把程程序序看看作作是是互互相相协协作作而而又又彼彼此此独独立立的对象的集合。对象间通过发送消息而相互作用。的对象的集合。对象间通过发送消息而相互作用。程序的定律是:程序的定律是: 对象对象= =(算法(算法+ +数据结构)数据结构)

16、程序程序= =(对象(对象+ +对象对象+ +) 17面向对象技术与Visual C+-第1章18面向对象技术与Visual C+-第1章实实例例:栈栈是是一一种种由由若若干干个个按按线线性性次次序序排排列列的的元元素素所所构构成成的的复复合合数数据据,对对栈栈能能实实施施两两种种操操作作:进进栈栈(增增加加一一个个元元素素)和和退退栈栈(删删除除一一个个元元素素),并并且且这这两两个个操操作作必必须须在在栈栈的的同同一一端端(栈顶栈顶)进行。后进先出(进行。后进先出(LIFOLIFO)是栈的一个重要性质。是栈的一个重要性质。 1) 1) 结构化方案结构化方案#include #define

17、STACK_SIZE 100struct Stack /栈的结构体栈的结构体 int top; int bufferSTACK_SIZE;void init(Stack &s) /对栈初始化的函数对栈初始化的函数 s.top = -1;19面向对象技术与Visual C+-第1章bool push(Stack &s, int i) /进栈操作进栈操作 if (s.top = STACK_SIZE-1) printf( “Stack is overflow.n”); return false; else s.top+; s.buffers.top = i; return true; 20面向对象

18、技术与Visual C+-第1章bool pop(Stack &s, int &i) /出栈操作出栈操作 if (s.top = -1) printf(“Stack is empty.n”); return false; else i = s.buffers.top; s.top-; return true; 21面向对象技术与Visual C+-第1章对栈的使用可由两种方式:对栈的使用可由两种方式:(1 1)可以通可以通过提供的函数提供的函数来来实现,Stack st; int x;init(st);push(st,12);pop(st,x);(2 2)也可以直接在也可以直接在栈的数据表示的

19、数据表示上直接上直接进行行 st.top = -1;st.top+;st.bufferst.top = 12;x = st.bufferst.top;st.top-;22面向对象技术与Visual C+-第1章2) 面向对象方案面向对象方案#include #define STACK_SIZE 100class Stack /定义定义stack类,将数据和操作放在一起类,将数据和操作放在一起 private: int top;int bufferSTACK_SIZE; public:Stack() top = -1; /构造函数,对栈进行初始化构造函数,对栈进行初始化 bool push(in

20、t i); /进栈函数进栈函数 if (top = STACK_SIZE-1) printf( “Stack is overflow.n”); return false; else top+; buffertop = i; return true; 23面向对象技术与Visual C+-第1章bool pop(int &i); if (top = -1) printf( “Stack is empty.n”); return false; else i = buffertop; top-; return true; ;Stack Stack stst; ;intint x; x;st.push

21、(12); st.push(12); st.pop(xst.pop(x););st.topst.top = -1; /error = -1; /errorst.topst.top+; /error+; /errorst.bufferst.topst.bufferst.top = 12; /error = 12; /error24面向对象技术与Visual C+-第1章1.31.3面向对象的基本概念面向对象的基本概念n对象(对象(ObjectObject) 一般意义上的对象:一般意义上的对象:q是现实世界中一个实际存在的事物。是现实世界中一个实际存在的事物。q可以是有形的(比如一辆汽车),也可以

22、是无形可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。的(比如一项计划)。q是构成世界的一个独立单位,具有:是构成世界的一个独立单位,具有:n静态特征:可以用某种数据来描述静态特征:可以用某种数据来描述n动态特征:对象所表现的行为或具有的功能动态特征:对象所表现的行为或具有的功能25面向对象技术与Visual C+-第1章 面向对象方法中的对象:面向对象方法中的对象:是系统中用来描述客观事物的一个实体,它是是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。对象由用来构成系统的一个基本单位。对象由一组属一组属性和一组行为性和一组行为构成。构成。属性:用来描述对象静

23、态特征的数据项。属性:用来描述对象静态特征的数据项。行为:用来描述对象动态特征的操作序列行为:用来描述对象动态特征的操作序列。26面向对象技术与Visual C+-第1章例如有一个人名叫小明,性别男,身高例如有一个人名叫小明,性别男,身高1.80m1.80m,体重体重68kg68kg,可以修电器,可以教计算机课,下面来描述这可以修电器,可以教计算机课,下面来描述这个对象个对象对象的功能(可做的操作):对象的功能(可做的操作):回答身高回答身高回答体重回答体重 均属于自身所承受的操作均属于自身所承受的操作 回答性别回答性别修理电器修理电器 属于施加与其他对象的操作属于施加与其他对象的操作教计算机

24、课教计算机课对象名对象名: :小明小明对象的状态对象的状态: 性别:男性别:男身高:身高:1.80m1.80m体重:体重:68kg68kg27面向对象技术与Visual C+-第1章类(类(classclass)类是具有类是具有相同属性和行为相同属性和行为的一组对象的集合,它的一组对象的集合,它为属于它的全部对象提供了统一的抽象描述,其为属于它的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。类是对象集内部包括属性和行为两个主要部分。类是对象集合的再抽象。合的再抽象。类与实例的关系类与实例的关系: 组成类的对象均为此类的实例(组成类的对象均为此类的实例(InstanceInst

25、ance)。)。 类是多个实例的综合抽象,实例是类的个体实物。类是多个实例的综合抽象,实例是类的个体实物。28面向对象技术与Visual C+-第1章n人类的定义人类的定义:class HUMANKINDchar *name;double weight;public:void eat( );void wear( );void sleep( );void travel( ); ;n人类的实例:人类的实例:HUMANKIND XiaoMing ; 特征、属性、数据成员特征、属性、数据成员行为、操作、函数成员行为、操作、函数成员29面向对象技术与Visual C+-第1章消息和事件消息和事件n消息(

26、消息(MessageMessage)是描述事件发生的信息,它是描述事件发生的信息,它是对象之间发出的行为请求。是对象之间发出的行为请求。n多个消息构成一个事件。多个消息构成一个事件。 消息具有三个性质:消息具有三个性质:(1)(1)同一对象可接收不同形式的多个消息,产生不同的响应;同一对象可接收不同形式的多个消息,产生不同的响应; (2)(2)相同形式的消息可以送给不同的对象,所作出的响应可以相同形式的消息可以送给不同的对象,所作出的响应可以是截然不同的;是截然不同的;(3)(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消

27、息不予理会,对消息的响应并不是必须的。也可以对消息不予理会,对消息的响应并不是必须的。 30面向对象技术与Visual C+-第1章1.41.4面向对象技术的基本特征面向对象技术的基本特征 n抽象性抽象性(Abstract)(Abstract)q抽象就是忽略事物中与当前目标无关的非本质特征,抽象就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。更充分地注意与当前目标有关的本质特征。31面向对象技术与Visual C+-第1章n封装性封装性(Encapsulation)(Encapsulation)q封装封装就是把对象的属性和行为结合成一个独立的单位,就是把对象的属

28、性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。并尽可能隐蔽对象的内部细节。 其有两个含义:一是其有两个含义:一是封装性封装性,另一个是,另一个是“信息隐蔽信息隐蔽”。n一一是是把把对对象象的的全全部部属属性性和和行行为为结结合合在在一一起起,形形成成一一个不可分割的独立单位。个不可分割的独立单位。 n尽尽可可能能隐隐蔽蔽对对象象的的内内部部细细节节,对对外外形形成成一一道道屏屏障障,与外部的联系只能通过外部接口实现。与外部的联系只能通过外部接口实现。 32面向对象技术与Visual C+-第1章n继承性继承性(Inheritance)(Inheritance)q继承继承是一种联结类

29、与类的层次模型。继承性是指特殊是一种联结类与类的层次模型。继承性是指特殊类的对象拥有其一般类的属性和行为的特性。类的对象拥有其一般类的属性和行为的特性。q继承意味着继承意味着“自动地拥有自动地拥有”,即特殊类中不必重新定,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而它却自动地、义已在一般类中定义过的属性和行为,而它却自动地、隐含地拥有其一般类的属性与行为。隐含地拥有其一般类的属性与行为。 车车 洒水车洒水车父类父类/基类基类子类子类/派生类派生类继承继承33面向对象技术与Visual C+-第1章继承的分类继承的分类:1.1.按继承源划分:按继承源划分:单继承单继承 :每个派生类只

30、直接继承了一个基类的特征:每个派生类只直接继承了一个基类的特征 多继承多继承:指多个基类派生出一个派生类的继承关系,:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征。多继承的派生类直接继承了不止一个基类的特征。ABCBA34面向对象技术与Visual C+-第1章n2.2.按继承内容划分按继承内容划分:取取代代继继承承:派派生生类类对对象象完完整整地地继继承承了了基基类类的的所所有有“属属性性”和和“操操作作”,且且没没有有修修改改或或增增加加新新的的“属性属性”和和“操作操作”。包包含含继继承承:派派生生类类对对象象完完整整地地继继承承了了所所有有基基类类的

31、的所所有有“属属性性”和和“操操作作”,并并增增加加了了新新的的“属属性性”和和“操作操作”。受受限限继继承承:派派生生类类对对象象部部分分地地继继承承了了基基类类的的“属属性性”和和“操操作作”,并并且且没没有有增增加加新新的的“属属性性”和和“操作操作”。特特化化继继承承:派派生生类类对对象象继继承承了了基基类类的的“属属性性”和和“操操作作”,并并对对原原有有“属属性性”和和“操操作作”进进行行了了修改修改。35面向对象技术与Visual C+-第1章n多态性多态性(Polymorphism)(Polymorphism)q多态性是指类中同一函数名对应多个具有相似功能的多态性是指类中同一函

32、数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性。不同功能的同名函数的特性。 C+C+支持两种多态性:支持两种多态性:编译时的多态性编译时的多态性和和运行时的多态性运行时的多态性。 重载重载:多个函数具有相同的名字但具有不同的作用。:多个函数具有相同的名字但具有不同的作用。 函数重载函数重载 操作符重载操作符重载 虚函数虚函数:虚函数使用户在一个类等级中可以使用相同:虚函数使用户在一个类等级中可以使用相同 函数的多个版本。函数的多个版本。 36面向对象技术与Visual C+-第1章1.5 Windo

33、ws程序设计的特点程序设计的特点 n(1 1)事件驱动的程序设计)事件驱动的程序设计 n(2 2)消息循环与输入)消息循环与输入 n(3 3)图形输出)图形输出 n(4 4)用户界面对象)用户界面对象 n(5 5)资源共享)资源共享 n(6)Windows应用程序组成应用程序组成 n (7) Windows应用程序生成应用程序生成37面向对象技术与Visual C+-第1章(1 1)驱动程序设计)驱动程序设计的特点的特点nA. A. 过程驱动过程驱动不是面向用户的,交互性差,不是面向用户的,交互性差,用户界面不够友好用户界面不够友好 , ,用户按程序顺序设计用户按程序顺序设计nB. B. 事件

34、驱动事件驱动是一种是一种“被动被动”式程序设计式程序设计方法,程序开始运行时,处于等待用户输入事方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态完毕又返回并处于等待事件状态 38面向对象技术与Visual C+-第1章 A.过程驱动模型 39面向对象技术与Visual C+-第1章B.B.事件驱动程序模型事件驱动程序模型 40面向对象技术与Visual C+-第1章(2 2)消息循环与输入)消息循环与输入 nWindowsWindows应用程序的消息来源有以下四种:应用程序的消息来源有以下四种:

35、n(1 1)输入消息:包括键盘和鼠标的输入。)输入消息:包括键盘和鼠标的输入。n(2 2)控制消息:用来与)控制消息:用来与WindowsWindows的控制对象,如列表的控制对象,如列表框、按钮、检查框等进行双向通信。框、按钮、检查框等进行双向通信。n(3 3)系统消息:对程序化的事件或系统时钟中断作)系统消息:对程序化的事件或系统时钟中断作出反应。出反应。n(4 4)用户消息:这是程序员自己定义并在应用程序)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理中主动发出的,一般由应用程序的某一部分内部处理。41面向对象技术与Visual C+-第1章nGD

36、I(GDI(图形设备接口图形设备接口) ):实现与设备无关的图形操作功能。:实现与设备无关的图形操作功能。 屏幕上绘制像素、打印输出,绘制用户界面包括窗口、菜单、屏幕上绘制像素、打印输出,绘制用户界面包括窗口、菜单、对话框等。对话框等。n内核内核KERNELKERNEL支持与操作系统的功能支持与操作系统的功能:如进程加载、文件:如进程加载、文件I/OI/O,以及内存、线程等。以及内存、线程等。nUSERUSER为用户界面对象提供支持,为用户界面对象提供支持,它用于接收和管理所有输它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列入消息、系统消息并把它们发给相应的窗口的消息队

37、列( (一一个系统定义的内存块,用于临时存储消息个系统定义的内存块,用于临时存储消息) )或是把消息直接或是把消息直接发给窗口过程。发给窗口过程。 每个窗口维护自己的消息队列,并从中取出消息,利用窗每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。口函数进行处理。WindowsWindows操作系统包括三个内核基本元件:操作系统包括三个内核基本元件:GDI, GDI, KERNEL ,USERKERNEL ,USER。42面向对象技术与Visual C+-第1章43面向对象技术与Visual C+-第1章(3 3)图形输出)图形输出n1.DOS1.DOS程序独占整个显示屏幕程序

38、独占整个显示屏幕,win,win程序控制一程序控制一部分屏幕,通过部分屏幕,通过WindowsWindows管理。管理。n2. 2. WindowsWindows程序的所有程序的所有输出都是出都是图形。形。WindowsWindows提供了丰富的提供了丰富的图形函数用于形函数用于图形形输出,出,这对输出出图形是相当方便的形是相当方便的。n 3.Windows3.Windows下的输出是设备无关下的输出是设备无关, , 应用程序应用程序是使用图形设备接口是使用图形设备接口(GDI-graphics device GDI-graphics device interfaceinterface)来进行

39、图形输出来进行图形输出 。44面向对象技术与Visual C+-第1章(4 4)用户界面对象)用户界面对象nWindowsWindows支持丰富的用户接口对象,包括:窗口、图标、支持丰富的用户接口对象,包括:窗口、图标、菜单、对话框等等。程序员只需简单的几十行代码,就可菜单、对话框等等。程序员只需简单的几十行代码,就可以设计出一个非常漂亮的图形用户界面。而在以设计出一个非常漂亮的图形用户界面。而在DOSDOS环境下,环境下,则需要大量的代码来完成同样的工作,而且效果也没有则需要大量的代码来完成同样的工作,而且效果也没有WindowsWindows提供的那么好。提供的那么好。45面向对象技术与V

40、isual C+-第1章(5)资源共享)资源共享 n占用资源形式占用资源形式 对于对于DOSDOS(单任务)程序来说,它运行时独占单任务)程序来说,它运行时独占系统的全部资源,包括显示器、内存等,在程序系统的全部资源,包括显示器、内存等,在程序结束时才释放资源。结束时才释放资源。 WindowsWindows是一个多任务的操作系统,各个应用是一个多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源包括:设程序共享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话框,图标,定时

41、器,插入符号,通信端口,电话线等。话线等。46面向对象技术与Visual C+-第1章WindowsWindows应用程序要求资源基本模式应用程序要求资源基本模式 1.1.向向WindowsWindows系统请求资源系统请求资源 2.2.使用该资源;使用该资源;3.3.释放该资源给释放该资源给WindowsWindows以供别的程序使用以供别的程序使用 n访问资源形式访问资源形式 WindowsWindows应用程序一般不能直接访问内存或其他硬应用程序一般不能直接访问内存或其他硬件设备,如键盘、鼠标、计数器、屏幕或串口、并口件设备,如键盘、鼠标、计数器、屏幕或串口、并口等。等。WindowsW

42、indows系统要求绝对控制这些资源,以保证向系统要求绝对控制这些资源,以保证向所有的应用程序提供公平的不中断的运行。所有的应用程序提供公平的不中断的运行。 如果确实要访问串并口,应当使用通过如果确实要访问串并口,应当使用通过WindowsWindows提提供的函数来安全的访问。供的函数来安全的访问。 47面向对象技术与Visual C+-第1章(6 6)WindowsWindows应用程序组成应用程序组成 n 1.1.C,CPPC,CPP源程序文件:源程序文件包含了应用程序的数源程序文件:源程序文件包含了应用程序的数据、类、功能逻辑模块的定义。据、类、功能逻辑模块的定义。n2.2.H,HPP

43、H,HPP头文件:头文件包含了头文件:头文件包含了CPPCPP、C C源文件中所有源文件中所有数据、模块、类的声明。当一个数据、模块、类的声明。当一个CPPCPP、C C源文件要调用另源文件要调用另一个一个CPPCPP、C C中所定义的模块功能时,需要包含那个中所定义的模块功能时,需要包含那个CPPCPP、C C文件对应的头文件。文件对应的头文件。n3.3.资源文件:包含了应用程序所使用的全部资源定义,资源文件:包含了应用程序所使用的全部资源定义,通常以通常以.RC.RC为后缀名。为后缀名。48面向对象技术与Visual C+-第1章(7)(7)应用程序生成过程应用程序生成过程 49面向对象技

44、术与Visual C+-第1章1.6常用面向对象程序设计语言简介常用面向对象程序设计语言简介 n混合型面向对象程序设计语言混合型面向对象程序设计语言C+ n纯面向对象程序设计语言纯面向对象程序设计语言Java n可视化程序设计语言可视化程序设计语言Visual Basic50面向对象技术与Visual C+-第1章1.1.混合型面向对象程序设计语言混合型面向对象程序设计语言C+C+ nC+C+作为一种面向对象程序设计语言,具有对象、类、作为一种面向对象程序设计语言,具有对象、类、消息等概念,同时支持面向对象技术的抽象性、封消息等概念,同时支持面向对象技术的抽象性、封装性、继承性和多态性装性、继

45、承性和多态性 。特点:特点:n语言超集语言超集,代码质量高、速度快、可移植性好;,代码质量高、速度快、可移植性好;n强强类类型型语语言言,编编译译阶阶段段就就能能发发现现程程序序潜潜在在错错误误,不不会将错误带到运行阶段;会将错误带到运行阶段;n表表达达能能力力强强,+的的多多继继承承是是JAVA, JAVA, C#C#等等语语言言所所没没有的;有的;n支支持持运运算算符符重重载载,对对象象的的运运算算更更易易表表达达且且表表达达更更加加自然;自然;51面向对象技术与Visual C+-第1章n抽抽象象能能力力强强,函函数数模模板板和和类类模模板板提提供供更更高高级级别别的抽象;的抽象;n内内

46、存存管管理理高高效效,C+C+提提供供自自动动和和人人工工回回收收两两种种方式;方式;n异常处理加强异常处理加强,支持对象类型的异常;,支持对象类型的异常;n支持名字空间支持名字空间,更加有利于大型软件工程项目;,更加有利于大型软件工程项目;n非非纯纯面面向向对对象象的的语语言言,同同时时支支持持对对象象和和模模块块描描述程序结构。述程序结构。 52面向对象技术与Visual C+-第1章2.2.纯面向对象程序设计语言纯面向对象程序设计语言JAVAJAVA nJavaJava是由是由SUNSUN公司公司2020世纪世纪9090年代初开发的一种纯面向年代初开发的一种纯面向对象程序设计语言。对象程

47、序设计语言。nJavaJava作为一种解释型程序设计语言,具有简单性、作为一种解释型程序设计语言,具有简单性、面向对象性、平台无关性、可移植性、安全性、动面向对象性、平台无关性、可移植性、安全性、动态性和健壮性,不依赖于机器结构,并且提供了并态性和健壮性,不依赖于机器结构,并且提供了并发的机制,具有很高的性能;发的机制,具有很高的性能;n它最大限度地利用了网络,它最大限度地利用了网络,JavaJava的应用程序的应用程序(AppletApplet)可在网络上传输,可以说是网络世界的可在网络上传输,可以说是网络世界的通用语言;另外通用语言;另外,JavaJava还提供了丰富类库,使程序还提供了丰

48、富类库,使程序设计者可以方便地建立自己的系统。设计者可以方便地建立自己的系统。 53面向对象技术与Visual C+-第1章Java与与C及及C+的区别的区别不再有不再有#include 和和#define 等预处理功能等预处理功能不再有不再有structure,union及及typedef不再有指针、不再有多重继承不再有指针、不再有多重继承不再有操作符重载不再有操作符重载(Operatior Overloading)取消自动类型转换取消自动类型转换,要求强制转换要求强制转换54面向对象技术与Visual C+-第1章3.3.可视化程序设计语言可视化程序设计语言Visual BasicVisu

49、al Basicn19911991年年MicrosoftMicrosoft公司推出了基于公司推出了基于BASICBASIC语言的可视化语言的可视化面向对象开发工具面向对象开发工具Visual BasicVisual Basic。n继承了继承了BASICBASIC语言所具有的语法简单、容易学习、容语言所具有的语法简单、容易学习、容易使用、数据处理能力强的特点,又引入了面向对象、易使用、数据处理能力强的特点,又引入了面向对象、事件驱动的编程机制和可视化程序设计方法,大大降事件驱动的编程机制和可视化程序设计方法,大大降低了开发低了开发WindowsWindows应用程序的难度,有效地提高了应应用程序

50、的难度,有效地提高了应用程序开发的效率用程序开发的效率 , ,还兼顾了高级编程技术还兼顾了高级编程技术 。nVisual BasicVisual Basic存在语法不严格、开发出的系统稳定性存在语法不严格、开发出的系统稳定性较低的缺点。相对较低的缺点。相对Visual C+Visual C+语言来说,语言来说,Visual Visual BasicBasic面向系统底层的编程能力有限面向系统底层的编程能力有限 。55面向对象技术与Visual C+-第1章Visual C+ 6.0Visual C+ 6.0特点特点(1) 开发环境开发环境 由一套集成工具组成:文本编辑器、资源编辑器项目建立工由

51、一套集成工具组成:文本编辑器、资源编辑器项目建立工具、具、 优化编译器、源代码浏览器等优化编译器、源代码浏览器等 (2) 使用向导来简化应用程序的开发使用向导来简化应用程序的开发 各种向导各种向导 (Wizard),MFC类库,活动模板库类库,活动模板库(3) 最快的集成数据库访问最快的集成数据库访问 ODBC,DAO (4) 强有力的强有力的Internet支持支持 WinInet,ActiveX,新增新增Internet类类56面向对象技术与Visual C+-第1章Visual C+.NETVisual C+.NETVisual C+.netVisual C+.net是是Microsof

52、tMicrosoft的新一代的新一代Visual C+.2000Visual C+.2000年年6 6月月2222日日推出。推出。.NET.NET框架是构建并运行应用程序的平台。它的主要组件包括框架是构建并运行应用程序的平台。它的主要组件包括公共语公共语言运行库(言运行库(CLRCLR)和和.NET.NET框架类库(框架类库(FCLFCL) 特点特点: :(1).NET(1).NET框框架架提提供供了了一一个个高高端端的的语语言言互互操操作作性性。不不同同语语言言写写成成的的程程序序都都被被编编译译成成中中间间语语言言(Microsoft Microsoft Intermediate Inte

53、rmediate LanguageLanguage,MSIL ),MSIL ),不同部分也能合并成为独立而统一的程序。不同部分也能合并成为独立而统一的程序。(2 2).NET.NET框框架架的的另另一一个个好好处处是是CLRCLR的的执执行行管管理理特特性性。CLRCLR管管理理内内存存,安全性和其他特性,从而减轻了程序员在这方面的压力。安全性和其他特性,从而减轻了程序员在这方面的压力。(3 3).NET.NET框框架架还还向向程程序序员员提提供供了了丰丰富富类类库库。编编写写.NET.NET框框架架应应用用程程序序时时,不不必必考考虑虑Windows Windows APIAPI、MFCMF

54、C、ATLATL、COMCOM等等技技术术,只只需需要要使使用用FCL FCL 57面向对象技术与Visual C+-第1章 C#C#是在是在C C,C+C+的基础上发展起来的,是一种有网的基础上发展起来的,是一种有网络风格,面向对象的跨语言平台的程序设计语言。络风格,面向对象的跨语言平台的程序设计语言。 C#C#没有了没有了C+C+的一些特性:没有宏,模板,多重继的一些特性:没有宏,模板,多重继承,指针及许多重载的操作符,当然还没有全局函数,承,指针及许多重载的操作符,当然还没有全局函数,全局变量,常量。每一样东西都得放在一个类中。全局变量,常量。每一样东西都得放在一个类中。C#(C#(C sharp) )58面向对象技术与Visual C+-第1章

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

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