




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计面向对象程序设计主讲人:武云主讲人:武云中国地质大学计算机学院中国地质大学计算机学院面向对象技术与visual c+-第1章2(1 1)掌握面向对象程序设计一般方法和)掌握面向对象程序设计一般方法和特点。特点。(2 2)熟练掌握)熟练掌握c+c+语言的语法语言的语法(3 3)掌握)掌握windowswindows程序设计的特点。程序设计的特点。(4 4)能够开发一般的基于)能够开发一般的基于apiapi、mfcmfc的的windowswindows程序。程序。(5 5)学会)学会vcvc程序调试的一般方法。程序调试的一般方法。教学目标面向对象技术与visual c+-第1章3n
2、上课认真听讲,下课认真复习上课认真听讲,下课认真复习n多编程,勤实践多编程,勤实践n联机帮助联机帮助msdnmsdnn多看参考书籍、资料、别人代码多看参考书籍、资料、别人代码学习方法面向对象技术与visual c+-第1章4教材:教材:vc+vc+面向对象程序设计面向对象程序设计戴光明,李向戴光明,李向 编著编著高等教育出版社、中山大学出版社高等教育出版社、中山大学出版社 20052005参考教材:参考教材:1.1.甘玲甘玲 邱劲邱劲 主编主编 面向对象技术与面向对象技术与visual c+visual c+ 清华大学出版社清华大学出版社2.2.黄维通主编黄维通主编 visual c+visu
3、al c+面向对象面向对象与可视化程序设计与可视化程序设计清华大学出版社清华大学出版社面向对象技术与visual c+-第1章5学时学时:讲课:讲课:40 40 上机:上机:1616考试形式考试形式:平时上课和上机情况:平时上课和上机情况:30%30%闭卷考试:闭卷考试:70%70%面向对象技术与visual c+-第1章6第第1章章 面向对象技术概述面向对象技术概述n计算机程序语言的发展计算机程序语言的发展n程序设计方法发展历程程序设计方法发展历程n面向对象技术的基本概念面向对象技术的基本概念 : :对象,类,消息和事件对象,类,消息和事件n面向对象技术的基本特征:面向对象技术的基本特征:抽
4、象性,封装性,继承抽象性,封装性,继承性,多态性性,多态性nwindowswindows程序设计的特点程序设计的特点n常用面向对象语言简介常用面向对象语言简介面向对象技术与visual c+-第1章7n1.11.1程序设计语言程序设计语言计算机程序设计语言计算机程序设计语言(从低级语言到高级语言的发展过程)(从低级语言到高级语言的发展过程)第一代:机器语言第一代:机器语言 第二代:汇编语言第二代:汇编语言第三代:算法语言,又称高级语言第三代:算法语言,又称高级语言lfortranfortran:科学计算、向量处理、并行处理:科学计算、向量处理、并行处理lalgolalgol:通用算法语言:通用
5、算法语言lcobol(common business-oriented language)cobol(common business-oriented language):商用:商用数据处理数据处理lbasicbasic、pascalpascal、c cl面向对象语言如:面向对象语言如:simulasimula、eiffeleiffel、c+c+面向对象技术与visual c+-第1章8机器语言和汇编语言机器语言和汇编语言n由计算机硬件系统可以识别的二进制指令由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。组成的语言称为机器语言。 计算机发展的初期,软件工程师们只能用机器语言来编计
6、算机发展的初期,软件工程师们只能用机器语言来编写程序。这一阶段,在人类的自然语言和计算机编程语写程序。这一阶段,在人类的自然语言和计算机编程语言之间存在着巨大的鸿沟。言之间存在着巨大的鸿沟。n汇编语言将机器指令映射为一些可以被人汇编语言将机器指令映射为一些可以被人读懂的助记符,如读懂的助记符,如addadd、subsub等。等。 此时编程语言与人类自然语言间的鸿沟略有缩小,但仍此时编程语言与人类自然语言间的鸿沟略有缩小,但仍与人类的思维相差甚远。因为它的抽象层次太低,程序与人类的思维相差甚远。因为它的抽象层次太低,程序员需要考虑大量的机器细节。员需要考虑大量的机器细节。面向对象技术与visua
7、l c+-第1章9高级语言高级语言 高级语言屏蔽了机器的细节,提高了语言的抽高级语言屏蔽了机器的细节,提高了语言的抽象层次,程序中可以采用具有一定含义的数据象层次,程序中可以采用具有一定含义的数据命名和容易理解的执行语句。这使得在书写程命名和容易理解的执行语句。这使得在书写程序时可以联系到程序所描述的具体事物。序时可以联系到程序所描述的具体事物。面向对象技术与visual c+-第1章10面向对象语言面向对象语言n出发点:出发点:q更直接地描述客观世界中存在的事物更直接地描述客观世界中存在的事物( (对象对象) )以及它们之间的关系。以及它们之间的关系。n特点:特点:q是高级语言。是高级语言。
8、q将客观事物看作具有属性和行为的对象。将客观事物看作具有属性和行为的对象。q通过抽象找出同一类对象的共同属性和行通过抽象找出同一类对象的共同属性和行为,形成类。为,形成类。q通过类的继承与多态实现代码重用通过类的继承与多态实现代码重用面向对象技术与visual c+-第1章11 优点:优点: 使程序能够比较直接地反映问题域使程序能够比较直接地反映问题域的本来面目,软件开发人员能够利用人的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进类认识事物所采用的一般思维方法来进行软件开发。行软件开发。面向对象技术与visual c+-第1章12n 面向对象语言发展历程面向对象语言发展历
9、程: 雏形阶段(六七十年代)雏形阶段(六七十年代) 先驱:先驱:simula语言:对象、类,支持继承语言:对象、类,支持继承 ada:美国国防部,嵌入式实时系统:美国国防部,嵌入式实时系统 早期的早期的smalltalk 完善阶段(八十年代初期)完善阶段(八十年代初期) smalltalk-80:大部分的面向对象概念:大部分的面向对象概念 繁荣阶段(八十年代末以来)繁荣阶段(八十年代末以来)大批大批oo语言产生语言产生纯纯oo语言:语言:smalltalk、eiffel、 object-c 混合语言:混合语言:c+、object pascal 转向转向ood和和ooa(九十年代初期以来)(九十
10、年代初期以来) 出现大量的出现大量的ooa(面向对象的分析面向对象的分析)、ood(面向对象的设计)(面向对象的设计)方法方法面向对象技术与visual c+-第1章131.21.2程序设计方法的发展历程程序设计方法的发展历程一、一、面向过程面向过程的的结构化结构化程序设计方法程序设计方法2020世纪世纪6060年代诞生、七八十年代广泛使用的程序设计方年代诞生、七八十年代广泛使用的程序设计方法,语言工具有:法,语言工具有:pascalpascal、c c 等。等。设计思路设计思路:自顶向下,逐步求精;程序结构按功能划分:自顶向下,逐步求精;程序结构按功能划分为若干个基本模块,这些模块形成一个树
11、型结构;各模为若干个基本模块,这些模块形成一个树型结构;各模块间的关系尽可能简单,在功能上相对独立;每一模块块间的关系尽可能简单,在功能上相对独立;每一模块内部均是由内部均是由顺序、选择、循环顺序、选择、循环三种基本结构组成;其模三种基本结构组成;其模块化实现的具体方法是使用子程序。块化实现的具体方法是使用子程序。面向对象技术与visual c+-第1章14 优点:优点: 有效地将一个较复杂的程序系统设计任务分解成许多易有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。于控制和处理的子任务,便于开发和维护。存在问题:存在问题:是一种是一种面向过程的程序设计方
12、法面向过程的程序设计方法,而,而“过程过程”和和“操作操作”又是不稳定和多变的,因此不能直接反映人求解问题的思路。又是不稳定和多变的,因此不能直接反映人求解问题的思路。维护程序的一致性困难维护程序的一致性困难。数据和过程相互独立,存在着用。数据和过程相互独立,存在着用正确的程序模块调用错误的数据,或用错误的程序模块调用正确的程序模块调用错误的数据,或用错误的程序模块调用正确的数据的可能。因此,程序员必须时刻注意需要处理的正确的数据的可能。因此,程序员必须时刻注意需要处理的数据格式。数据格式。程序代码可重用性差程序代码可重用性差。程序中除少数标准库函数外,每设。程序中除少数标准库函数外,每设计一
13、个程序时,程序员几乎从零做起。即使重用代码,通常计一个程序时,程序员几乎从零做起。即使重用代码,通常也是通过拷贝或编辑重新生成一份。也是通过拷贝或编辑重新生成一份。面向对象技术与visual c+-第1章15二二. .面向面向对象程序设计方法对象程序设计方法(oop,object-oriented programming) 面向对象程序设计面向对象程序设计是一种以对象为基础,以事件是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。或消息来驱动对象执行处理的程序设计技术。将数据及对数据的操作放在一起,作为相互依存、将数据及对数据的操作放在一起,作为相互依存、不可分割的整体来考虑,
14、它采用数据抽象和信息隐不可分割的整体来考虑,它采用数据抽象和信息隐藏技术,将对象和对对象的操作抽象成一种新的数藏技术,将对象和对对象的操作抽象成一种新的数据类型据类型类类。面向对象技术与visual c+-第1章16 这种方法集抽象性、封装性、继承性和多态性于这种方法集抽象性、封装性、继承性和多态性于一体,易于实现模块化、可重用、易维护、易扩充一体,易于实现模块化、可重用、易维护、易扩充等功能。等功能。 优点:优点:l程序模块间的关系更为简单,程序模块的独立性、程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。数据的安全性就有了良好的保障。l通过继承与多态性,可以大大提
15、高程序的可重用通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。性,使得软件的开发和维护都更为方便。面向对象技术与visual c+-第1章17 结构化程序设计的方法结构化程序设计的方法是把程序看作是工作在数据是把程序看作是工作在数据上的一系列过程或函数的集合。上的一系列过程或函数的集合。程序的定律是:程序的定律是: 程序程序= =(算法)(算法)+ +(数据结构)(数据结构) 面向对象方法面向对象方法把程序看作是互相协作而又彼此独立把程序看作是互相协作而又彼此独立的对象的集合。对象间通过发送消息而相互作用。的对象的集合。对象间通过发送消息而相互作用。程序的定律是:
16、程序的定律是: 对象对象= =(算法(算法+ +数据结构)数据结构) 程序程序= =(对象(对象+ +对象对象+ +) 面向对象技术与visual c+-第1章18面向对象技术与visual c+-第1章19实例:实例:栈是一种由若干个按线性次序排列的元素所构成的复栈是一种由若干个按线性次序排列的元素所构成的复合数据,对栈能实施两种操作:进栈(增加一个元素)和退合数据,对栈能实施两种操作:进栈(增加一个元素)和退栈(删除一个元素),并且这两个操作必须在栈的同一端(栈(删除一个元素),并且这两个操作必须在栈的同一端(栈顶)进行。后进先出(栈顶)进行。后进先出(lifolifo)是栈的一个重要性质
17、。)是栈的一个重要性质。1) 1) 结构化方案结构化方案#include #define stack_size 100struct stack /栈的结构体栈的结构体 int top; int bufferstack_size;void init(stack &s) /对栈初始化的函数对栈初始化的函数 s.top = -1;面向对象技术与visual c+-第1章20bool push(stack &s, int i) /进栈操作进栈操作 if (s.top = stack_size-1) printf( “stack is overflow.n”); return false
18、; else s.top+; s.buffers.top = i; return true; 面向对象技术与visual c+-第1章21bool 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; 面向对象技术与visual c+-第1章22对栈的使用可由两种方式:对栈的使用可由两种方式:(1 1)可以通过提供的函数可以通过提供的函数来实现,来实现,stack
19、st; int x;init(st);push(st,12);pop(st,x);(2 2)也可以直接在栈的数据表示也可以直接在栈的数据表示上直接进行上直接进行 st.top = -1;st.top+;st.bufferst.top = 12;x = st.bufferst.top;st.top-;面向对象技术与visual c+-第1章232) 面向对象方案面向对象方案#include #define stack_size 100class stack /定义定义stack类,将数据和操作放在一起类,将数据和操作放在一起 private: int top;int bufferstack_si
20、ze; public:stack() top = -1; /构造函数,对栈进行初始化构造函数,对栈进行初始化 bool push(int i); /进栈函数进栈函数 if (top = stack_size-1) printf( “stack is overflow.n”); return false; else top+; buffertop = i; return true; 面向对象技术与visual c+-第1章24bool pop(int &i); if (top = -1) printf( “stack is empty.n”); return false; else i
21、= buffertop; top-; return true; ;stack st;stack st;int x;int x;st.push(12); st.push(12); st.pop(x);st.pop(x);st.top = -1; /errorst.top = -1; /errorst.top+; /errorst.top+; /errorst.bufferst.top = 12; /errorst.bufferst.top = 12; /error面向对象技术与visual c+-第1章251.31.3面向对象的基本概念面向对象的基本概念n对象(对象(objectobject)
22、一般意义上的对象:一般意义上的对象:q是现实世界中一个实际存在的事物。是现实世界中一个实际存在的事物。q可以是有形的(比如一辆汽车),也可以是无形可以是有形的(比如一辆汽车),也可以是无形的(比如一项计划)。的(比如一项计划)。q是构成世界的一个独立单位,具有:是构成世界的一个独立单位,具有:n静态特征:可以用某种数据来描述静态特征:可以用某种数据来描述n动态特征:对象所表现的行为或具有的功能动态特征:对象所表现的行为或具有的功能面向对象技术与visual c+-第1章26 面向对象方法中的对象:面向对象方法中的对象:是系统中用来描述客观事物的一个实体,它是是系统中用来描述客观事物的一个实体,
23、它是用来构成系统的一个基本单位。对象由用来构成系统的一个基本单位。对象由一组属一组属性和一组行为性和一组行为构成。构成。属性:用来描述对象静态特征的数据项。属性:用来描述对象静态特征的数据项。行为:用来描述对象动态特征的操作序列行为:用来描述对象动态特征的操作序列。面向对象技术与visual c+-第1章27例如有一个人名叫小明,性别男,身高例如有一个人名叫小明,性别男,身高1.80m1.80m,体重,体重68kg68kg,可以修电器,可以教计算机课,下面来描述这,可以修电器,可以教计算机课,下面来描述这个对象个对象对象的功能(可做的操作):对象的功能(可做的操作):回答身高回答身高回答体重回
24、答体重 均属于自身所承受的操作均属于自身所承受的操作 回答性别回答性别修理电器修理电器 属于施加与其他对象的操作属于施加与其他对象的操作教计算机课教计算机课对象名对象名: :小明小明对象的状态对象的状态: 性别:男性别:男身高:身高:1.80m1.80m体重:体重:68kg68kg面向对象技术与visual c+-第1章28类(类(classclass)类是具有类是具有相同属性和行为相同属性和行为的一组对象的集合,它的一组对象的集合,它为属于它的全部对象提供了统一的抽象描述,其为属于它的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。类是对象集内部包括属性和行为两个主要部分。类
25、是对象集合的再抽象。合的再抽象。类与实例的关系类与实例的关系: 组成类的对象均为此类的实例(组成类的对象均为此类的实例(instanceinstance)。)。 类是多个实例的综合抽象,实例是类的个体实物。类是多个实例的综合抽象,实例是类的个体实物。面向对象技术与visual c+-第1章29n人类的定义人类的定义:class humankindchar *name;double weight;public:void eat( );void wear( );void sleep( );void travel( ); ;n人类的实例:人类的实例:humankind xiaoming ; 特征、属
26、性、数据成员特征、属性、数据成员行为、操作、函数成员行为、操作、函数成员面向对象技术与visual c+-第1章30消息和事件消息和事件n消息(消息(messagemessage)是描述事件发生的信息,它)是描述事件发生的信息,它是对象之间发出的行为请求。是对象之间发出的行为请求。n多个消息构成一个事件。多个消息构成一个事件。 消息具有三个性质:消息具有三个性质:(1)(1)同一对象可接收不同形式的多个消息,产生不同的响应;同一对象可接收不同形式的多个消息,产生不同的响应; (2)(2)相同形式的消息可以送给不同的对象,所作出的响应可以相同形式的消息可以送给不同的对象,所作出的响应可以是截然不
27、同的;是截然不同的;(3)(3)消息的发送可以不考虑具体的接收者,对象可以响应消息,消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,对消息的响应并不是必须的。也可以对消息不予理会,对消息的响应并不是必须的。 面向对象技术与visual c+-第1章311.41.4面向对象技术的基本特征面向对象技术的基本特征 n抽象性抽象性(abstract)(abstract)q抽象就是忽略事物中与当前目标无关的非本质特征,抽象就是忽略事物中与当前目标无关的非本质特征,更充分地注意与当前目标有关的本质特征。更充分地注意与当前目标有关的本质特征。面向对象技术与visual c+-第1章
28、32n封装性封装性(encapsulation)(encapsulation)q封装封装就是把对象的属性和行为结合成一个独立的单位,就是把对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。并尽可能隐蔽对象的内部细节。 其有两个含义:一是其有两个含义:一是封装性封装性,另一个是,另一个是“信息隐信息隐蔽蔽”。n一是把对象的全部属性和行为结合在一起,形成一一是把对象的全部属性和行为结合在一起,形成一个不可分割的独立单位。个不可分割的独立单位。 n尽可能隐蔽对象的内部细节,对外形成一道屏障,尽可能隐蔽对象的内部细节,对外形成一道屏障,与外部的联系只能通过外部接口实现。与外部的联系只能
29、通过外部接口实现。 面向对象技术与visual c+-第1章33n继承性继承性(inheritance)(inheritance)q继承继承是一种联结类与类的层次模型。继承性是指特殊是一种联结类与类的层次模型。继承性是指特殊类的对象拥有其一般类的属性和行为的特性。类的对象拥有其一般类的属性和行为的特性。q继承意味着继承意味着“自动地拥有自动地拥有”,即特殊类中不必重新定,即特殊类中不必重新定义已在一般类中定义过的属性和行为,而它却自动地、义已在一般类中定义过的属性和行为,而它却自动地、隐含地拥有其一般类的属性与行为。隐含地拥有其一般类的属性与行为。 车车 洒水车洒水车父类父类/基类基类子类子类
30、/派生类派生类继承继承面向对象技术与visual c+-第1章34继承的分类继承的分类:1.1.按继承源划分:按继承源划分:单继承单继承 :每个派生类只直接继承了一个基类的特征:每个派生类只直接继承了一个基类的特征 多继承多继承:指多个基类派生出一个派生类的继承关系,:指多个基类派生出一个派生类的继承关系,多继承的派生类直接继承了不止一个基类的特征。多继承的派生类直接继承了不止一个基类的特征。abcba面向对象技术与visual c+-第1章35n2.2.按继承内容划分按继承内容划分:取代继承取代继承:派生类对象:派生类对象完整地完整地继承了基类的所有继承了基类的所有“属性属性”和和“操作操作
31、”,且,且没有修改或增加没有修改或增加新的新的“属性属性”和和“操作操作”。包含继承包含继承:派生类对象:派生类对象完整地完整地继承了所有基类的继承了所有基类的所有所有“属性属性”和和“操作操作”,并,并增加增加了新的了新的“属性属性”和和“操作操作”。受限继承受限继承:派生类对象:派生类对象部分地部分地继承了基类的继承了基类的“属属性性”和和“操作操作”,并且没有增加新的,并且没有增加新的“属性属性”和和“操作操作”。特化继承特化继承:派生类对象继承了基类的:派生类对象继承了基类的“属性属性”和和“操作操作”,并对原有,并对原有“属性属性”和和“操作操作”进行了进行了修改修改。面向对象技术与
32、visual c+-第1章36n多态性多态性(polymorphism)(polymorphism)q多态性是指类中同一函数名对应多个具有相似功能的多态性是指类中同一函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数的特性。不同功能的同名函数的特性。 c+c+支持两种多态性:支持两种多态性:编译时的多态性编译时的多态性和和运行时的多态性运行时的多态性。 重载重载:多个函数具有相同的名字但具有不同的作用。:多个函数具有相同的名字但具有不同的作用。 函数重载函数重载 操作符重载操作符重载 虚函数虚函数:虚函数使
33、用户在一个类等级中可以使用相同:虚函数使用户在一个类等级中可以使用相同 函数的多个版本。函数的多个版本。 面向对象技术与visual c+-第1章371.5 windows程序设计的特点程序设计的特点 n(1 1)事件驱动的程序设计)事件驱动的程序设计 n(2 2)消息循环与输入)消息循环与输入 n(3 3)图形输出)图形输出 n(4 4)用户界面对象)用户界面对象 n(5 5)资源共享)资源共享 n(6)windows应用程序组成应用程序组成 n (7) windows应用程序生成应用程序生成面向对象技术与visual c+-第1章38(1 1)驱动程序设计)驱动程序设计的特点的特点na.
34、a. 过程驱动过程驱动不是面向用户的,交互性差,不是面向用户的,交互性差,用户界面不够友好用户界面不够友好 , ,用户按程序顺序设计用户按程序顺序设计nb. b. 事件驱动事件驱动是一种是一种“被动被动”式程序设计式程序设计方法,程序开始运行时,处于等待用户输入事方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态完毕又返回并处于等待事件状态 面向对象技术与visual c+-第1章39 a.过程驱动模型 面向对象技术与visual c+-第1章40b.b.事件驱动程序模型事件驱动程序模型 面向对象
35、技术与visual c+-第1章41(2 2)消息循环与输入)消息循环与输入 nwindowswindows应用程序的消息来源有以下四种:应用程序的消息来源有以下四种:n(1 1)输入消息:包括键盘和鼠标的输入。)输入消息:包括键盘和鼠标的输入。n(2 2)控制消息:用来与)控制消息:用来与windowswindows的控制对象,如列表的控制对象,如列表框、按钮、检查框等进行双向通信。框、按钮、检查框等进行双向通信。n(3 3)系统消息:对程序化的事件或系统时钟中断作)系统消息:对程序化的事件或系统时钟中断作出反应。出反应。n(4 4)用户消息:这是程序员自己定义并在应用程序)用户消息:这是程
36、序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理中主动发出的,一般由应用程序的某一部分内部处理。面向对象技术与visual c+-第1章42ngdi(gdi(图形设备接口图形设备接口) ):实现与设备无关的图形操作功能。:实现与设备无关的图形操作功能。 屏幕上绘制像素、打印输出,绘制用户界面包括窗口、菜单、屏幕上绘制像素、打印输出,绘制用户界面包括窗口、菜单、对话框等。对话框等。n内核内核kernelkernel支持与操作系统的功能支持与操作系统的功能:如进程加载、文件:如进程加载、文件i/oi/o,以及内存、线程等。以及内存、线程等。nuseruser为用户界面对象提供
37、支持,为用户界面对象提供支持,它用于接收和管理所有输它用于接收和管理所有输入消息、系统消息并把它们发给相应的窗口的消息队列入消息、系统消息并把它们发给相应的窗口的消息队列( (一一个系统定义的内存块,用于临时存储消息个系统定义的内存块,用于临时存储消息) )或是把消息直接或是把消息直接发给窗口过程。发给窗口过程。 每个窗口维护自己的消息队列,并从中取出消息,利用窗每个窗口维护自己的消息队列,并从中取出消息,利用窗口函数进行处理。口函数进行处理。windowswindows操作系统包括三个内核基本元件:操作系统包括三个内核基本元件:gdi, gdi, kernel ,userkernel ,us
38、er。面向对象技术与visual c+-第1章43面向对象技术与visual c+-第1章44(3 3)图形输出)图形输出n1.dos1.dos程序独占整个显示屏幕程序独占整个显示屏幕,win,win程序控制一程序控制一部分屏幕,通过部分屏幕,通过windowswindows管理。管理。n2. 2. windowswindows程序的所有输出都是图形。程序的所有输出都是图形。windowswindows提供了丰富的图形函数用于图形输出,提供了丰富的图形函数用于图形输出,这对输出图形是相当方便的这对输出图形是相当方便的。n 3.windows3.windows下的输出是设备无关下的输出是设备无关
39、, , 应用程序应用程序是使用图形设备接口(是使用图形设备接口(gdi-graphics device gdi-graphics device interfaceinterface)来进行图形输出)来进行图形输出 。面向对象技术与visual c+-第1章45(4 4)用户界面对象)用户界面对象nwindowswindows支持丰富的用户接口对象,包括:窗口、图标、支持丰富的用户接口对象,包括:窗口、图标、菜单、对话框等等。程序员只需简单的几十行代码,就可菜单、对话框等等。程序员只需简单的几十行代码,就可以设计出一个非常漂亮的图形用户界面。而在以设计出一个非常漂亮的图形用户界面。而在dosdo
40、s环境下,环境下,则需要大量的代码来完成同样的工作,而且效果也没有则需要大量的代码来完成同样的工作,而且效果也没有windowswindows提供的那么好。提供的那么好。面向对象技术与visual c+-第1章46(5)资源共享)资源共享 n占用资源形式占用资源形式 对于对于dosdos(单任务)程序来说,它运行时独占(单任务)程序来说,它运行时独占系统的全部资源,包括显示器、内存等,在程序系统的全部资源,包括显示器、内存等,在程序结束时才释放资源。结束时才释放资源。 windowswindows是一个多任务的操作系统,各个应用是一个多任务的操作系统,各个应用程序共享系统提供的资源,常见的资源
41、包括:设程序共享系统提供的资源,常见的资源包括:设备上下文,画刷,画笔,字体,对话框控制,对备上下文,画刷,画笔,字体,对话框控制,对话框,图标,定时器,插入符号,通信端口,电话框,图标,定时器,插入符号,通信端口,电话线等。话线等。面向对象技术与visual c+-第1章47windowswindows应用程序要求资源基本模式应用程序要求资源基本模式 1.1.向向windowswindows系统请求资源系统请求资源 2.2.使用该资源;使用该资源;3.3.释放该资源给释放该资源给windowswindows以供别的程序使用以供别的程序使用 n访问资源形式访问资源形式 windowswindo
42、ws应用程序一般不能直接访问内存或其他硬应用程序一般不能直接访问内存或其他硬件设备,如键盘、鼠标、计数器、屏幕或串口、并口件设备,如键盘、鼠标、计数器、屏幕或串口、并口等。等。windowswindows系统要求绝对控制这些资源,以保证向系统要求绝对控制这些资源,以保证向所有的应用程序提供公平的不中断的运行。所有的应用程序提供公平的不中断的运行。 如果确实要访问串并口,应当使用通过如果确实要访问串并口,应当使用通过windowswindows提提供的函数来安全的访问。供的函数来安全的访问。 面向对象技术与visual c+-第1章48(6 6)windowswindows应用程序组成应用程序组
43、成 n 1.1.c,cppc,cpp源程序文件:源程序文件包含了应用程序的数源程序文件:源程序文件包含了应用程序的数据、类、功能逻辑模块的定义。据、类、功能逻辑模块的定义。n 2. 2.h,hpph,hpp头文件:头文件包含了头文件:头文件包含了cppcpp、c c源文件中所有源文件中所有数据、模块、类的声明。当一个数据、模块、类的声明。当一个cppcpp、c c源文件要调用源文件要调用另一个另一个cppcpp、c c中所定义的模块功能时,需要包含那个中所定义的模块功能时,需要包含那个cppcpp、c c文件对应的头文件。文件对应的头文件。n 3. 3.资源文件:包含了应用程序所使用的全部资源
44、定义,资源文件:包含了应用程序所使用的全部资源定义,通常以通常以.rc.rc为后缀名。为后缀名。面向对象技术与visual c+-第1章49(7)(7)应用程序生成过程应用程序生成过程 面向对象技术与visual c+-第1章501.6常用面向对象程序设计语言简介常用面向对象程序设计语言简介 n混合型面向对象程序设计语言混合型面向对象程序设计语言c+ n纯面向对象程序设计语言纯面向对象程序设计语言java n可视化程序设计语言可视化程序设计语言visual basic面向对象技术与visual c+-第1章511.1.混合型面向对象程序设计语言混合型面向对象程序设计语言c+c+ nc+c+作为
45、一种面向对象程序设计语言,具有对象、类、作为一种面向对象程序设计语言,具有对象、类、消息等概念,同时支持面向对象技术的抽象性、封消息等概念,同时支持面向对象技术的抽象性、封装性、继承性和多态性装性、继承性和多态性 。特点:特点:n语言超集语言超集,代码质量高、速度快、可移植性好;,代码质量高、速度快、可移植性好;n强类型语言强类型语言,编译阶段就能发现程序潜在错误,不,编译阶段就能发现程序潜在错误,不会将错误带到运行阶段;会将错误带到运行阶段;n表达能力强表达能力强,+的多继承是的多继承是java, c#java, c#等语言所没等语言所没有的;有的;n支持运算符重载支持运算符重载,对象的运算
46、更易表达且表达更加对象的运算更易表达且表达更加自然;自然;面向对象技术与visual c+-第1章52n抽象能力强抽象能力强,函数模板和类模板提供更高级别,函数模板和类模板提供更高级别的抽象;的抽象;n内存管理高效内存管理高效,c+c+提供自动和人工回收两种提供自动和人工回收两种方式;方式;n异常处理加强异常处理加强,支持对象类型的异常;,支持对象类型的异常;n支持名字空间支持名字空间,更加有利于大型软件工程项目;,更加有利于大型软件工程项目;n非纯面向对象的语言非纯面向对象的语言,同时支持对象和模块描,同时支持对象和模块描述程序结构。述程序结构。 面向对象技术与visual c+-第1章53
47、2.2.纯面向对象程序设计语言纯面向对象程序设计语言javajava njavajava是由是由sunsun公司公司2020世纪世纪9090年代初开发的一种纯面年代初开发的一种纯面向对象程序设计语言。向对象程序设计语言。njavajava作为一种解释型程序设计语言,具有简单性、作为一种解释型程序设计语言,具有简单性、面向对象性、平台无关性、可移植性、安全性、动面向对象性、平台无关性、可移植性、安全性、动态性和健壮性,不依赖于机器结构,并且提供了并态性和健壮性,不依赖于机器结构,并且提供了并发的机制,具有很高的性能;发的机制,具有很高的性能;n它最大限度地利用了网络,它最大限度地利用了网络,ja
48、vajava的应用程序的应用程序(appletapplet)可在网络上传输,可以说是网络世界的)可在网络上传输,可以说是网络世界的通用语言;另外,通用语言;另外,javajava还提供了丰富类库,使程序还提供了丰富类库,使程序设计者可以方便地建立自己的系统。设计者可以方便地建立自己的系统。 面向对象技术与visual c+-第1章54java与与c及及c+的区别的区别不再有不再有#include 和和#define 等预处理功能等预处理功能不再有不再有structure,union及及typedef不再有指针、不再有多重继承不再有指针、不再有多重继承不再有操作符重载不再有操作符重载(operatior overloading)取消自动类型转换取消自动类型转换,要求强制转换要求强制转换面向对象技术与visual c+-第1章553.3.可视化程序设计语言可视化程序设计语言visual basicvisual basicn19911991年年microsoftmicrosoft公司推出了基于公司推出了基于basicbasic语言的可视化语言的可视化面向对象开发工具面向对象开发工具visual basicvisual basic。n继承了继承了basicbasic语言所具有的语法简单、容易学习、容语言所具有的语法简单、容易学习、容易使用、数据处理能力强的特点,又引入了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息检索语言与技巧考核试卷
- 化工生产过程中的能量集成考核试卷
- 小学生音乐律动课件视频
- 办公文具创新设计理念与实践考核试卷
- 城市绿化管理的城市设计与城市规划考核试卷
- 秋季安全宣传课件图片
- 门市仓库出租合同范本
- 医药器械采购合同范本
- 种植基地配送合同范本
- 酒店客房预订操作规范及流程制度
- 《交通工程CAD》课程教学大纲(本科)
- JJF 1341-2012 钢筋锈蚀测量仪校准规范-(高清现行)
- 换班申请表(标准模版)
- 偏瘫临床路径流程
- 者阴村战友纪念者阴山对越自卫还击作战30周年联谊会计划2
- GB-T 9251-2022 气瓶水压试验方法(高清版)
- 基于单片机的电子广告牌设计毕业设计论文
- 承插型盘扣式支模架专项施工方案
- 我国古代职业教育的发展
- 通用横版企业报价单模板
- 中国移动B-BOSS系统总体结构
评论
0/150
提交评论