国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一道面試題引發(fā)的思考

Backache / 1399人閱讀

摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個(gè)類吧,它里面的車位是一個(gè)類吧,攝像頭,屏幕。。。

以下是某場的一道面試題(大概):

1、一個(gè)停車場,車輛入場時(shí),攝像頭記錄下車輛信息
2、屏幕上顯示所接收的車輛的信息情況(車牌號(hào))以及各層車位的車位余量
3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計(jì)費(fèi)價(jià)格上面的不同)

看到第一個(gè)條件的時(shí)候,我大概知道了這道題考察的應(yīng)該是面向?qū)ο笙嚓P(guān)的,三個(gè)條件看完后以及基本確認(rèn)了。

說到這里,簡單地說一下面向?qū)ο?/em>,至于什么是面向?qū)ο笪疫@里就不多說了,每個(gè)人也都有自己不同的理解,包括它的三要素(封裝、繼承、多態(tài))。

簡單地說一下為什么我們要面向?qū)ο?為什么要使用面向?qū)ο??說一下我的理解
先拋開面向?qū)ο?,首先?jì)算機(jī)的 程序執(zhí)行 無非就是 順序、判斷、循環(huán) 我們現(xiàn)在所有用到的語言包括c、java、php... 沒有其它的, 如js中的 if...else, switch...case...就是判斷,for,while就是循環(huán),也包括一些遍歷、遞歸也都是基于這三種方式!我們每天所產(chǎn)出的代碼,所有的這些都是通過順序、判斷和循環(huán)這三個(gè)方式都能輕松搞定,沒有第四種方式,為什么呢?因?yàn)槲覀兺ㄟ^這三種方式來解決就實(shí)現(xiàn)了一個(gè)結(jié)構(gòu)化的問題,也就是我們通過這三個(gè)就能滿足所有的需求,也就不需要第四個(gè)了這樣的化對(duì)我們的程序就已經(jīng)結(jié)構(gòu)化了,對(duì)于編譯器也能很高效的執(zhí)行、解析這些東西, 外插一嘴,goto語句其實(shí)就是游離在這三個(gè)之外,會(huì)導(dǎo)致程序、邏輯的混亂,很少有用基本被淘汰了,不能說他因?yàn)樾实?,它的效率可能?huì)很高,但是因?yàn)槊撾x了結(jié)構(gòu)化,所以至少在業(yè)務(wù)代碼上我們極少使用它。
說到這里,也就是程勛執(zhí)行我們都簡化成 這個(gè)結(jié)構(gòu),而面向?qū)ο笠沧屛覀兊臄?shù)據(jù)也簡化了即結(jié)構(gòu)化(這句話也不是我說的,而是ruby語言的作者),書里說了,面向?qū)ο笫菫榱四M、表示事件得萬物,比如人、鳥類、到具體服務(wù)員類,有具體行為的類。其實(shí)js里面向?qū)ο笠饬x根本不拘泥于此,書上的只是為了讓我們好入門好學(xué)習(xí)而已,它的意義是將零散的數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。計(jì)算機(jī)有個(gè)毛病,結(jié)構(gòu)化的程序?qū)τ谒鼇碚f是最簡單的
簡單解釋一下,我們?yōu)g覽器加載網(wǎng)頁加載的是什么?是流,流是什么呢?其實(shí)就是字符串,雖然我們看到之后是html,css,js代碼,但是代碼不就是字符串嘛,那我們字符串怎么辦,瀏覽器拿到字符串首先就是dom節(jié)點(diǎn)的解析然后生成生成渲染樹(渲染樹與dom樹不同的地方在于,dom樹會(huì)把所有的dom節(jié)點(diǎn)都展示出來,渲染樹只會(huì)展示display非none的元素),都是一步步順序執(zhí)行的。
相比來說,程序也是如此了,如果我們的程序中充滿了散亂的數(shù)據(jù),那我們還怎么按照結(jié)構(gòu)化的要求去操作呢?比如說,通過人做一個(gè)對(duì)象,人有外貌,行為,狀態(tài)(吃、傳、喝、高矮胖瘦)這么多東西可以集成在一個(gè)對(duì)象中來操作,但是如果沒有面向?qū)ο?,這些特征,行為也就散亂了,一旦散亂了以后還怎么管理,并且這只是一個(gè)人,就有這么多東西,再來十個(gè),一百個(gè),再來只狗類呢?我們的程序就成了一盤散沙了,當(dāng)然這些只是舉例子,具體業(yè)務(wù)還要拿來具體分析。所以面向?qū)ο蟛粌H符合計(jì)算機(jī)所喜愛的結(jié)構(gòu)化,還能讓我們管理起來,維護(hù)起來,都符合結(jié)構(gòu)化。
再引用雙越老師的一句話:編程就應(yīng)該簡單&抽象。
有一篇小說里面有一段話我覺得還蠻有意思的,早期的人們之所以沒有設(shè)計(jì)出來計(jì)算機(jī),就是因?yàn)樗麄兿氲牟粔蚝唵危皇遣粔驈?fù)雜,其實(shí)計(jì)算機(jī)很簡單,不就是0和1嗎。
所有說我們編程,設(shè)計(jì)時(shí)候要做到 結(jié)構(gòu)化,簡單+抽象,抽象完之后才能簡單,簡單的前提是我們應(yīng)該抽象好,我認(rèn)為這就是我們?yōu)槭裁匆嫦驅(qū)ο笞钪饕脑?,我們之所以面向?qū)ο缶幊叹褪且驗(yàn)樗梢猿橄?,可以擴(kuò)展。而不是面向具體,可能這些話對(duì)于初學(xué)前端的來說不好理解,但是隨著你工作時(shí)間的提升,相信很快就會(huì)理解的。

 **回到面試題,我們來分析**
 這個(gè)面試題,如果我們沒有面向?qū)ο?,面向抽象的概念?那我們應(yīng)該很快就能拿起鍵盤了,一個(gè)停車場,三個(gè)普通車位,一個(gè)豪華車位,一個(gè)攝像頭,一個(gè)大屏幕顯示器,各種各樣的車,可能我們很快就能做完,‘設(shè)計(jì)完’,畢竟面向具體是真的很簡單,要求什么我就做什么。。。
 不過說回來,如果面試官再讓你減一個(gè)車位或者增加兩個(gè)豪華車位,加兩個(gè)攝像頭?如果按照我們之前的來寫,簡單。。。改一下不就行了,加一個(gè)豪華車位,加兩個(gè)攝像頭。。。其實(shí)到這里想必已經(jīng)涼涼了。
 下面我們來使用面向?qū)ο? 類圖這里就不再畫了
 首先面試題中所提到的我們都可以看成類,比如停車場是一個(gè)類吧,它里面的車位是一個(gè)類吧,攝像頭,屏幕。。。我們都可以看做是類
 
 停車場,有層位,有攝像頭,屏幕,所以我們先來創(chuàng)建一個(gè)停車場,這一類
 
 class Park {
    constructor () {
     
    }
}

