- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC编程的OOP思想;MFC类库介绍
MFC的OOP思想;MFC是VC提供的,封装有windows 系统API的类库
Windows系统内核源代码不开放,其功能通过大量(数以万计)的系统API来提供。这些API浩若烟海,直接使用非常困难。因此微软在其开发工具VC中,额外提供了一套以面向对象编程思想组织起来的类库,实现了对大部分核心系统API的封装,并提供合理的编程框架,以方便用户开发自己的应用程序。;;6;我们所说的MFC编程,并不是像C/C++语言那样,从main来写一个“程序”。而是利用MFC类库中提供的“基本”框架,“附加”我们自己要实现的功能,构成一个程序。
比如,在上一节课中的对话框程序中,我们只是写了一句代码,其他的程序打开、关闭、显示、控件效果、消息响应和传递。。。都是程序框架自己完成的。
——是怎么实现的呢?
;一战结束前,一个叫路德维希 维特根斯坦 的人在战俘营里写了一本《逻辑哲学论》,提出:
世界可以分解为事实;
事实是由原子事实组成的;
一个原子事实是多个对象的组合;
对象是简单的;
对象形成了世界的基础。
50年后,面向对象编程,真的成了软件世界的基础。
;2010年以后,OOP已经不怎么时髦了,虽然所有编程语言都会注明,“本人支持OOP。。。”
2013年,CMU计算机系放弃了基础课程中的OOP课程,理由是,OOP思想已经不再适用于云计算时代
云计算时代,通过大量并行,用蚂蚁搬家方式解决计算问题,每个计算单元都很小,因而是过程式的,大量计算单元并行运行,产生规模效应。
OOP反过程,同时反并行,因此并不适用于云计算。
/question整个世界是由具有自治能力的各种对象组成的,任何对象都具有某种特征和行为。
计算机是对象,有颜色、重量、品牌,可以开机、关机、播放音乐
猫是对象,有年龄、重量、品种,可以吃、喝、爬树
面向对象(C++)和面向过程(C)的最核心区别:
面向过程:类型、特征、行为是独立的。
面向对象:类型包含特征和行为。
;
封装: 特征与行为的一体化
继承:由现有对象构成新对象
多态:不同对象的同一行为
产生不同效果
;Class IamAFather
{ public:
void GetMyName(); //我的名字是可以公开的
void GetMyGoodDeeds(); //我做的好事是要宣传的
protected:
void GetMyAssert(); //我的财产需要保护,只有我 //和我的儿女能使用
private:
void GetMyGuilty(); //罪过是要保密的,
void ThinkItOver(); //心理活动只有自己知道
};;只让可信的对象知道自己的“底细”,对不可信的对象进行信息隐藏。
父亲愿意公开自己的good deeds,却只对自己的儿女公开财产。
对象暴露简单的接口就可以实现复杂的功能。
父亲经过一系列复杂的心理活动(调用了许多private函数),最后决定向神父忏悔自己的罪过。而对于神父来说,只能看到一个函数 Repent2Priest()
避免某一模块的行为对同一系统中其他模块 产生影响。——猫的颜色和计算机的颜色,是不同的。
;继承使得某类的对象可以使用另外一类对象的特征和方法,表达了两个类“一般与特殊”的关系。
白马和马,白马是一种特殊的马,具有马的一般属性,又具有其特殊属性“白色”,因此可以从马中继承。
继承可以提高程序的可复用性。因此是OOP商业代码的核心价值。
一个企业,往往把底层代码写成一个类库,新员工加入后,能够迅速使用类库中的代码,通过继承方式扩展功能,产生价值。
当新员工变成“老员工”,准备跳槽的时候,发现自己手里只有一堆“继承后的代码”,离开公司的类库,啥事都做不了。;不同的对象,调用同样的方法,在不同环境下产生不同的动作。——实现接口重用
编译时多态——重载基类的非虚函数、运算符重载
运行时多态——重载基类的虚函数
由同一个基类派生得到的多个子类,在重载基类的虚函数后,就能够实现运行时的多态性。
;继承表达 “一般与特殊”的关系。
组合表达 “整体与部分”的关系——直接在类B中声明A的对象。
例子:有两个类,头(class head)和耳朵(class ear)耳朵能听到声音ear.Listen() ,现在要求头也能听到声音。
继承法: class head : public ear {};
组合法: class head{ ear m_ear; }
反继承: class ear : public head{};;17;MFC的封装,就是把独立的W
文档评论(0)