手机版

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

发布时间:2024-10-23   来源:未知    
字号:

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

(对象本质论)

引言

提起面向对象的概念, 我想对于每位程序员来说,对他的理解各有独到见解,有的深入肌理,有的剑走偏锋。但是无论如何, 我想对于下面的几个概念性的问题应该值得我们去重视:类,对象,继承,封装,多态。正是由于这些元素构成了我们面向对象设计的基本逻辑。 理解面向对象好的方法就是用实际生活来类比对象世界,下面就以人类的角度分析来说明:计算机世界中的对象,同时也是用对象的逻辑反思人类。

对象的衍生

对象和人 ,两个世界,一样的情怀。

对象就好比我们现实生活中的人类,生则入世,死则离世。 首先我们看下人类的出生:每个人都要经过婴儿落世,成为一个现实生活的个体,但是在这个过程中,熟不知十月怀胎正是个体衍生的复杂演变过程,母亲为胎儿提供了良好的环境及其养分。在这个过程就是正正的一次生物化构造。而在我们程序设计中,对象衍生也是一次

构造过程,先手在内存中分配存储空间;然后初始化其附加成员,就像给人取名字一样,最后调用构造函数初始化。但是在其附加成员过程中,就好像人出生落地没有任何物品一样,在其构建成功后才赋给了一样。这些操作可能在随后操作完成,通过属性或者方法来给其必要的信息。对象的衍生说白了就是,构建对象的基本初始化构造过程。

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

人与人直接交流通过语言交流,当人一出生,便就开始了跟这个世界进行沟通,形成相互关系,融入到社会群体中去。在对象世界里,通过也可以将对象与对象联系起来,对象之间的交互性操作方式,我们会在”设计模式”中讲到。

对象的生存之道

对象生存环境是CLR,而人类的生存环境是我们整个社会群体。CLR提供了对象赖以生存的托管环境,制定了一些规则,我们称为“语法”。例如:多态,继承,数据类型,垃圾回收等。而社会提供了一些约束我们人类活动的秩序,比如 法律,交通规则,道德等。具体的实施用法就是我们所谓的“语义”。

人类社会应该是一个体系结构,也是分层的。上层建筑代表了思想与政治,通过社会契约和法律规范为经济基础,对象世界里,我们称为“接口”在面向接口编程中,其实是以接口方式来抽象变化,从而形成一种体系。

关于继承,在人类社会中,一般继承是发生在具有血缘关系的族群中,儿子继承父亲,包括基因,财产,姓,但是不意味着继承所有,比如父亲的隐私。其实在软件设计中的继承,目的就是解决我们代码冗余,提高复用性。

而关于多态,人的世界里,我们常常在不同的环境中表现出不同的行为或者角色,并且遵循不同的规则。例如: 我们在学校,我们是学生,在公交车上我们是乘客,在家里我们是作为父母的子女。同样的你在学校你作为学生,你可以打篮球,但是在公交车上 你作为乘客,是不可以打篮球的。所以身份不同,带来的差异也不同。

对象的消亡

对象和人有生必然有死。而且世界上没有长生不老药。在对象的世界里,它的生命由GC来控制。而在人的世界里,我们把GC叫做什么?---自然规律。进入死循环的对象,我们称为违反规则的。必然逃脱不了被KILL的命运。在程序中体现就是报错。其实GC控制着托管所有的对象,当内存回收执行时,GC检查托管堆中存在不在使用的对象,并执行回收执行。不被引用程序使用的对象,指的是对象没有任何引用。一般情况下,我们对于托管代码都是有GC来完成,在完成之前,首先由系统管理自动调用对象释放工作,也就是对象脱离作用域系统自动执行析构函数,最后交给垃圾回收器来完成最后的清理工作,腾出更大的有效内存空间。因此我们在程序设计中,都不显式的调用析构函数,这样就避免了GC调用时候,会先检查系统管理中的资源释放。这样就要执行两次,势必影响执行效率。

结论

其实程序世界和人类世界中有很多相似的地方,我们用这种方式来诠释我们的两个世界的主角,对象和人,用演化推进的方式描述面向对象的生死过程,应该是一种相互借鉴的方法。

面向对象编程的理解与分析.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)