C
CJ
Unregistered / Unconfirmed
GUEST, unregistred user!
Hello dear:
今天在看《Delphi4技术内幕》(Delphi4 Unleashed)一书的COM部分
由于对COM感冒,这是第四遍看COM了(不同的书),其中谈到了接口技术
的优点(Interface)。
的确是本好书,缺点更为明显——翻译质量不高(比CJ翻的好不少了)
也许是我理解能力的问题吧,始终不能理解接口其优越之处。
我理解本节(13.3.1,P433)的基本内容是要说明:接口为定义一组
对象提供了比传统OOP更好的方法。并且举例:
为一组机械风筝写程序,假定风筝有以下方法:
TKite = Class(TObject)
procedure Launch;
procedure Land;
procedure LetOutString;
procedure ReelInString;
procedure Swoop(Direction:TDirection);
procedure UnTangleString;
procedure FreeStringFromTelephoneWire;//faint
end;
由于风筝设计实现不同,我们可以定义一个接口,从而不提供任何实现:
IKite = Interface
procedure Launch;
procedure Land;
procedure LetOutString;
procedure ReelInString;
procedure Swoop(Direction:TDirection);
procedure UnTangleString;
procedure FreeStringFromTelephoneWire;//faint
end;
然后把它给程序员以实现,从而产生许多以相似方式运转且完全兼容的
对象,且表明:“接口是使“肤浅层次结构对象”文档化和进行设计的
简单方法”。
如果需要重用代码,可以使用中间类。
后来又开始阐述所谓“肤浅层次结构对象”的优越性:
TKite=Class;
TChineseKite=Class(TKite);
TVultureKite=Class(TChineseKite);//秃鹰风筝?
TTwoStringedVultureKite=Class(TVultureKite);
如果你负责实现TTwoStringedVultureKite类的Launch方法,你需要决
定<b><u>调用哪个版本的祖先方法,是TKite,TChineseKite,
TVultureKite还是TTwoStringedVultureKite?</b></u>,如果不进行有效
的猜测和实验,或看大量的源代码是无法知道的。
最后又强调了简洁易懂代码要比有趣的性能要重要和更容易学习。
问题:
1、以上黑体字部分,如何调用不同版本的祖先类的方法?请以本例,用
代码说明。
2、我还是不明白接口技术相对于OOP的优越处,我完全可以在祖先类中不
实现这些方法,而让子类继承并实现之,这不但灵活,而且提供了强大的
代码重用。请详细阐明接口技术在此类应用中的优点。
yours CJ
今天在看《Delphi4技术内幕》(Delphi4 Unleashed)一书的COM部分
由于对COM感冒,这是第四遍看COM了(不同的书),其中谈到了接口技术
的优点(Interface)。
的确是本好书,缺点更为明显——翻译质量不高(比CJ翻的好不少了)
也许是我理解能力的问题吧,始终不能理解接口其优越之处。
我理解本节(13.3.1,P433)的基本内容是要说明:接口为定义一组
对象提供了比传统OOP更好的方法。并且举例:
为一组机械风筝写程序,假定风筝有以下方法:
TKite = Class(TObject)
procedure Launch;
procedure Land;
procedure LetOutString;
procedure ReelInString;
procedure Swoop(Direction:TDirection);
procedure UnTangleString;
procedure FreeStringFromTelephoneWire;//faint
end;
由于风筝设计实现不同,我们可以定义一个接口,从而不提供任何实现:
IKite = Interface
procedure Launch;
procedure Land;
procedure LetOutString;
procedure ReelInString;
procedure Swoop(Direction:TDirection);
procedure UnTangleString;
procedure FreeStringFromTelephoneWire;//faint
end;
然后把它给程序员以实现,从而产生许多以相似方式运转且完全兼容的
对象,且表明:“接口是使“肤浅层次结构对象”文档化和进行设计的
简单方法”。
如果需要重用代码,可以使用中间类。
后来又开始阐述所谓“肤浅层次结构对象”的优越性:
TKite=Class;
TChineseKite=Class(TKite);
TVultureKite=Class(TChineseKite);//秃鹰风筝?
TTwoStringedVultureKite=Class(TVultureKite);
如果你负责实现TTwoStringedVultureKite类的Launch方法,你需要决
定<b><u>调用哪个版本的祖先方法,是TKite,TChineseKite,
TVultureKite还是TTwoStringedVultureKite?</b></u>,如果不进行有效
的猜测和实验,或看大量的源代码是无法知道的。
最后又强调了简洁易懂代码要比有趣的性能要重要和更容易学习。
问题:
1、以上黑体字部分,如何调用不同版本的祖先类的方法?请以本例,用
代码说明。
2、我还是不明白接口技术相对于OOP的优越处,我完全可以在祖先类中不
实现这些方法,而让子类继承并实现之,这不但灵活,而且提供了强大的
代码重用。请详细阐明接口技术在此类应用中的优点。
yours CJ