1對象導論-Java編程思想

所有的編程語言都提供抽象機制。人們解決問題的複雜性直接取決於抽象的類型和質量。彙編語言的抽象層次是對底層機器的輕微抽象。命令式語言如c,basic都是對彙編語言的抽象。它們主要的抽象要求解決問題仍要基於計算機的結構。程序員必須建立機器模型和實際問題之間的關聯。建立這種映射關係昂貴複雜。另外一些語言是對針對待解問題建模,對特定的問題能表現優秀,超出範圍力不從心。

面向對象不會受限於特定類型的問題。我們將問題空間的元素及其在解空間的表示成爲對象。oop允許根據問題來描述問題,而不是根據解決方案來描述問題。但是它與計算機還是有某種聯繫,每個對象具有狀態和操作。用戶可以要求對象執行,與現實世界的對象相符合。

面向對象的特點,總結來說是對象具有狀態,行爲,標示:萬物皆爲對象,可以存儲數據和執行操作;程序是對象的集合,彼此發送消息告知要做的;每個對象都有自己的由其他對象所構成的存儲,可以在程序中構建複雜的體系,同時將複雜性隱藏在對象的簡單性背後;每個類都擁有類型,每個類區分其他類的特性就是可以發送怎樣的消息給它;某一類特定的類型的所有對象可以接受相同的消息。每個對象擁有內部數據(它們給出了對象的狀態)和方法(它們產生行爲),每個對象都可以跟其他對象區分,具體而言就是每個對象都有唯一的地址。

創建抽象的數據類型(類)是面向對象程序設計的基本慨念之一。我們可以穿件某一累心的變量即對象或實例。類描述了具有相同特性(數據元素)和行爲(功能)的對象集合。程序通過定義類來適應問題。

訪問控制讓程序員去接觸該初級的,對於不該觸及的地方無法觸及。不用擔心數據被觸及,可以改變類內部工作方式。訪問限定詞public,protected,private,包訪問權限。

複用具體表現形式:直接使用類的一個對象,可以將類置於新類中,這種方式又較爲組合,has a。

另一種複用,繼承,子類與基類具有相同的類型。有兩種方式讓基類和導出類產生差異。直接在類中添加新方法,向基類中添加新方法。

不在子類中添加新方法,實際是純粹替代,is-a關係。另外一種在子類中添加方法,基類無法訪問到新的方法,is-like-a的關係,新類型具有舊類型的接口,還有其他的方法。

對於非面向對象,編譯器產生的函數調用時前期綁定,即將調用的解析到將要執行的代碼絕對地址。對於面向對象,只有程序運行時才能確定代碼地址。後期綁定。當面向對象發送消息時候,被調用的代碼只有運行時候才能確定。編譯器確保調用方法的存在,並對調用參數和返回值進行檢查,但並不知道執行的確切代碼。

爲了執行後期綁定,Java用特殊的代碼來替代絕對地址的調用。使用對象中存儲的信息計算方法體中的地址。

對於Java而言,所有的類都繼承與object。單根繼承。垃圾回收,系統級操作如異常處理有較多優勢。

容器:不同的容器提供不同類型的接口和行爲。不同的容器對於某些操作有不同的效率。

參數化類型:一般而言向上轉型是安全的。向下轉型使用參數化類型機制,範型。

對象的創建和生命期:對象的創建和銷燬需要對內存處理。C++覺得效率是最重要的一體,對象的存儲空間和生命週期可以在編寫程序時候確定。有的時候這些控制非常有價值,但是犧牲了靈活。必須在編寫的時候確切的知道數量、生命週期和類型。C++需要用編程的方式確定何時銷燬對象,容易出現內存泄露。Java垃圾回收機制,自動發現和銷燬。

異常處理:很多語言交給程序員處理,依賴於程序員的警惕性。異常是一種對象,從出錯的地點被拋出,並被專門設計用來處理特定類型錯誤的異常處理器捕獲,異常處理是與程序正常執行路徑並行的,發生錯誤的時候執行的路徑。有助於編寫健壯性的程序。

cs/bs架構核心思想:系統有一箇中央信息存儲池,用來存儲某種數據,通常存儲於數據庫中(也可以根據需要把它分發給機器集羣)。這種模式的關鍵在於信息存儲池位於中央,可以根據需要把它修改,並傳播給消費者。可能會涉及到數據庫管理系統,把數據均衡的分佈在表中以取得最優秀的使用效果。同時也有事務處理,即一個客戶插入新的數據不會影響另外一個客戶插入的,也不會在同時操作過程出現數據丟失。任何時刻都會有成千上萬的客戶向服務器發送請求,任何小的延遲都會有重大影響。爲了將延遲最小化,需要減輕處理任務的負載,通常是分散給客戶端機器處理,有時候也用中間件將負載分散給服務器端的其他機器。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章