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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象编程的理解与分析

面向对象编程的理解与分析 (对象本质论) 引言 提起面向对象的概念, 我想对于每位程序员来说,对他的理解各有独到见解,有的深入肌理,有的剑走偏锋。但是无论如何, 我想对于下面的几个概念性的问题应该值得我们去重视:类,对象,继承,封装,多态。正是由于这些元素构成了我们面向对象设计的基本逻辑。 理解面向对象好的方法就是用实际生活来类比对象世界,下面就以人类的角度分析来说明:计算机世界中的对象,同时也是用对象的逻辑反思人类。 对象的衍生 对象和人 ,两个世界,一样的情怀。 对象就好比我们现实生活中的人类,生则入世,死则离世。 首先我们看下人类的出生:每个人都要经过婴儿落世,成为一个现实生活的个体,但是在这个过程中,熟不知十月怀胎正是个体衍生的复杂演变过程,母亲为胎儿提供了良好的环境及其养分。在这个过程就是正正的一次生物化构造。而在我们程序设计中,对象衍生也是一次构造过程,先手在内存中分配存储空间;然后初始化其附加成员,就像给人取名字一样,最后调用构造函数初始化。但是在其附加成员过程中,就好像人出生落地没有任何物品一样,在其构建成功后才赋给了一样。这些操作可能在随后操作完成,通过属性或者方法来给其必要的信息。对象的衍生说白了就是,构建对象的基本初始化构造过程。 我们个体人的存在也存在工种之分,在对象世界里也一样,我们称之为数据类型,但是我们人类在所形成的规则下农民在田地里务农,工人在工厂生产,对象也可以进行标准规则分类,值类型与引用类型,而在程序运行过程中,存储内存的位置不一样,值类型存储在线程的堆栈上,而引用类型位于托管堆上一样。正如农民可以进城务工,工人可以返乡务农,我们把这样的过程在程序中体现为装箱与拆箱(Boxing and UBoxing),在人类世界中,每个人都有姓名,年龄,籍贯等描述自己的信息,同时每个人都有不同的行为操作这些信息。 比如 我们出生后,就有父母给我们起好了名字,但是在现实生活中,根据需要,我们每个人都有可以更改自己的名字的权利。在程序世界里,我们把这样的更改行为叫做方法,名字叫做属性,我们可以通过方法来改变我们对象的属性。 人与人直接交流通过语言交流,当人一出生,便就开始了跟这个世界进行沟通,形成相互关系,融入到社会群体中去。在对象世界里,通过也可以将对象与对象联系起来,对象之间的交互性操作方式,我们会在”设计模式”中讲到。 对象的生存之道 对象生存环境是CLR,而人类的生存环境是我们整个社会群体。CLR提供了对象赖以生存的托管环境,制定了一些规则,我们称为“语法”。例如:多态,继承,数据类型,垃圾回收等。而社会提供了一些约束我们人类活动的秩序,比如 法律,交通规则,道德等。具体的实施用法就是我们所谓的“语义”。 人类社会应该是一个体系结构,也是分层的。上层建筑代表了思想与政治,通过社会契约和法律规范为经济基础,对象世界里,我们称为“接口”在面向接口编程中,其实是以接口方式来抽象变化,从而形成一种体系。 关于继承,在人类社会中,一般继承是发生在具有血缘关系的族群中,儿子继承父亲,包括基因,财产,姓,但是不意味着继承所有,比如父亲的隐私。其实在软件设计中的继承,目的就是解决我们代码冗余,提高复用性。 而关于多态,人的世界里,我们常常在不同的环境中表现出不同的行为或者角色,并且遵循不同的规则。例如: 我们在学校,我们是学生,在公交车上我们是乘客,在家里我们是作为父母的子女。同样的你在学校你作为学生,你可以打篮球,但是在公交车上 你作为乘客,是不可以打篮球的。所以身份不同,带来的差异也不同。 对象的消亡 对象和人有生必然有死。而且世界上没有长生不老药。在对象的世界里,它的生命由GC来控制。而在人的世界里,我们把GC叫做什么?---自然规律。进入死循环的对象,我们称为违反规则的。必然逃脱不了被KILL的命运。在程序中体现就是报错。其实GC控制着托管所有的对象,当内存回收执行时,GC检查托管堆中存在不在使用的对象,并执行回收执行。不被引用程序使用的对象,指的是对象没有任何引用。一般情况下,我们对于托管代码都是有GC来完成,在完成之前,首先由系统管理自动调用对象释放工作,也就是对象脱离作用域系统自动执行析构函数,最后交给垃圾回收器来完成最后的清理工作,腾出更大的有效内存空间。因此我们在程序设计中,都不显式的调用析构函数,这样就避免了GC调用时候,会先检查系统管理中的资源释放。这样就要执行两次,势必影响执行效率。 结论 其实程序世界和人类世界中有很多相似的地方,我们用这种方式来诠释我们的两个世界的主角,对象和人,用演化推进的方式描述面向对象的生死过程,应该是一种相互借鉴的方法。

文档评论(0)

wuailuo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档