面向对象编程的理解与分析.doc

面向对象编程的理解与分析.doc

ID:50849214

大小:38.45 KB

页数:4页

时间:2020-03-15

面向对象编程的理解与分析.doc_第1页
面向对象编程的理解与分析.doc_第2页
面向对象编程的理解与分析.doc_第3页
面向对象编程的理解与分析.doc_第4页
资源描述:

《面向对象编程的理解与分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、面向对象编程的理解与分析(对象本质论)引言提起面向对象的概念,我想对于每位程序员来说,对他的理解各有独到见解,有的深入肌理,有的剑走偏锋。但是无论如何,我想对于下面的几个概念性的问题应该值得我们去重视:类,对象,继承,封装,多态。正是由于这些元素构成了我们面向对象设计的基本逻辑。理解面向对象好的方法就是用实际生活来类比对象世界,下面就以人类的角度分析来说明:计算机世界中的对象,同时也是用对象的逻辑反思人类。对象的衍生对象和人,两个世界,一样的情怀。对象就好比我们现实生活中的人类,生则入世,死则离世。首先我们看下人类的出生:每个人都要经过婴儿落世,成为一个现

2、实生活的个体,但是在这个过程中,熟不知十月怀胎正是个体衍生的复杂演变过程,母亲为胎儿提供了良好的环境及其养分。在这个过程就是正正的一次生物化构造。而在我们程序设计中,对象衍生也是一次构造过程,先手在内存中分配存储空间;然后初始化其附加成员,就像给人取名字一样,最后调用构造函数初始化。但是在其附加成员过程中,就好像人出生落地没有任何物品一样,在其构建成功后才赋给了一样。这些操作可能在随后操作完成,通过属性或者方法来给其必要的信息。对象的衍生说白了就是,构建对象的基本初始化构造过程。我们个体人的存在也存在工种之分,在对象世界里也一样,我们称之为数据类型,但是我

3、们人类在所形成的规则下农民在田地里务农,工人在工厂生产,对象也可以进行标准规则分类,值类型与引用类型,而在程序运行过程中,存储内存的位置不一样,值类型存储在线程的堆栈上,而引用类型位于托管堆上一样。正如农民可以进城务工,工人可以返乡务农,我们把这样的过程在程序中体现为装箱与拆箱(BoxingandUBoxing),在人类世界中,每个人都有姓名,年龄,籍贯等描述自己的信息,同时每个人都有不同的行为操作这些信息。比如我们出生后,就有父母给我们起好了名字,但是在现实生活中,根据需要,我们每个人都有可以更改自己的名字的权利。在程序世界里,我们把这样的更改行为叫做方

4、法,名字叫做属性,我们可以通过方法来改变我们对象的属性。人与人直接交流通过语言交流,当人一出生,便就开始了跟这个世界进行沟通,形成相互关系,融入到社会群体中去。在对象世界里,通过也可以将对象与对象联系起来,对象之间的交互性操作方式,我们会在”设计模式”中讲到。对象的生存之道对象生存环境是CLR,而人类的生存环境是我们整个社会群体。CLR提供了对象赖以生存的托管环境,制定了一些规则,我们称为“语法”。例如:多态,继承,数据类型,垃圾回收等。而社会提供了一些约束我们人类活动的秩序,比如法律,交通规则,道德等。具体的实施用法就是我们所谓的“语义”。人类社会应该是

5、一个体系结构,也是分层的。上层建筑代表了思想与政治,通过社会契约和法律规范为经济基础,对象世界里,我们称为“接口”在面向接口编程中,其实是以接口方式来抽象变化,从而形成一种体系。关于继承,在人类社会中,一般继承是发生在具有血缘关系的族群中,儿子继承父亲,包括基因,财产,姓,但是不意味着继承所有,比如父亲的隐私。其实在软件设计中的继承,目的就是解决我们代码冗余,提高复用性。而关于多态,人的世界里,我们常常在不同的环境中表现出不同的行为或者角色,并且遵循不同的规则。例如:我们在学校,我们是学生,在公交车上我们是乘客,在家里我们是作为父母的子女。同样的你在学校你

6、作为学生,你可以打篮球,但是在公交车上你作为乘客,是不可以打篮球的。所以身份不同,带来的差异也不同。对象的消亡对象和人有生必然有死。而且世界上没有长生不老药。在对象的世界里,它的生命由GC来控制。而在人的世界里,我们把GC叫做什么?---自然规律。进入死循环的对象,我们称为违反规则的。必然逃脱不了被KILL的命运。在程序中体现就是报错。其实GC控制着托管所有的对象,当内存回收执行时,GC检查托管堆中存在不在使用的对象,并执行回收执行。不被引用程序使用的对象,指的是对象没有任何引用。一般情况下,我们对于托管代码都是有GC来完成,在完成之前,首先由系统管理自动

7、调用对象释放工作,也就是对象脱离作用域系统自动执行析构函数,最后交给垃圾回收器来完成最后的清理工作,腾出更大的有效内存空间。因此我们在程序设计中,都不显式的调用析构函数,这样就避免了GC调用时候,会先检查系统管理中的资源释放。这样就要执行两次,势必影响执行效率。结论其实程序世界和人类世界中有很多相似的地方,我们用这种方式来诠释我们的两个世界的主角,对象和人,用演化推进的方式描述面向对象的生死过程,应该是一种相互借鉴的方法。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。