COM实用入门教程第一讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
并向调用者通知“系统拒绝继续验证用户!”
问题描述
6、组件B必须包含基本的界面布局,界面元素有“用户名文本”,“用户名输入 框”,“密码文本”,“密码输入框”,“登录按钮”。其中“密码输入框”在 接收字符输入时,不能显示明文字符。 7、调用者可调用组件B的方法,修改“用户名文本”,“密码文本”以及“登录 按钮”上面的文字。 8、调用者可读取或设置组件B是否要对用户名与密码做非空判断。如果需要做非 空判断,则在点击“登录按钮”时,遇到空的用户名或空的密码就弹出提示框 “用户名不能为空”或“密码不能为空”,然后不继续验证用户。 9、当点击“登录按钮”时,若组件B不需要做非空判断,则直接通知调用者要验 证的用户名与密码;若组件B需要做非空判断,且用户名与密码不为空时,则也通 知调用者要验证的用户名与密码。
这一讲,主要讲解如下要点:
• 一、现实中的组件与接口; • 二、把现实中的思想融入到软件中; • 三、C++程序中的组件与接口; • 四、COM组件与COM接口; • 五、QueryInterface函数,HRESULT类型,IID类型,
数据类型转换。
C++程序中的组件与接口
• 接口,是一种约定,一种协议。它是抽象的,指明了 具体含义,但却没有实现这个定义。 我们看一下C++的纯虚函数:求最大公约数,virtual int GreatestCommonDivisor(int a, int b) = 0; //求a 与b的最大公约数。
组件与组件,组件与其它设备的交互工作是通过 接口进行的。 CPU跟主板之间有固定的接口,内存条 跟主板之间也有固定的接口。如果CPU要更换,被更 换的CPU必须与旧的CPU拥有相同的使用接口。
现实中的组件与接口
* 主板不直接认识CPU,只认识CPU的接口。主 板也不直接认识内存条,只认识内存条的接口。 * 所以接口的约定是很重要的。在组件的开发之 前,必须先约定组件与外界交互的接口协议。 * 接口协议只要确定后,往往是不能再改变的,比 如5号电池不能再做得大一点或再小一点,然后去 替换旧的5号电池。
COM实用入门教程 第一讲
COM -组件对象模型
• COM是微软组件对象模型的简称。由于COM具有二进制代码共享的 特性,所以它具备了高可开发性、高度可维护性和高度的可移植性( 跨开发语言),以至于在Windows上面的诸多应用软件采用了COM 来做整体的架构。比如微软的DirectX等。COM虽然流行于20002004年之间,由于它的普及面之广,应用软件种类之繁多再加上 Windows对其默认支持很好,开发出来的软件无需依赖其他的开发包 ,所以被很多软件公司采用至今。作为一个VC++程序员,是否系统 掌握COM的用法成为是否合格的重要的衡量指标之一。
现实中的组件与接口
采用组件与接口的思想来开发设备,体现了社会 分工的一个现象,也是社会生产力发展的必然过程, 做CPU的厂商只管做CPU,不用告诉主板关于CPU本 身的实现细节,也不用去了解主板的实现细节。
这一讲,主要讲解如下要点:
• 一、现实中的组件与接口; • 二、把现实中的思想融入到软件中; • 三、C++程序中的组件与接口; • 四、COM组件与COM接口; • 五、QueryInterface函数,HRESULT类型,IID类型,
• 下面我简单地讲解COM组件的三个优点。
COM组件的优点
• 采用COM组件架构我们的软件,会使我们更方便地进 行模块划分,而且各模块独立性高,耦合度低,从而 更方便地进行开发任务的分工。(开发性)
• 采用COM组件架构我们的软件,会使我们更方便地维 护、升级软件,因为我们可以很方便地直接用新模块 替换旧模块,而不影响软件的其它功能。(维护性)
本讲要点:
• 一、现实中的组件与接口; • 二、把现实中的思想融入到软件中; • 三、C++程序中的组件与接口; • 四、COM组件与COM接口; • 五、QueryInterface函数,HRESULT类型,IID类型,
数据类型转换。
现实中的组件与接口
组件的定义:含有可独立性,可通用性,可组合性,可替换性的 事物,我们把它称作组件。
1、该套组件包含组件A与组件B两个组件。 2、组件A存储了一个用户名以及一个与之对应的密码。 3、调用者可调用组件A的方法来验证调用者所传入的用户名与密码是否正确。 4、调用者可设置或读取组件A所允许的用户验证连续失败的次数。 5、验证连续失败超过次数后,若再接收调用者所传入的验证请求,组件A拒绝继续验证,
COM组件的优点
• 采用COM组件架构我们的软件,可以使我们已编写好 的功能模块可以很方便地移植到其它平台,如从C++ 的MFC平台移植到C#的WinForm平台。因为COM组 件是跨应用的,可以被C++调用也可以被C#调用。 (移植性)
问题描述
• 某软件公司需要设计一套用户登录组件。 对该套组件要求不高,不要求数据的加密解密,不要求数据库的读写,不要求客户端 与服务器进行数据通讯与验证,不要求验证码的生成。 具体要求如下:
现实世界中存在各种各样的具备组件概念的设备。如:电脑主机 内的设备: CPU、内存条、硬盘、光驱。还比如:5号电池、7号电池、 插座。
为什么说这些设备具备组件概念呢?因为这些设备都具有可独立 性,可通用性,可组合性,可替换性。
现实中的组件与接口
接口的定义:是组件与组件之间,组件与外部事 物之间进行交互的协议。
数据类型转换。
把现实中的思想融入到软件中
面向对象思想来源于大自然,让我们面向着是一 个一个的对象,不是面向一个一个的过程(面向过程 思想)。
黑格尔说“存在的就是合理的”,大自然存在各 种各样的对象,每类对象具有自己的特性,对象存在 继承关系。这些存在是合理的。最后ห้องสมุดไป่ตู้这些合理的思 想演变成面向对象思想,所以面向对象思想是合理的。
把现实中的思想融入到软件中
社会的发展促使人类在劳动上的分工,分工又以约定的接口协 议来交互。社会的发展产生了这种“组件-接口”的开发思想,这种 思想又是长期没有被替换过的思想,这是一种好的思想,合理的思想。
若我们以组件方式架构我们的软件。我们软件中的组件将具有 可独立性,可通用性,可组合性,可替换性;我们的软件也将具有更 好的灵活性,可拓展性和可维护性。我们软件的开发过程也会变得更 加的简单,更好的分工,更加的规范。
问题描述
6、组件B必须包含基本的界面布局,界面元素有“用户名文本”,“用户名输入 框”,“密码文本”,“密码输入框”,“登录按钮”。其中“密码输入框”在 接收字符输入时,不能显示明文字符。 7、调用者可调用组件B的方法,修改“用户名文本”,“密码文本”以及“登录 按钮”上面的文字。 8、调用者可读取或设置组件B是否要对用户名与密码做非空判断。如果需要做非 空判断,则在点击“登录按钮”时,遇到空的用户名或空的密码就弹出提示框 “用户名不能为空”或“密码不能为空”,然后不继续验证用户。 9、当点击“登录按钮”时,若组件B不需要做非空判断,则直接通知调用者要验 证的用户名与密码;若组件B需要做非空判断,且用户名与密码不为空时,则也通 知调用者要验证的用户名与密码。
这一讲,主要讲解如下要点:
• 一、现实中的组件与接口; • 二、把现实中的思想融入到软件中; • 三、C++程序中的组件与接口; • 四、COM组件与COM接口; • 五、QueryInterface函数,HRESULT类型,IID类型,
数据类型转换。
C++程序中的组件与接口
• 接口,是一种约定,一种协议。它是抽象的,指明了 具体含义,但却没有实现这个定义。 我们看一下C++的纯虚函数:求最大公约数,virtual int GreatestCommonDivisor(int a, int b) = 0; //求a 与b的最大公约数。
组件与组件,组件与其它设备的交互工作是通过 接口进行的。 CPU跟主板之间有固定的接口,内存条 跟主板之间也有固定的接口。如果CPU要更换,被更 换的CPU必须与旧的CPU拥有相同的使用接口。
现实中的组件与接口
* 主板不直接认识CPU,只认识CPU的接口。主 板也不直接认识内存条,只认识内存条的接口。 * 所以接口的约定是很重要的。在组件的开发之 前,必须先约定组件与外界交互的接口协议。 * 接口协议只要确定后,往往是不能再改变的,比 如5号电池不能再做得大一点或再小一点,然后去 替换旧的5号电池。
COM实用入门教程 第一讲
COM -组件对象模型
• COM是微软组件对象模型的简称。由于COM具有二进制代码共享的 特性,所以它具备了高可开发性、高度可维护性和高度的可移植性( 跨开发语言),以至于在Windows上面的诸多应用软件采用了COM 来做整体的架构。比如微软的DirectX等。COM虽然流行于20002004年之间,由于它的普及面之广,应用软件种类之繁多再加上 Windows对其默认支持很好,开发出来的软件无需依赖其他的开发包 ,所以被很多软件公司采用至今。作为一个VC++程序员,是否系统 掌握COM的用法成为是否合格的重要的衡量指标之一。
现实中的组件与接口
采用组件与接口的思想来开发设备,体现了社会 分工的一个现象,也是社会生产力发展的必然过程, 做CPU的厂商只管做CPU,不用告诉主板关于CPU本 身的实现细节,也不用去了解主板的实现细节。
这一讲,主要讲解如下要点:
• 一、现实中的组件与接口; • 二、把现实中的思想融入到软件中; • 三、C++程序中的组件与接口; • 四、COM组件与COM接口; • 五、QueryInterface函数,HRESULT类型,IID类型,
• 下面我简单地讲解COM组件的三个优点。
COM组件的优点
• 采用COM组件架构我们的软件,会使我们更方便地进 行模块划分,而且各模块独立性高,耦合度低,从而 更方便地进行开发任务的分工。(开发性)
• 采用COM组件架构我们的软件,会使我们更方便地维 护、升级软件,因为我们可以很方便地直接用新模块 替换旧模块,而不影响软件的其它功能。(维护性)
本讲要点:
• 一、现实中的组件与接口; • 二、把现实中的思想融入到软件中; • 三、C++程序中的组件与接口; • 四、COM组件与COM接口; • 五、QueryInterface函数,HRESULT类型,IID类型,
数据类型转换。
现实中的组件与接口
组件的定义:含有可独立性,可通用性,可组合性,可替换性的 事物,我们把它称作组件。
1、该套组件包含组件A与组件B两个组件。 2、组件A存储了一个用户名以及一个与之对应的密码。 3、调用者可调用组件A的方法来验证调用者所传入的用户名与密码是否正确。 4、调用者可设置或读取组件A所允许的用户验证连续失败的次数。 5、验证连续失败超过次数后,若再接收调用者所传入的验证请求,组件A拒绝继续验证,
COM组件的优点
• 采用COM组件架构我们的软件,可以使我们已编写好 的功能模块可以很方便地移植到其它平台,如从C++ 的MFC平台移植到C#的WinForm平台。因为COM组 件是跨应用的,可以被C++调用也可以被C#调用。 (移植性)
问题描述
• 某软件公司需要设计一套用户登录组件。 对该套组件要求不高,不要求数据的加密解密,不要求数据库的读写,不要求客户端 与服务器进行数据通讯与验证,不要求验证码的生成。 具体要求如下:
现实世界中存在各种各样的具备组件概念的设备。如:电脑主机 内的设备: CPU、内存条、硬盘、光驱。还比如:5号电池、7号电池、 插座。
为什么说这些设备具备组件概念呢?因为这些设备都具有可独立 性,可通用性,可组合性,可替换性。
现实中的组件与接口
接口的定义:是组件与组件之间,组件与外部事 物之间进行交互的协议。
数据类型转换。
把现实中的思想融入到软件中
面向对象思想来源于大自然,让我们面向着是一 个一个的对象,不是面向一个一个的过程(面向过程 思想)。
黑格尔说“存在的就是合理的”,大自然存在各 种各样的对象,每类对象具有自己的特性,对象存在 继承关系。这些存在是合理的。最后ห้องสมุดไป่ตู้这些合理的思 想演变成面向对象思想,所以面向对象思想是合理的。
把现实中的思想融入到软件中
社会的发展促使人类在劳动上的分工,分工又以约定的接口协 议来交互。社会的发展产生了这种“组件-接口”的开发思想,这种 思想又是长期没有被替换过的思想,这是一种好的思想,合理的思想。
若我们以组件方式架构我们的软件。我们软件中的组件将具有 可独立性,可通用性,可组合性,可替换性;我们的软件也将具有更 好的灵活性,可拓展性和可维护性。我们软件的开发过程也会变得更 加的简单,更好的分工,更加的规范。