作者:陳老師,華清遠見嵌入式學院講師。
1.萬事萬物皆為對象。將對象視為一個奇特的變量,它可以存儲數據,除此以外,你還可以要求他在自身上執行操作。理論上講,你可以抽取待求解問題的任何概念化的構件狗,建築物,服務等),將其表示為程序中的對象。
2.程序是對象的集合,它們通過發送消息來告知彼此所想要做的。想要請求對象幫你解決問題,就要調用這個對象自身定義的方法。對象會通過自己定義的方法,來幫你解決問題。
3. 一個對象的定義中,可以包含另外一個,或幾個對象。
4.每個對象都有自己的類型。“每個對象都是某個類class)的一個實例instance)。這裡的類,和類型,類別是一個意思。
5.某一特定類型的所有對象都可以接受同樣的消息。或者說,同一個類中的對象可以調用同樣的方法去解決問題。
面向對象編程,實際上是創建新的數據類型,所有面對對象的程序設計語言都是使用Class這個關鍵字來表示數據類型的。因為類是描述了具有相同特性數據元素)和行為功能)的對象的集合。這裡,程序員可以自定義數據類型,並且編程系統幫助你維護自定義的數據類型。當開發一個程序時,最好的方法之一就是將對象想象為“服務提供者”,程序本身將通過調用其他對象提供的服務來向用戶提供服務。在良好的面向對象設計中,每個對象都可以用來很好的完成一項任務,但它並不試圖做更多事情。就是說,它的功能盡可能的單一化,提高內聚性。
oop認為,程序是由對象組成的,這些對象有自己的屬性和能夠執行的操作。那麼,是自己構造對象還是使用已經構造好的對象,取決於預算以及時間。但是,根本上說,只要對象能夠滿足需求,就不必關心其功能是如何實現的。在oop中,只需要關心對象的外表,就如同計算機生產商只關心電源是否符合要求,而不關心電源內部實現的原理一樣,絕大多數的java程序員不必關心對象的具體實現過程,只要保證對象滿足他們的需要就可以了。
oop的關鍵是讓每一個對象負責執行一組相關的任務。如果一個對象依賴於另一個對象負責的任務,那麼它就訪問那個包含該任務的對象。此時,第一個對象就會請求第二個對象執行任務。這種工作方式其實是由過程化設計中人們熟悉的過程調用實現的就是調用函數,java中是調用方法)。
需要說明的是,一個對象既不能直接訪問另一個對象內部的數據,也不能讓其他對象訪問自己內部的數據。對象之間的通信都是通過方法調用實現的。通過封裝對象的數據,可以最大限度地提高可重用性,減少數據的依賴性,並將程序的調試時間降到最短。
封裝(encapsulation): 形式上看,封裝不過是將數據和行為結合在一個包中,並對對象使用者隱藏了數據的實現方式。對象中的數據稱為實例域instance field),操作數據的過程稱為方法method)。對於每個特定的類對象實例都有一組特定的實例域值。這些值的集合就是這個對象當前的狀態。實現封裝的關鍵在於,絕對不能讓類中的方法直接訪問其他類的實例域,但可以訪問它自己的實例域。程序僅通過對象的方法和對象數據進行交互。
封裝給予對象“黑盒”的特征,這是提高重用性和可靠性的關鍵。
繼承:類可以通過擴展另一個類來建立。擴展一個已有的類時,新的類具有所擴展的類的全部屬性和方法。
來源:華清遠見嵌入式學院)
本文出自 “嵌入式學習天地” 博客,請務必保留此出處http://farsight.blog.51cto.com/1821374/1300332