最新消息:文章中包含代码时,请遵守代码高亮规范!

面向对象编程思想(一)【原创】

原创文章 Sunny 16103浏览 15评论

写这篇文章的目的是为了让大家能够更全面、更直观、更深刻的理解面向对象的编程思想,使我们在编程的道路上少一些弯曲不平。本篇,是我多年经验总结的精华所在,可谓句句锦绣,字字珠玑,而并非网上荡来的文章夸夸其谈,哗众取宠。当然,个人的总结是主观意识上的理解,因此难免会有一些漏洞及错误,也还愿、请大家不吝不厌,提出宝贵的意见,毕竟交流会让我们不断的进步。

周众所周知科学技术日新月异,科学发展不断拓展。作为新时代的我们,只有不断学习思考与探索创新才不致于落伍于世界科技之林。我们计算机科学亦是如此。 当今社会的编程语言可谓百家齐放,编程语法百家争鸣。那么,问题来了,编程语言哪家强?好吧,在这里我要说的是,刨根寻底学思想!!思想搞明白了,再去学习一们或者几门编程语言,你会发现学习的过程是如此的行云流水,信手拈来。为什么?你已经掌握了编程思想,再去学其编程语言,无非是学习一种的语法格式了。

我在这里不会和大家讨论怎么去用C++、C#或JAVA,也不会讨论怎么去学他们。我要和你讨论的是怎么去理解面向对象思想。其中涉及到的“类、对象、继承、属性、方法、静态、重载、隐藏、重构、声明、定义、初始化、赋值”等相关技术我不会详尽阐述,让大家知道,听说了就行。至于更详细的技术内幕,就请大家私下参考相关书籍学习交流再深入研究,因为我今天的目的就是让大家更好的理解面向对象思想。

如何去提高效率?重复使用资源,把别人的东西拿来就用。这不是偷懒,而是借用,牛顿说的好,之所以我看的更远,因为我站在巨人的肩膀上。我国荀子亦有云“假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子非性异也,善假于物也”。对我们来说,最大的资源莫过于先贤为我留下的智慧结晶,掌握了思想结晶,在今后学习生活中势必事半功倍。

 

类与对象的初步探索:

我认为,无论是面向过程的语言也好,面向对象的语言也罢,首先说的都是类和对象。 “这个世界是由什么组成的?”,对于这个问题如果,仁者见仁智者见智,不同文化背景,不同探索方向便会有不同的答案。化学研究者会认为这个世界是由分子、原子、离子等化学物质组成的;画家也许说这个世界是由不同的颜色所组成的,各抒己见,众说纷纭。我觉得分类学家的思考方式最为贴切,他们认为这个世界是由不同类型的物与事所构成的,与面向对象的思想有不谋而合,异曲同工之妙。站在分类学家角度来思考这个世界,那么,这个世界是由动物、植物等组成的,同样动物又分为单细胞动物、多细胞动物、哺乳动物等,哺乳动物又分为人、大象、老虎……

好,综上所推,“类”的概念,呼之欲出。那么什么是“类”呢?还是很抽象对吧,那好,我们先来讨论另一个问题,“什么是人类?”

首先让我们来探究一下人类所具有的一些特征,这个特征包括属性(一些参数,数值)以及方法(一些行为,就是人能干什么)。每个人都有身高、体重、年龄、血型等一些属性。人会思考、会劳动、能创造原自然界没有的东西等一些方法。人之所以能区别于其它类型的动物,是因为每个人都具有人这个群体的属性与方法。这么说应该明白了吧,“人类”就是一个抽象的概念,它只能依附于所有的人的存在而存在。试想一下,如果没有了人,那么再来说“人类”这个概念似乎毫无意义。我们之所以提出“人类”的概念,是因为我们可以通过“人类”来了解每个人,每个人都是具有“人类”这个群体的所有属性与方法的对象,而这个对象“人”是实际存在的实体。理解了“人类”概念,我们来看一看老虎,老虎不具备人“人类”的属性与方法,老虎不会直立行走,不会使用工具等等,所以说老虎不是人。

现在再回想一下刚刚提出的问题,究竟什么是“类”?现在想必大家都茅塞顿开、豁然开朗。对,没错,“类”就是描述了一组有相同特性(属性)和相同行为(方法)的集合。在程序中,类实际上就是数据类型。例如:整数,小数等等。整数也有一组特性和行为。面向过程语言与面相对象语言的区别就在于,面向过程语言不允许程序员自己定义数据类型,而只能使用程序中内置的数据类型。为了模拟真实世界,为了更好的解决问题,而我们往往需要创建解决问题所必需的数据类型,面向对象编程思想应运而生、蓬勃发展。

 

