- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单元目标 本单元结束后,你将能够 理解异常机制的用法 理解一场机制的原理 理解消息机制的实现原理 理解事件的实现原理 异常机制 SEH:Structured Exception Handling 异常和断言 Exception Assert 区别:是否保护环境现场 异常的意义 异常是在代码运行过程中,发生了没有预计到的错误 在一定意义上说,程序员无法预计到所有可能的错误 处理异常的场景: 如果没有发生错误,怎么办 try .. finally .. end 如果发生错误了,怎么办 try .. except .. end 如果要同时处理,怎么办? try try .. except .. end.. finally .. end 消息 Message是什么? 一个抽象的概念 双方约定的信息 任意类型的记录结构 Delphi中使用 var Message 表示所有类型地址 procedure Dispatch(var Message); virtual; procedure DefaultHandler(var Message); virtual; message关键字的含义 消息的意义 消息驱动 Windows消息 鼠标 键盘 系统通知 自定义消息 系统解耦 基于隐含约定编程 对比:基于契约编程 事件(Event) 本质 回调函数 函数类型声明 TNotifyEvent = procedure(Sender: TObject) of object; of object 表示类函数,表示隐含着一个指向对象的参数Self 面向事件编程 一种扩展方式 VCL的消息处理扩展 对比:模板方法模式 基于派生扩展 vs. 基于事件扩展 虚拟方法和动态方法在这里的应用 区分事件的扩展频度 广泛应用:.NET框架 一种编程思想 一个简单的预置钩子HOOK 业务分离 讨论 面向事件编程 vs. 面向对象编程 单元4:接口机制 单元目标 本单元结束后,你将能够 了解接口的设计原则 理解接口的实现机制 掌握接口的内存结构 理解接口的生存期管理 接口 vs. 对象 假设对象是一个人的话 不同的接口,代表这个人所代表的不同“角色” 假设有妻子,那他可以提供一个IHusband接口 假设有儿子,那他可以提供一个IFather接口 他有父母,那他必然有一个ISon接口 接口是对象在某一方面的能力 一个对象可以同时支持很多接口 正如一个人同时存在多种角色一样 思考:面向接口编程和面向对象编程思想上的差异 接口数据模型 VMT 数据1 数据2 接口1 数据3 数据4 接口2 ... 方法1 方法2 方法3 方法4 ... 基类 派生类 VTable 静态方法 虚拟方法 动态方法 类方法 跳转代码 接口定义的本质 方法的寻址方式 最关键的是地址的偏移 练习 思考 如何从对象指针获取接口指针? 阅读TObject代码 关注虚拟方法表中的vmtIntfTable 关注GetInterfaceEntry和GetInterfaceTable PInterfaceTable类型 关键阅读 InitInstance 深入思考: 如何从接口指针获取对象指针? 接口生命周期 接口的生命周期依赖与实现接口的对象的生命周期 Delphi实现的默认方式 源自COM的思想 接口是生命周期自管理的 自管理原理 引用计数的概念RefCount _AddRef方法 _Release方法 TInterfacedObject中的示例实现 编译器帮忙: 自动调用_AddRef和Release 思考:接口和对象混用的结果 oObj := TInterfacedObject.Create; oIntf := oObj; oIntf := nil; oObj 还可以访问吗? 推荐用法: 不使用oObj变量 不使用oIntf变量 一种解决混乱的可能的方法 消除引用计数 放弃生命周期自管理 思考:代码如何实现? 接口的运行期信息 {$M+} IntfInfo.pas单元 TypeInfo(IMyIntf) 应用 SOAP 总结 基础数据类型 三种字符串的存储结构 类和对象 存储结构 异常 堆栈结构 接口 存储结构 图书参考 文字信息 最好的学习资源 VCL 源代码 购书 中关村图书城 论坛 谢谢 * 课程名称 Delphi 重要语法特征 课程模块目标 经过本课程模块的培训,学员能够 理解基本数据类型 掌握基于对象编程 了解异常消息事件 掌握基于接口编程 介绍: Delphi的语法发展史 单元目标 本单元结束后,你将能够 了解语法的变化 Delphi语言--与时俱进 Pascal / OP---Turbo C Object Pascal / OO---Visual
文档评论(0)