客串:屌絲的坑人表單神器、數據庫那點事兒、探討負載均衡php
推薦:手把手教你作關鍵詞匹配項目(搜索引擎)---- 第一天(起點)、手把手教你作關鍵詞匹配項目(搜索引擎)---- 第十九天(最新)html
同類文章:面向對象的認識----新生的初識、面向對象的番外----思想的夢遊篇(1)sql
吐槽:一上班收到博客園的來信說到,「咱們會綜合多方面的因素進行考慮,對於首頁的管理咱們正在努力改進。」,深感欣慰, 這就是不一樣的答覆,有不一樣的效果,我也但願博客園能說到作到。
最近那些童鞋們做業不作,要求卻是蠻多的,其中一位提到培訓下Mysql語句方面的知識,即SQL語句的使用。我直接回了句:先完成上次培訓的做業先。
最近也是爲了要培訓的效果有所成效,當時那位管理級別的就說要搞懲罰措施,對那些不完成做業的進行懲罰,懲罰無外乎就是那些吃吃喝喝的,我當時就說了,學習是自覺的事情,懲罰措施不用搞,當時他就直接反駁說到,你搞了兩年,你看哪一個自覺了,你就一坑貨。我只好無語了,坑壞了下一代的花花朵朵咋辦……
也許是心地太好,我就提倡到不交做業的就給1元錢吧,天天早上拿個小碗遇到那些童鞋就說:童鞋來施捨點,好幾天沒飯吃了,行行好!數據庫
------------- 華麗的分割線 正式進入正文 --------------數組
上回說到類、對象啥的,還沒看的童鞋趕忙了:面向對象的認識----新生的初識負載均衡
我問到:童鞋們,類的基礎知識大家都理解了,那麼怎麼找出類呢,你們有方法嗎?
童鞋們:…….(咱們要是知道,還要你培訓幹毛)
我眼睛晃過了一圈,一片沉默,這個是什麼形成了如今的現狀?post
哎呀,我只好天然自語的說到:
類嘛,其實都挺好找的,就專找名詞,咱們從哪兒找名詞,就從需求文檔裏。
名詞這個概念就不用我解析了吧!(連我這種專打錯別字的都曉得)學習
當時有位童鞋直接站起來講到:沒有需求文檔咋辦?
這種叫作沒事找事作的,典型的找抽型。
沒有需求文檔就從口頭描述那兒得來,笨的人跟他說半天,他也不懂。
(如今現實不少公司沒有需求文檔,不過這不是理由)this
我再次說到:說歸說,仍是實戰來得靠譜,大家聽清楚需求,而後從裏面找出名詞。搜索引擎
我來到超市,在門口有籃子和購物車,我比較勤快,我拿起了籃子,開始逛超市,我通常先會看看商品的價格,而後以爲把便宜的商品放進了籃子,我提着籃子來到收銀臺,收銀漂亮妹子把籃子裏面的商品經過讀碼器,所有刷一次,而後告訴我總價,我給了現金,收銀漂亮妹子不知道幹了啥,找零的抽屜打開了,而後他把零錢以及購物憑證給了我,順手把抽屜推了進去,最後把商品裝進了購物袋,而後說了多謝惠顧,歡迎下次關臨。我高高興興的把商品提回了家。
而後那些童鞋們找出了這些名詞,千奇百怪:
我(購物者)、超市、籃子、購物車、商品、商品的價格、便宜的商品、購買的商品、收銀臺、收銀漂亮妹子(收銀員)、讀碼器、現金、抽屜、零錢、購物憑證、購物袋
我就說了:好了,名詞找出來了,假設你要作個收銀系統,你要怎麼辦,這麼多的名詞都要用嗎?
童鞋們:……. (咱們要是知道,還要你培訓幹毛)
我繼續說到:咱們就想一想這些名詞跟這系統有沒有關係。
購物者跟系統有關係嗎?
當時他們的想法有兩種,一種是有,一種是沒有。
我當時就說了,好像輸入商品的不是購物者,而是收銀員。
收銀員成了一個類。我乘勝追擊,繼續問到:收銀員都作了什麼事情?
1. 用讀碼器掃商品
2. 收取現金
3. 打開抽屜
4. 關閉抽屜
Very good!
後面也是同樣,經過激烈的討論, 最終定下了以下類:
收銀員
- 用讀碼器掃商品
- 收取現金
- 打開抽屜
- 關閉抽屜
商品
- 價格
- 條形碼
- 名稱
購物憑證
- 所購買的商品 - 商品
- 數量
- 折扣
- 總價
- 總價
- 折扣
- 折後價
- 付款的金額
- 找零的金額
- 購物憑證的編號
超市
- 商品列表
讀碼器
- 讀取商品
很好,咱們把類都定義好了,我給他們的做業是把這些轉成代碼。
過了幾天我收到了一份程序,當時我懵了,這是什麼節奏?
錯得太離譜了,我直接噴血了。。。。
而後沒辦法我又浪費一天的時間一步一步的去教。
首先定義個收銀員類,他有哪些操做:
1. 新建購物憑證
2. 在新建的購物憑證上,用讀碼器掃商品
3. 收取現金,用於支付該次購物
代碼以下:
<?php class Cashier { /** * @var Order $order */ private $order; /** * 新建購物憑證 */ public function newOrder() { $this->order = new Order(); } /** * 用讀碼器掃商品 * @param $goodsId * @param $num */ public function scan($barcode, $num) { #讀卡器讀取商品 $goods = CodeReader::read($barcode); $this->order->add($goods, $num); } /** * 收取現金 * @param $money * @throws Exception */ public function pay($money) { $totalMoney = $this->order->getTotalMoney(); if ($money > $totalMoney) { $this->order->setPayMoney($money); $balanceMoney = $this->order->getBalanceMoney(); #顯示屏展現找零 Display::show($balanceMoney); #訂單結算 $this->order->setFinished(); #抽屜打開 Drawer::open(); #訂單打印 Printer::print($this->order); } else throw new Exception("金額不夠丫,請老闆賞臉打發一下"); } }
收銀員的代碼寫好了,我繼續讓他們去寫購物憑證。
咱們經過收銀員類裏面知道訂單有如下方法:
1. add($goods,$num); //添加所購買的商品
2. getTotalMoney(); //獲取總價
3. setPayMoney($money); //設置支付價錢
4. getBalanceMoney(); //獲取找零
5. setFinished(); //訂單結算
童鞋們在寫Order類的時候,遇到了一下狀況:
1. 類裏面的屬性不會用。
2. 不知道如何把所購買的商品轉化成數組或者對象 (明顯的基礎沒打好)
3. 數組的使用不熟練
這些我真心忍了,看樣子得專門搞個課程,名字我都想好了,叫作:面向對象的認識----類的轉化
這些娃有坑爹的,來看看童鞋們的代碼:
class Order { public $orderList = array(); public function add($goods,$num) { $this->orderList[] = array($goods,$num); } public function getTotalMoney() { $Money = 0; foreach($this->orderList as $order) { $Money += $order['0']->price*$order['1']; } return $Monry; } } class Goods { public $price; }
在來瞧瞧另一個版本的:
class Order { /** * @var OrderGoods[] $orderGoodsList */ private $orderGoodsList = array(); private $payMoney = 0; public function add($goods, $num) { $orderGoods = new OrderGoods($goods, $num); $this->orderGoodsList[] = $orderGoods; } /** * 獲取訂單總價 * @return int */ public function getTotalMoney() { $totalMoney = 0; foreach ($this->orderGoodsList as $orderGoods) { $totalMoney += $orderGoods->getTotalMoney(); } return $totalMoney; } public function setPayMoney($payMoney) { $this->payMoney = $payMoney; } public function getBalanceMoney() { return $this->payMoney - $this->getTotalMoney(); } public function setFinished() { #該幹嗎幹嗎 } } class OrderGoods { /** * @var Goods $goods */ private $goods; private $num; public function __construct($goods, $num) { $this->goods = $goods; $this->num = $num; } public function getTotalMoney() { return $this->goods->price * $this->num; } } class Goods { public $price; public $name; public $id; } class Shop { public $goodsList; public function find($goodsId) { return $this->goodsList[$goodsId]; } }
好了,今天的課程到此結束,反正心冷了....
今天的目的也是讓你們怎麼從需求文檔裏面找出所謂的類。任何事情都是一步一步來的,熟能生巧嘛。。。
請你們繼續關注:面向對象的認識----類的轉化