停車場有層位,層位里面有若干車位
class Floor {
    constructor (num, places) {
        this.num = num
        this.places = places
    }
}

車位也歸為一類,車位有自己的狀態(tài),有車,無車

class Place {
    constructor () {
        this.empty = true
    }
}

車位分為普通車位,豪華車位,但是不論是普通還是豪華,他們也都有自己的狀態(tài),有車,無車,所以我們直接讓這兩個(gè)類繼承車位類
普通車位
class NormalPlace extends Place{
    constructor () {
        super()
    }
}

豪華車位

class SpecialPlace extends Place{
    constructor () {
        super()
    }
}

攝像頭

class Camera {
    constructor () {
    }
}

電腦,可以記錄所有車的數(shù)據(jù)

class Computer {
    constructor () {
        this.symbols = {}
    }
}

// 屏幕
class Screen {

}

這樣一看我們所有類都創(chuàng)建完了,差的是來分析他們的行為,狀態(tài),聯(lián)系,這里不再多做分析。只舉一個(gè)簡單的例子,然后上完整代碼

停車場, 有層 攝像圖 屏幕,有出入車時(shí)所發(fā)生的行為

class Park {
    constructor (floors) {
        this.floors = floors
        this.camera = new Camera()
        this.screen = new Screen()
    }
    in (car) {

    }
    out (car) {

    }
}
我自己寫了一個(gè)簡單的demo,當(dāng)然也沒有考慮得特別細(xì)致
***完整代碼***








  • 第一層車位數(shù)量100,空余車位數(shù)量 100
  • 第二層車位數(shù)量100,空余車位數(shù)量 100
  • 第三層車位數(shù)量100,空余車位數(shù)量 100
  • 第四層車位數(shù)量 20,空余車位數(shù)量 20

收入 0

  • 統(tǒng)計(jì)

代碼可以直接粘貼到html里,直接運(yùn)行打開,大家只要看各個(gè)類之間的聯(lián)系就可以,具體到行為的邏輯代碼只是怎么簡單想怎么寫就怎么寫的,當(dāng)然也有沒考慮全面的,比如各個(gè)車位的價(jià)格應(yīng)該也是動(dòng)態(tài)的,為了趕時(shí)間,好多東西我都直接定死了。
抽象好了之后,這樣不論是增加減少變更價(jià)錢我們都可以靈活地處理,每個(gè)類最基礎(chǔ)的行為和方法幾乎是不變得,我們只需要變?nèi)菀鬃兊贸橄笃饋?,封裝起來。之后, 就變得‘簡單’

歡迎一起探討,大家共同進(jìn)步!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/104444.html

相關(guān)文章

  • 一道面試引發(fā)思考 --- Event Loop

    摘要:想必面試題刷的多的同學(xué)對(duì)下面這道題目不陌生,能夠立即回答出輸出個(gè),可是你真的懂為什么嗎為什么是輸出為什么是輸出個(gè)這兩個(gè)問題在我腦邊縈繞。同步任務(wù)都好理解,一個(gè)執(zhí)行完執(zhí)行下一個(gè)。本文只是我對(duì)這道面試題的一點(diǎn)思考,有誤的地方望批評(píng)指正。 想必面試題刷的多的同學(xué)對(duì)下面這道題目不陌生,能夠立即回答出輸出10個(gè)10,可是你真的懂為什么嗎?為什么是輸出10?為什么是輸出10個(gè)10?這兩個(gè)問題在我腦...

    betacat 評(píng)論0 收藏0
  • 一道前端面試引發(fā)思考

    摘要:直接開始題目是厲害了說句實(shí)話開發(fā)中誰寫成這樣保證會(huì)被打死。不過面試就是面試,有面試官的考量點(diǎn)。官方是這么說的。結(jié)果完美,不過小姐姐的意思是數(shù)組的方法會(huì)自動(dòng)觸發(fā)數(shù)組的。 直接開始題目是 if(a==1 && a==2 && a==3){ alert(厲害了) } 說句實(shí)話開發(fā)中誰寫成這樣保證會(huì)被打死。 不過面試就是面試,有面試官的考量點(diǎn)。 我理解的點(diǎn)有兩個(gè) 1、隱式類型轉(zhuǎn)換 先說...

    gaomysion 評(píng)論0 收藏0
  • 一道簡單面試引發(fā)思考

    摘要:另一個(gè)問題,就是我下面要提及的作用域問題,我當(dāng)時(shí)思考的時(shí)間太久了這是回憶中的面試題實(shí)際略有差異,不糾結(jié)了說一下腳本的運(yùn)行結(jié)果引用錯(cuò)誤中給出的錯(cuò)誤提示。 版權(quán)聲明:此文首發(fā)于我的簡書賬號(hào)人生還有多少個(gè)二十年,轉(zhuǎn)載請注明出處。 此處有幾百字嘮叨:   當(dāng)天,我早早起床,跨越上百公里,高德導(dǎo)航,路人指點(diǎn),跌跌撞撞到達(dá)招聘會(huì)現(xiàn)場,當(dāng)時(shí)已是中午十二點(diǎn)半,吃了午餐(半瓶白開水),開始準(zhǔn)備投遞...

    wpw 評(píng)論0 收藏0
  • 一道面試引發(fā)思考 --- 理解 new 運(yùn)算符

    摘要:首先,我先去上搜索了的定義運(yùn)算符創(chuàng)建一個(gè)用戶定義的對(duì)象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對(duì)象的實(shí)例。 今天看到一道面試題,如下,問: 實(shí)例化 Person 過程中,Person返回什么(或者 p 等于什么)? function Person(name) { this.name = name return name; } let p = new Person(Tom); 說實(shí)...

    shengguo 評(píng)論0 收藏0
  • 一道面試引發(fā)思考:(2)

    摘要:由虛擬機(jī)生成并拋出,,屬于系統(tǒng)內(nèi)部錯(cuò)誤或者資源耗盡等嚴(yán)重情況,屬于需要擔(dān)負(fù)的責(zé)任,這一類異常事件是無法恢復(fù)或者不可能捕獲的,將導(dǎo)致應(yīng)用程序中斷,但是自定義是可以捕獲的。 題目 showImg(http://img-storage.qiniudn.com/15-9-22/50608386.jpg); 答案:D 分析 Java 異常的結(jié)構(gòu)體系 showImg(http://img-stor...

    stefan 評(píng)論0 收藏0
  • 一道面試引發(fā)思考

    摘要:下面我們來使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個(gè)類吧,它里面的車位是一個(gè)類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個(gè)停車場,車輛入場時(shí),攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號(hào))以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計(jì)費(fèi)價(jià)格上面的不...

    Apollo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Backache

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<