• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi 模式编程 第二章总结

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本章重点摘要:


  • 对象模型机制
  • 动态绑定机制
  • 类型转换机制
  • 接口抽象机制

一、对象模型机制

     对象本质:
  • 相关代码和数据的组合,是包含相互之间有联系的过程集和数据的软件包
  • 可以视为变量,其类型为“类”
  • 类是对象的模板或模型,对象是类的实例
  • 对象是服务提供者

     对象模型的一些概念:
  • 对象 问题域中有明确意义的事物
  • 类 描述了有共同属性、行为、特征的对象
  • 属性 数据值
  • 行为 功能
  • 联系 对象间的物理或概念上的联系
  • 关联 类之间的联系
  • 聚合 A "has a" B 
  • 继承 A "is a" B
     对象模型图:

     对象之间的关系:
  • 继承关系--保持对象之间的差异性的同时共享对象的相似性。继承关系分两种:类对对象接口的实现,即接口继承;类对类的继承,即实现继承。
  • 合成关系--新的对象由已有的对象组合而成,即单纯复用既有的功能,而非重复运用其形式。合成关系分两种:聚合关系,即部分和整体(has-a),并可传递;组合关系,即包含关系。
     如何用继承?
  • 派生类是基类的一个特殊种类
  • 不要出想需要将派生类换成另一个类的派生类的情况
  • 派生类具有扩展基类的责任,不要覆盖掉或注销掉基类的责任
  • 最好不要从工具类继承。
     继承和合成的比较:


优点 缺点
继承 新的实现比较容易;修改或扩展继承而来的实现比较容易 破环封装,基类的实现细节暴露给派生类;基类改变影响所有派生类;从基类继承而来实现时静态的,无法运行期间改变,不够灵活
合成 新对象存取组成对象的唯一方法是通过组成接口;组成对象的内部细节不为新对象所见;支持包装;依赖较少;运行期进行,新对象可动态引用与组成对象类型相同的对象。 要管理较多的对象;

二、动态绑定机制

     方法绑定:建立方法调用和方法本体之间关联,分为早绑定,即程序执行前绑定;晚绑定,即执行时根据对象类型进行绑定。

     如何动态绑定的途径:
  • 虚方法(virtual),允许对不同类中的同名方法有不同的实现,并在运行期进行绑定。使用规则:1)用关键字virtual声明;2)使用覆盖(override)替换或扩展虚方法;3)被覆盖的虚方法参数列表不能更改。
  • 动态方法(dymatic),和虚方法基本一致。

     多态需要具备的条件:
  • 基类定义了一个或多个虚方法
  • 一个或多个派生类覆盖那些虚方法
  • 一个实例变量(或参数),其类型是基类,但实际上它引用的是某个派生类的一个实例。
三、类型转换机制

     类型:分为值类型,是一些简单的数据类型,如Char;引用类型,是一些复杂的类型,如类,对象接口。

     向上转型:
  •      向上转型是安全的,因为任何派生类都继承自基类,拥有基类的接口(方法)。
  •      能够面向接口编程。

     向下转型:
  • 是一种强制转换,须指明确切类型。
  • 在对象参数传递中,通过向上转型传递一个派生类对象参数,在得到该对象后,往往需要向下转型,恢复原来的面貌
  • 在对象容器(TObjectList)中取出一个对象时,需要向下转型,否则得到TObject类型。

四、抽象接口机制

     接口:规定”做什么“而不管”怎么做“,即它关心的是方法定义的参数,而不是具体实现。它分为宽接口,即delphi的类(通常是抽象类)和对象接口所声明的方法;窄接口,即对象接口,依附于类,但是不能直接实例化,也不能自己实现方法。


     抽象类:为派生类定义公共接口,把方法的实现延迟到派生类中。不能实例化,用abstract 限定virtual,dynamic,或override。

     抽象类的使用原则:
  • 拥有尽可能多的公共代码。
  • 拥有尽可能少的数据,以区别具体类。

     接口对象的使用;
  • 通常继承一个已有的接口来声明一个新接口。
  • 接口继承自IInterface接口

相同点 不同点
抽象类 不能实例化;提供抽象方法 一个类只能继承一个抽象类;派生类可以部分实现;
对象接口 不能实例化;提供抽象方法 一个类可以继承多个接口;所有方法都是public;实现接口的类需要实现接口所有的方法;



     对接口而不是对实现编程:根据抽象类或对象接口中定义的接口来操纵对象。对象的类(class)定义了对象是怎样实现的,同时也定义了对象的内部状态和操作实现,而对象的类型只与它的接口相关。在delhi中,类既指对象的类型又制定了对象的实现,但对象接口仅指定对象的类型未指定对象的实现。


转载于:https://my.oschina.net/suda/blog/137640


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【Algorithm】一般约束优化问题——PHR算法及其Matlab实现发布时间:2022-07-18
下一篇:
Matlab矩阵处理之一发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap