客串:屌丝的坑人表单神器php
走过的那些事儿:数据库那点事儿html
推荐:手把手教你作关键词匹配项目(搜索引擎)---- 第一天数据库
最新:手把手教你作关键词匹配项目(搜索引擎)---- 第十八天app
探讨:探讨负载均衡负载均衡
吐槽:最近博客园老大老是质疑个人文章,把我用来培训的文章所有看成内容上不够深刻,对分享的知识点缺乏足够的文字讲解,每份文章都是一个多小时的结晶就被批判成这样,看样子确实值得要深思,把每一个点写透写明白,不给读者一个思考的机会。post
最近感受本身愈来愈像老师,天天都要讲3-4小时的培训课程,我就跟他们开玩笑说,你看我讲课讲得这么累,好歹也送瓶水给我喝,你们都笑了,公司缺心,缺粮,最不缺的就是水了。this
最近在跟博客园的棒子们纠结,因此那份手教你作关键词匹配项目(搜索引擎)更新会相对慢点。搜索引擎
回到正文:
我一说到类,童鞋们的反应就是封装、继承和多态。我固然不反对你们是这样的反应,我继续说到,这个太难了,我有点不太懂,能不能给个简单的方法来比喻他。
童鞋们:…..(内心估计在骂我,就一装B货)
我只好继续说到:咱们这么多人在这儿,咱们统称人叫什么…..是否是人类?
你们此次的反应很激动,回答到:是。
我指着桌子说到,那这个桌子的统称叫……?
童鞋们回得也快:桌子类…..家具…..四角桌类。
固然我都没有否认他们的说法。
而后我指着风扇说到,那这个风扇的统称叫……?
童鞋们回答到:风扇类、电器类…能想到的基本都说出来了。
我说道,好了,咱们该作总结的时候了。spa
类:一类事物的统称或者归类。code
那么咱们在计算机里面如何表示人类。
童鞋们很快就写出了
class Person { }
那我就继续说了,人都有眼睛,手,嘴巴。
全部的童鞋们都说是类的属性。我看到有个童鞋在沉思,我就问他,童鞋你在想什么?神游了。
他弱弱的回答到:我在想……眼睛是否是也是个类。
这个我要留给读者去思考了,这不会博客园的棒子们批我了吧。
后续的对话跳过……
而后我继续说:人是否是能够吃饭?
童鞋们很happy的说,这是类的方法或者行为。
小小童鞋们很兴奋丫,而后我就写了个类,专门来处理吃饭的问题(php 版本):
Class Person { private $eyes; private $hand; private $mouse; public function eat(){ #手使用筷子 $this->hand->use($chopsticks); #筷子夹起食物 $chopsticks->Pickup($food); #食物放进嘴巴 $food->Putin($this->mouse); #…… } }
我就问你们,这段代码有没有问题。童鞋们很放心的说到没问题(估计对我比较依赖,认为我写的代码确定是正确的)。
我反问了你们:筷子能夹起食物吗,它能夹起是谁的功劳?
童鞋们发觉气氛不对,颤抖的回答到:人的手。
而后我又反问了你们:食物能放进嘴巴吗,它能放进嘴巴是谁的功劳?
童鞋们愈加觉气氛不对,越没信心的回答到:人的手。
最后的代码成了这样:
<?php class Person { private $eyes; private $hand; private $mouse; public function eat() { #手使用筷子 $this->hand->use($chopsticks); #手用筷子夹起食物 $this->hand->Pickup($food); #手把食物放进嘴巴 $this->hand->Putin($this->mouse); #…… } } class Hand { private $chopsticks; private $food; public function use($chopsticks){ $this->chopsticks = $chopsticks; } public function pickup($food) { if ($this->hasChopsticks()) { $this->food = $food; } else throw new Exception(“你尚未装备筷子”); } public function Putin($mouse) { If ($mouse->isFull()) { Throw new Exception(“嘴巴里面的东西塞满了,不能再塞了”); } If ($this->hasFood()) { Throw new Exception(“手上没食物,请先拿食物”); } $mouse->add($this->food); } }
我就跟他们说:在写方法的时候,多想一想这件事是否是他应该作的事情。
我瞄了一眼,上次那位童鞋又在沉思,估计昨天的dota或者lol没打过不甘心。
我看不下去了,我在这儿夸夸奇谈,他在那儿梦游。
我就专门问了下他,童鞋你有什么高见?
这位童鞋就讲了,我在想….就那位xx同事 写代码类里面对每一个参数都进行检测,他是否是有点恐惧症,生怕人家传的参数是错误的,个人意思就是想说,什么时候须要对参数的完整性作校验,是否还有更好的方案来作这个校验问题?
尼玛,坑爹丫,忽然来个好复杂的问题,思想飘得好远,佩服。
个人回答是:后续的对话跳过……读者自行领悟,或者专门开个课程来说解这些,这尼玛又不得再也不坑下那些博客园的棒子们。
其实当时我是回答了那位童鞋的….
类就告一段路了,咱们继续讲下面的课程.
我就在白板上面写了这个
Person->eat();
下面的童鞋立刻尖叫起来了,这是错误的,不能用,要求纠正。
纠正以后的代码是这样的
$person1 = new Person(); $person1->eat();
我也同样问到你们,那样写为何是错误的,要new一个出来才能用,这个new究竟是什么呢?
下面的童鞋说到:没有实例化,不能用eat,new就是为了实例化一个对象。
那么这个就要说到对象这个概念了。
对象是类的实体,一个实实在在的物体。
了解到了对象,那么我继续问到:假设李四在吃饭,那么张三也在吃饭吗?
童鞋们回答到:不必定。
对象之间是相互独立的。
了解了这么多的概念,童鞋们对类的了解够深入的了,只有理论知识,哪能架起桥梁。那么如何找出类是他们迫切但愿的技能。
要想更多的了解后续的知识,请关注:面向对象的认识---如何找出类
后面继续请关注:面向对象的番外----思想的梦游篇