本文主要是介绍笔记:VCL的诞生和设计原理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
回顧第一章: 回到從前(framework的產生背景)
第二章 VCL的诞生和设计原理
2.1誕生
chuck jazdzewski,anders heislberg
目標:
16/32混合
單繼承
PME模型
運行/設計期行為
面向對象
開 放 的組件模型
消息分派
采用類/繼承的方式。
演化:接口 ,COM,MIDAS
2.2設計
2.3vcl對象的孕育
2.3.1 對象模型
TObject = class
constrctor Create;
destructor Destroy; virtual;
end;
constrctor Create;=>
tobject.AllocateMemory;
TObject.InitializeSpectialFields;
setupExecFrame;
TMemoryManager = record;
GetMem
FreeMem
ReallocMem
end;
2.3.2 從原始內存到對象成型
初始化
設定執行框架
2.4 對象服務
2.4.1 對象創建服務
newInstance
initInstance
框框范圍調整
2.4.2 對象識別服務
class function classname,classnameis,classparent,instancesize,inheritsfrom
2.4.3 對象信息服務
class function classinfo,methodaddress,methodname,fieldaddress,getinterface,getinterfaceentry,getinterfacetable,safecallexception
方法的種類:
virtual,overload的注意 :一旦使用了重載方法之后,編譯器便會以對象聲明的類型為綁定的依據。
動態方法與虛方法詳解,兩者的考 量 (類/繼承)
virtual:
dynamic:
2.5原始基本對象到提供服務的VCL對象
加上上層建筑
2.6VCL對象釋放服務
Destroy命名,為什么要定義成virtual,FreeandNil ,free
beforeDestruction:FreeInstance
FreeInstance: cleanupInstance;_FreeMem
cleanupInstance:根據vmt查找,清理已分配的內存(_FinalizeRecord=>_FinalizeArray)
_FinalizeArray:
case typeinfo.kind of
tkLstring:...
tkWString:...
tkVariant...
end
2.7VMT
結束語。
这篇关于笔记:VCL的诞生和设计原理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!