摘要:下面我們來使用面向對象類圖這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。
以下是某場的一道面試題(大概):
1、一個停車場,車輛入場時,攝像頭記錄下車輛信息
2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量
3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現在停車計費價格上面的不同)
看到第一個條件的時候,我大概知道了這道題考察的應該是面向對象相關的,三個條件看完后以及基本確認了。
說到這里,簡單地說一下面向對象,至于什么是面向對象我這里就不多說了,每個人也都有自己不同的理解,包括它的三要素(封裝、繼承、多態)。
簡單地說一下為什么我們要面向對象,為什么要使用面向對象?說一下我的理解
先拋開面向對象,首先計算機的 程序執行 無非就是 順序、判斷、循環 我們現在所有用到的語言包括c、java、php... 沒有其它的, 如js中的 if...else, switch...case...就是判斷,for,while就是循環,也包括一些遍歷、遞歸也都是基于這三種方式!我們每天所產出的代碼,所有的這些都是通過順序、判斷和循環這三個方式都能輕松搞定,沒有第四種方式,為什么呢?因為我們通過這三種方式來解決就實現了一個結構化的問題,也就是我們通過這三個就能滿足所有的需求,也就不需要第四個了這樣的化對我們的程序就已經結構化了,對于編譯器也能很高效的執行、解析這些東西, 外插一嘴,goto語句其實就是游離在這三個之外,會導致程序、邏輯的混亂,很少有用基本被淘汰了,不能說他因為效率低,它的效率可能會很高,但是因為脫離了結構化,所以至少在業務代碼上我們極少使用它。
說到這里,也就是程勛執行我們都簡化成 這個結構,而面向對象也讓我們的數據也簡化了即結構化(這句話也不是我說的,而是ruby語言的作者),書里說了,面向對象是為了模擬、表示事件得萬物,比如人、鳥類、到具體服務員類,有具體行為的類。其實js里面向對象意義根本不拘泥于此,書上的只是為了讓我們好入門好學習而已,它的意義是將零散的數據進行結構化。計算機有個毛病,結構化的程序對于它來說是最簡單的!
簡單解釋一下,我們瀏覽器加載網頁加載的是什么?是流,流是什么呢?其實就是字符串,雖然我們看到之后是html,css,js代碼,但是代碼不就是字符串嘛,那我們字符串怎么辦,瀏覽器拿到字符串首先就是dom節點的解析然后生成生成渲染樹(渲染樹與dom樹不同的地方在于,dom樹會把所有的dom節點都展示出來,渲染樹只會展示display非none的元素),都是一步步順序執行的。
相比來說,程序也是如此了,如果我們的程序中充滿了散亂的數據,那我們還怎么按照結構化的要求去操作呢?比如說,通過人做一個對象,人有外貌,行為,狀態(吃、傳、喝、高矮胖瘦)這么多東西可以集成在一個對象中來操作,但是如果沒有面向對象,這些特征,行為也就散亂了,一旦散亂了以后還怎么管理,并且這只是一個人,就有這么多東西,再來十個,一百個,再來只狗類呢?我們的程序就成了一盤散沙了,當然這些只是舉例子,具體業務還要拿來具體分析。所以面向對象不僅符合計算機所喜愛的結構化,還能讓我們管理起來,維護起來,都符合結構化。
再引用雙越老師的一句話:編程就應該簡單&抽象。
有一篇小說里面有一段話我覺得還蠻有意思的,早期的人們之所以沒有設計出來計算機,就是因為他們想的不夠簡單,而不是不夠復雜,其實計算機很簡單,不就是0和1嗎。
所有說我們編程,設計時候要做到 結構化,簡單+抽象,抽象完之后才能簡單,簡單的前提是我們應該抽象好,我認為這就是我們為什么要面向對象最主要的原因,我們之所以面向對象編程就是因為它可以抽象,可以擴展。而不是面向具體,可能這些話對于初學前端的來說不好理解,但是隨著你工作時間的提升,相信很快就會理解的。
**回到面試題,我們來分析** 這個面試題,如果我們沒有面向對象,面向抽象的概念, 那我們應該很快就能拿起鍵盤了,一個停車場,三個普通車位,一個豪華車位,一個攝像頭,一個大屏幕顯示器,各種各樣的車,可能我們很快就能做完,‘設計完’,畢竟面向具體是真的很簡單,要求什么我就做什么。。。 不過說回來,如果面試官再讓你減一個車位或者增加兩個豪華車位,加兩個攝像頭?如果按照我們之前的來寫,簡單。。。改一下不就行了,加一個豪華車位,加兩個攝像頭。。。其實到這里想必已經涼涼了。 下面我們來使用面向對象 類圖這里就不再畫了 首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。我們都可以看做是類 停車場,有層位,有攝像頭,屏幕,所以我們先來創建一個停車場,這一類 class Park { constructor () { } } 停車場有層位,層位里面有若干車位 class Floor { constructor (num, places) { this.num = num this.places = places } } 車位也歸為一類,車位有自己的狀態,有車,無車 class Place { constructor () { this.empty = true } } 車位分為普通車位,豪華車位,但是不論是普通還是豪華,他們也都有自己的狀態,有車,無車,所以我們直接讓這兩個類繼承車位類 普通車位 class NormalPlace extends Place{ constructor () { super() } } 豪華車位 class SpecialPlace extends Place{ constructor () { super() } } 攝像頭 class Camera { constructor () { } } 電腦,可以記錄所有車的數據 class Computer { constructor () { this.symbols = {} } } // 屏幕 class Screen { } 這樣一看我們所有類都創建完了,差的是來分析他們的行為,狀態,聯系,這里不再多做分析。只舉一個簡單的例子,然后上完整代碼 停車場, 有層 攝像圖 屏幕,有出入車時所發生的行為 class Park { constructor (floors) { this.floors = floors this.camera = new Camera() this.screen = new Screen() } in (car) { } out (car) { } } 我自己寫了一個簡單的demo,當然也沒有考慮得特別細致 ***完整代碼***
收入 0 元
代碼可以直接粘貼到html里,直接運行打開,大家只要看各個類之間的聯系就可以,具體到行為的邏輯代碼只是怎么簡單想怎么寫就怎么寫的,當然也有沒考慮全面的,比如各個車位的價格應該也是動態的,為了趕時間,好多東西我都直接定死了。
抽象好了之后,這樣不論是增加減少變更價錢我們都可以靈活地處理,每個類最基礎的行為和方法幾乎是不變得,我們只需要變容易變得抽象起來,封裝起來。之后, 就變得‘簡單’
歡迎一起探討,大家共同進步!
作者:易企秀——Yxaw
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105901.html
摘要:想必面試題刷的多的同學對下面這道題目不陌生,能夠立即回答出輸出個,可是你真的懂為什么嗎為什么是輸出為什么是輸出個這兩個問題在我腦邊縈繞。同步任務都好理解,一個執行完執行下一個。本文只是我對這道面試題的一點思考,有誤的地方望批評指正。 想必面試題刷的多的同學對下面這道題目不陌生,能夠立即回答出輸出10個10,可是你真的懂為什么嗎?為什么是輸出10?為什么是輸出10個10?這兩個問題在我腦...
摘要:直接開始題目是厲害了說句實話開發中誰寫成這樣保證會被打死。不過面試就是面試,有面試官的考量點。官方是這么說的。結果完美,不過小姐姐的意思是數組的方法會自動觸發數組的。 直接開始題目是 if(a==1 && a==2 && a==3){ alert(厲害了) } 說句實話開發中誰寫成這樣保證會被打死。 不過面試就是面試,有面試官的考量點。 我理解的點有兩個 1、隱式類型轉換 先說...
摘要:另一個問題,就是我下面要提及的作用域問題,我當時思考的時間太久了這是回憶中的面試題實際略有差異,不糾結了說一下腳本的運行結果引用錯誤中給出的錯誤提示。 版權聲明:此文首發于我的簡書賬號人生還有多少個二十年,轉載請注明出處。 此處有幾百字嘮叨: 當天,我早早起床,跨越上百公里,高德導航,路人指點,跌跌撞撞到達招聘會現場,當時已是中午十二點半,吃了午餐(半瓶白開水),開始準備投遞...
摘要:首先,我先去上搜索了的定義運算符創建一個用戶定義的對象類型的實例或具有構造函數的內置對象的實例。 今天看到一道面試題,如下,問: 實例化 Person 過程中,Person返回什么(或者 p 等于什么)? function Person(name) { this.name = name return name; } let p = new Person(Tom); 說實...
摘要:由虛擬機生成并拋出,,屬于系統內部錯誤或者資源耗盡等嚴重情況,屬于需要擔負的責任,這一類異常事件是無法恢復或者不可能捕獲的,將導致應用程序中斷,但是自定義是可以捕獲的。 題目 showImg(http://img-storage.qiniudn.com/15-9-22/50608386.jpg); 答案:D 分析 Java 異常的結構體系 showImg(http://img-stor...
摘要:下面我們來使用面向對象類圖這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現在停車計費價格上面的不...
閱讀 1870·2021-11-25 09:43
閱讀 3161·2021-11-15 11:38
閱讀 2708·2019-08-30 13:04
閱讀 483·2019-08-29 11:07
閱讀 1492·2019-08-26 18:37
閱讀 2697·2019-08-26 14:07
閱讀 582·2019-08-26 13:52
閱讀 2278·2019-08-26 12:09