深入探究面向对象思想:

有了上面细腻而形象的描写与阐述,现在我们就可以深入的来挖掘类的内部,看看它究竟是如何实现的?面向对象的编程思想最大的特色就是可以编写自己所需的数据类型,以更好的解决问题。我们必须要搞清楚“类,对象,属性,方法它们之间的关系”。就像前面我所说的, “人类”是什么也做不了的,它不实际存在,只依附于人的存在而存在。由此可知,“类”就是对对象的描述,是抽象概念。对象从类中产生出来,是实实在在存在的、具体的,因此,对象具有类所描述的所有的属性以及方法。或许又有点晕头转向,不知所措,好,我再举个例子(某一天晚上我跟赵静、张杰也举过这个例子)。例如吃饭这个行为方式,怎么样实现“吃饭”呢,一般我们的思维模式就是,把饭煮熟,用碗盛饭,拿筷子,然后一口一口的吃饭。对,描述的还算详细,但我想说这是面向过程的思维模式,容易想到,却难以全面。下面我来说说向对象的思维方式。首先,吃饭,需要一个主体来实施这个行为,因此我们需要一个“类”,这个类中有“吃饭”这个方法。我们要完成吃饭,就用“类”产生一个对象,通过对象来调用类中吃饭的方法,就可以完成吃饭。这时候,我相信大家肯定疑问重重,还是没实现吃饭这个方法呀,仅仅只是调用了原有类的方法,如果原本就没有这个类和类种方法,又该如何?很好,这个问题我想过,大家也想过,我想那些编程语言的创始人肯定也想到过,他们已经将大部分的方法写好并进行了封装,我们只需要通过上述的方式调用即可。现成没有的功能方法,我们也可以按照面向对象思维方式来创建一个类,再为这个类赋予我们需要的方法,以后我们就可以通过类产生对象来调用相应的方法。

实例展示:

说了这么多,让我们来看一个实例吧。篇幅有点长,这个例子我放在面向对象编程思想(二)来讲解吧。

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/5023.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Sunny的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!

网友最新评论 (15)

  1. 文章写的好,见解独特深刻,描述形象生动,很值得学习。
    哲学研究者2014-12-10 10:58
    • Sunny
      谢谢,仅仅个人拙见,还望指教。
      Sunny2014-12-11 09:02
  2. 是君子性非异也。
    sunnyMood2014-12-14 16:19
    • Sunny
      是的,时间长忘记了,多谢不吝赐教。
      Sunny2014-12-19 10:36
  3. 我还以为对象是女朋友呢,,搞半天是对方,我说怎么半天没看到重点呢!!!无语。。。。。。。只能说我是外行凑热闹!
    永叹的前奏曲12014-12-19 11:04
    • Sunny
      这算是学术报告吧,面向对象思想是一种很抽象的概念。
      Sunny2014-12-19 15:08
    • Sunny
      难道我描述的不够细腻吗?
      Sunny2014-12-19 23:18
  4. 授人以鱼不如授人以渔,棒!
    偏执控2014-12-19 15:17
    • Sunny
      嗯嗯,谢谢,谢谢,还望多多指教,嘿
      Sunny2014-12-21 14:11
  5. 写得不错,很有文采,赞一个
    尘飞扬2014-12-31 22:21
  6. "类”对象的描述,是抽象概念。这话说的不好。 类是同一类对象抽象出来的共性。所以他叫类。 而不对象的描述。 对象指的什么,是特指,是实例,指的就那个人,张三,李四,王二麻,指的就是旺财那条狗。所以类是某一类对象的共性,张三李四王二麻的共性,而不是对象的描述。
    雷峰塔2015-03-17 14:44
    • Sunny
      是的,你说的很对,类是实体对象的共性描述。只要理解了意思就好。
      Sunny2015-07-24 12:14
  7. 吃饭这个行为方式 这个例子跳的很快,其实应该考虑一下为什么从过程变成对象,是因为以后会产生相同的事情增加复用,而不是为了面向对象
    雷峰塔2015-03-17 14:45
    • Sunny
      的确,跳的有点快,我近期会再总结一下,再举一个跟贴切的例子。
      Sunny2015-08-22 11:45
  8. 很不错,加油