面象对象编程——内存管理的艺术
作者: 来源: 添加时间:2006-5-24 13:33:31五、对象程序员的编译器
与普通编译器一样,源码中的类、对象及成员名字符号与虚程序地址空间的对应是由编译器完成的。
但是对象程序员的编译器会做很多复杂的,以前要程序员自己处理的事情。
编译器把源码空间的名字修改成内部名字,然后为内部名字分配所需要的存储单元,并根据引用源码空间名字的上下文决定实际引用的地址。对象程序员往往在对象源码中定义许多同样名字但参数不同的方法。
对象程序员有时在对象源码中申明具有某些接口,然后用任意顺序编写其成员。编译器会重新按接口的要求组织成员的存储单元。
编译器还会把类型信息存储块附加给对象,以便在运行时也可以使用源码空间的名字。
六、对象程序员的虚拟机
对象程序员看不见计算机,在他看来,有一台逻辑上的机器,完成了程序运行时他写的程序需要一切支持。
虚拟机会为程序分配内存块,将程序里的数字复制到内存块中,将其中代表地址的数字修正为实际的存储单元编号,形成进程。
进程内的对象通常直接使用对象接口的地址或名字进行通信。
虚拟机能把同一块内存单元与不同进程的地址空间对应起来,进程间的对象可以使用这块内存单元进行通信。程序员称之为进程间通信IPC。
必要时虚拟机能够为不同进程内的对象提供通信代理,对象把访问要求传给代理,代理找到响应对象并完成调用和结果回送。
七、对象程序员的世界观
一切都是对象,对象就是存储块。
八、对象程序员的辩证法
封装、继承和多态是抽象公共接口与实现多样行为的对立统一。
通过内部名字、方法指针、虚方法表、基类成员拷贝等内存标记、操纵技巧实现这种对立统一。
九、对象程序员的口胃
甜。面象对象编程语言不过是些语法糖,如果能洞悉语法背后的内幕,那么吃起来就象酒心巧克力,如果迷惑于表面,那吃起来就象牛皮糖。
十、对象程序的诞生
面象对象编程诞生那天,面象对象程序员也就诞生了。
对象程序,只是含义为指令和操作数的数字序列,两者没有形式差别,于是编程必须小心翼翼,不要混肴。
从实践中,人们领悟到人为把指令和操作数分成不同的存储块是极为方便的,于是发明了运行时堆栈框架;为了减少重复节省存储器程序员们发明了子程序调用;为了解决复杂问题,程序员又发明了结构化编程和模块化。
然而对于涉及大量数据、模块的复杂动态系统,即使是模块化开发也是极为麻烦的,即使小心翼翼也难于应付。
于是人们醒悟:我们不关心程序的指令,那是静态的,暂时的,我们需要的是数据,那才是结果所在。
于封装被发明了:把一组数据及操纵方法放到一起,视为逻辑整体,通过接口访问。
新世界的大门打开了。
第 2 页,共 2 页 [1] [2]
站内搜索