现在的位置: 首页 > 综合 > 正文

《Delphi高手突破》学习笔记(一)

2013年10月02日 ⁄ 综合 ⁄ 共 1351字 ⁄ 字号 评论关闭

  《Delphi高手突破》据说挺不错,他用面向对象的观点描述了Delphi中的类和VCL架构。

  第二章、面向对象编程理论基础

设计优良的类的某些共同特征:具有状态信息,接口简单、明了,易用。在OP的类中,有四种访问级别:private、protected、public、published。其中public中的成员可以被所有客户代码直接访问;published中的成员和public差不多,不过可以被Object Inspector显示;private成员只有类本身和友员可以访问;protected和private类似,不过可以被派生类访问。

  单元级别的封装:(1)在一个Unit中声明的多个类互为友元类(2)在意个Unit的interface部分声明的变量为全局变量,其他的Unit可见(3)在意个Unit的implementation部分声明的变量为该Unit的全局变量,只在该Unit可见(4)每个Unit可有单独的初始化段(initialization)和反初始化段(finalization)。

inteface部分是单元文件作为一个模块的对外接口,implementation对外是隐藏的。

封装的难点是如何设计接口,必须保证接口是功能的全集,尽量让接口是最小冗余的,要保证接口是稳定的即接口和实现分离

只支持封装而不支持继承的语言只能称为‘基于对象’(Object-Based)而非‘面向对象’(Object-Oriented)。

多态性是允许用户将父对象设置成为一个或更多的它的子对象相等的技术,赋值之后,基类对象就可以根据当前赋值给他的派生类对象的特性以不同的方式运作。(没看懂...)

虚方法(Virtual Method)覆盖(Override)重载(Overload)

参数不同的多个同名函数,确定函数调用入口地址的方法称为早绑定

当派生类重定义了基类的虚方法后,由于重定义的派生类的方法地址无法给出,其调用地址在编译期间片无法确定,故基类指针必须根据赋给他的不同的派生类指针,在运行期动态地调用属于派生类的虚方法。这样的确定函数调用地址的方法称为晚绑定。Bruce Eckel:“不要犯傻,如果他不是晚绑定,他就不是多态”

多态通过虚方法实现,而虚方法通过动态绑定(晚绑定)实现。

凡是含有abstract方法的类被称为‘抽象类’

当创建类对象后,编译器会在该对象的内存空间的首4个字节安插一个指针,该指针所指向的地址称为VMT(Virtual Method Table,虚方法表),该表存放了类的所有虚方法的入口地址。VMT与C++、COM的vtable兼容。

总结:通过这一章的学习我明白了Delphi中(也可以说OP中)类的实现,类的封装、继承和多态。明确了一些面向对象的概念,以前我认为同名函数不同参数也属于多态,如类的构造函数,可以设计多个含有不同形参的,在创建对象的时候可以根据构造函数的不同创建不同类型的对象,看样我我理解错了。

  第三章、异常及错误处理

raise可以抛出一个异常对象:raise Exception.Create('This is a test!');

Chalie Calverts:“在似乎有用的时候,就应该使用try...except快。但是要试着让自己对这种技术的热情不要太过分。”

抱歉!评论已关闭.