好吧,還是先說一些p話,昨天說好這兩天的**面試是下午四五六點的。結果今天早上10點就給我打來**。表示還準備早上準備一下的,畢竟有一段時間沒搞頁面了。面試完之後問結果怎麼樣的時候,那邊說如果我是廣州本地的就直接給offer了。這,武漢的孩子傷不起呀。可是我真的想去廣州。
好,p話結束。
面向過程程式設計所有的資料和處理函式都是公有的,整個程式設計的思維過程就是定義資料,定義處理函式,然後將資料傳給處理函式進行處理,處理函式之間也可以互相呼叫,資料和處理函式緊密耦合。面相物件程式設計的思維過程是定義乙個個物件,物件有自己的屬性和行為。因為屬性和行為都是從屬於物件的,於是有了「物件內」和「對向外」的概念,整個程式可以由一堆物件組成,物件與物件之間可能會有通訊,為了實現這種通訊,物件會將自己的部分屬性和行為設計成公有,暴露出來成為通訊的介面。物件和物件之間的通訊都是建立在介面的基礎之上的。當然我們可以將物件的所有屬性和行為都設為公有的,全部都作為介面,但是介面越多,會讓物件之間耦合越緊密,增加維護難度,所以一般情況下,我們都會盡量將物件的屬性和方法設為私有,只將必要的屬性和行為設為公有。但物件的公有屬性和公有行為越少,整個程式的擴充套件性會越差,所以我們在設計公有和私有的時候需要權衡一下,在不影響擴充套件性的前提下,盡量將屬性和行為設為私有。
經常聽到這麼乙個比喻:物件導向程式設計程式的耦合關係就像是乙個老舊的半導體收音機,整個收音機的線路錯綜複雜的交織在一起,形成乙個不可分割的整體。如果哪一部分壞掉了,整個收音機就報廢了;物件導向程式設計程式的耦合關係就像是一台先進的計算機,計算機由一系列的零件組裝而成,有硬碟、記憶體、螢幕、音效卡等,每個零件都是互相獨立的,通過介面鏈結起來形成乙個整體,如果哪一部分壞了,只需要更換相應的零件,其他的零件可以不受影響。
物件導向的英文全稱叫做object oriented,簡稱oo。oo其實包括ooa(object oriented analysis,物件導向分析)、ood(object oriented design,物件導向設計)和oop(object oriented programming,物件導向的程式設計)。物件導向的語法只對應oop,只是oo的一部分。
乙個典型的oo程式設計過程應該是先整理需求,根據需求進行ooa,將真實世界的客觀物件抽象成程式中的類或者物件,這個過程經常會用到uml語言,也稱uml建模,ooa的輸出結果是乙個個類或者物件的模型圖。。接下來要進行ood,這一步的目的是處理類之間的耦合關係,設計類或者物件的介面,此時會用到各種設計模式,例如觀察者模式,責任鏈模式等。ooa和ood是個反覆迭代的過程,它們本身也沒有非常清晰的邊界,是相互影響、制約的。等ooa和ood結束之後,才到了oop,進行實際的編碼工作。
ooa和ood是物件導向程式設計的思想和具體語言無關,而oop是面相物件程式設計的工具,和選用的語言相關。
但ooa和ood與具體要求語言無關,一般情況下可以輕易跨語言重用。
oop是使用物件導向技術的基礎,物件導向的思維最後都要通過oop來實施的。但oop並不等於oo,甚至並不是oo的最重要的部分,我認為ooa才是oo的最重要最關鍵的部分,絕大多數情況下,我們的程式可能用不上很複雜的ood設計。
我們常說的優秀程式是「高內聚、低耦合」的。聚合指的是把乙個複雜的事物看成若干比較簡單的事物的組裝體,從而簡化對複雜事物的描述,「高內聚」就是指物件(或類)對外提供的介面非常簡單易懂,複雜的低層操作都封裝在物件(或類)的介面內部,對使用者透明。使用者不用關心過多的低層細節,只需要類提供了哪些介面,使用者知道的低層細節越少,物件的聚合程度就越高。耦合指的是類與類之間關聯和以來的程度,低耦合就是類於類之間的依賴的程度低,類與類通訊需要關聯的介面越少,耦合程度越低。
從大局上決定程式品質的,不是oop而是ooa和ood,這是很多人需要注意的。
web前端開發修煉之道 物件導向程式設計
好吧,又是很久沒寫東西了!前兩天問乙個技術人說物件導向是什麼,他打趣說就是面對著我物件 男朋友 囧了一下!呵呵,今天恰好看到 編寫高質量 的物件導向程式設計。記錄之!首先給乙個 本的例子 定義 本1 var phonebook 定義 本2 var phonebook2 查詢 function get...
web 前端修煉之道
1.塊級元素和行內元素的區別 塊級元素即使設定了寬度,仍然是獨佔一行的,塊級元素可以設定margin和padding屬性。行內元素的margin和padding屬性只有水平邊距,沒有豎直邊距。豎直方向的padding雖然增大了行內元素的面積,但並沒有和相鄰元素拉開距離。2.display inlin...
Web前端開發修煉之道 學習筆記一
1 前期的構思很重要,是乙個先慢後快的過程 2 制定規範 3 團隊的分工與合作 2.1 語義化標籤,那如何評判?2.2 語義化的標題和內容模組 html部分 更多 段落一的內容根據瀏覽器的預設樣式 段落二的內容 css部分 title title h2 p strong2.3 語義化的表單模組 ht...