Java物件導向概述

azz發表於2007-08-24
Java物件導向概述[@more@]  (如今的程式領域,大家都在說,物件導向OOP,但是真正能理解物件導向的含義的程式設計師卻很少,究竟什麼是物件,怎樣物件導向)

  一.物件導向:

  1.何謂物件:在物件導向程式設計中,我們將問題空間中的元素以及他們在方案空間中的的表示物稱作物件(object)
   Alan Kay總結了smalltalk中物件的5大基本特徵:
  所有的東西都是物件。
  程式是一大堆物件的集合,他們透過訊息傳遞,各個物件之間知道要做些什麼。
  每個物件都分配有自己的儲存空間,可容納其他物件。
  每個物件都有一個型別。
  同一類的所有物件能接收相同的訊息。
   -----而所有的程式語言的最終目的是提供一種抽象方法----

  2.物件的介面:我們向物件發出請求是透過它的介面定義的,物件的型別決定了它的介面形式。

  3.OOP中唯一關心的: 就是介面是什麼,就像汽車的發動機一樣,我們不必要知道它的結構是什麼,只要它能工作就行了。所有的程式是由一定的屬性(資料)和行為(方法)組成的,不同的物件訪問透過函式呼叫來完成,物件間的所有交流都是透過方法呼叫,透過對封裝資料物件,很大程度上提高複用率。

  4.物件的3個主要特徵:
   behavior—說明這個物件能做什麼。
   State—當物件施加方法時物件的反映。
   Identity---與其他相似行為物件的區分標誌,每一個物件有唯一的indentity, 而這3者是相互影響的。

  5.物件導向中最重要的思想 就是類,類是模板是藍圖,從類中構造一個物件,即建立了一個類的例項。(類好比一個建材市場,其中有許多子類--各種各樣的裝飾材料,而我們裝修自己的房子就要選擇我們需要的材料,(為了建立我們自己的程式,我們必須選 擇我們需要的類)這個比喻可以很形象的解釋類是什麼。

  6.類之間的關係:
   依賴關係:use-a A類中的一個方法操作了另一個類中的物件。
   聚合關係:has-a A類中的物件包含B類的物件。
   繼承關係:is-a A繼承了B類,此時A類不僅有了B類的方法,還加入了自己的方法。以便我們建立我們自己需要的物件。
  Java中定義的每一個類都必須繼承另一個類,使用關鍵字extends,如果一個類在定義中不現實使用關鍵字extends,這個類就會隱式繼承Object類。Object類又叫根超類,或基類。,我們從根超類繼承來的叫子類。Java中每個類都是根超類的子類。

  8.介面(interface)規定了可對特定的物件發出哪些請求。

  9.繼承=重新使用介面:建立出一個資料型別後,當需要新建立一個資料型別去實現相同的功能,是很沒有意義的一件事,此時對其克隆後,再根據情況改進實現自己的目的就是繼承。

  10.封裝:就是把資料和行為結合在一起在一個包中,並對物件使用者隱藏資料的實現過程。Java用3個關鍵字來設定邊界,從而進行對資料的隱藏。Public(共有)的定義任何人都可使用.private(私有)意味著除你自己,型別建立者及那個型別的內部函式成員可以訪問外其他任何人使用都會產生錯誤。Friendly(友好)
  意味在包(package)中是可以訪問的。(以上過程也可叫方案隱藏)

  11.引用(Handle)操控物件:
   當建立一個引用時必須要對其進行初始化
   例: String s=”happy”(未建立連線)
   String s=new string(“happy”)與一個新的物件連線使用new 。此句建立了一個引用,並且連線引用並初始化物件 賦值字串“happy”.

  12.物件的建立及存在時間:資料存放的地點
   1:暫存器-速度快,數量少,在cpu內部,我們對暫存器沒有控制權。
   2:堆疊:駐留長規記憶體中,堆疊指標下移建立新的記憶體,上移釋放記憶體。
   3:堆:常用記憶體池,儲存物件,有極大的靈活性,java的資料就存放在此,但是要以時間及效率為代價。Java的物件建立是在程式執行時才決定。而c++是在設計時建立物件。
  物件的生存時間(lifetime)java提出的垃圾收集器可以很好的發現無須再用的物件,使用GC(grabage collector)垃圾收集器。清除物件,釋放記憶體。
  為此我們就要付出一定的執行期的開銷。

  13.在此我們就會有這樣一個印象,一個程式只是一系列物件的集合,他們的方法將其他物件作為自己的變數使用.

  14.主要型別: java的主要型別有:boolean,char,byte,short,int,long,float,double,void.這些主型別的大小都不隨機器的結構變化而變化,提供了java很好的可移植性.

  15.欄位方法:欄位又叫資料成員,成員函式又叫方法,java的全部工作就是定義類,製作累得物件及傳送訊息.

  16.一個程式只是一系列物件的集合,他們的方法將其他的物件作為自己的變數使用,而且將訊息發給那些物件.

  17.名字的可見性:為了使名字不重複,作者可以定義自己的庫,一般用自己域名的倒寫形式 如: COM.:Leeak.utility.foidles

  18.static關鍵字:即使沒有建立物件,也需要一愕能呼叫的方法,此時可以使用static

  19.java.lang預設自動的匯入每個java程式中

  20.OOP中物件使對屬性和方法的封裝,物件具有資訊的隱蔽的性質,對細節的隱藏,物件只需要知道去這樣做,而不知道如何做的細節,類的方法應謹慎控制對java資料的訪問,可以用get讀取方法,用set修改方法.

  21:pakage:Java API中每個類和介面屬於一個特定的包,包實際上市對類和介面進行組織的目錄結構,提供了一種軟體複用機制.

  22.建立可複用的類得步驟:1.定義一個public類
   2.選擇一個包名,並把pakage語句加到可複用的類的原始碼中.
   3.編譯這個類.
   4.把可複用的類匯入其他程式中即可.
  23.java中提出在類定義的括號外的僅有2個語句,pakage和import.

  24.軟體的複用性,軟體的複用性就是利用紫的已有的,定義良好的的經過仔細測試的文件清晰的可移植的易於獲得的軟體構件開發新的軟體.

  以上就是java物件導向的一些基本術語的概述,其中的有些部分可以擴充套件的更深,看過think in java的 朋友就會有此種感覺.此文章向對初學者闡述了物件導向的基本概念.對已是java程式設計師的朋友可以對他們的基本知識做以回顧.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965646/,如需轉載,請註明出處,否則將追究法律責任。

相關文章