物件導向的特徵,物件導向特徵
在UML中,瞭解到了物件導向,所以對物件導向有個初步的認識,為以後能夠更加方便的理解物件導向打下一個好的基礎。
抽象、封裝、繼承和多態,這是物件導向技術的四大基本特徵,也是物件導向程式設計思想的組成。正是這些特徵,使得程式的安全性、可靠性和可重用性得到保證,並且經過發展,物件導向的思想應用範圍更加廣泛,不光是軟體,在硬體、人工智慧、分散式運算、作業系統等領域的應用也越來越重要。
抽象
抽象可以忽略事物中與當前目標無關的非本質特徵、強調與當前目標有關的特徵。比如地球儀,我們的目標是通過地球儀來認識地球的全貌,而不考慮地球儀上的部分與地球對應部分的比例是多少。這隻是一個地球的模型,抽象的模型越簡單、展露的特點越少,模型就越通用。我們通過觀察地球儀,可以找到大家公認的七大洲四大洋,並不一定要知道每個大洲或大洋的具體模樣,在地球儀上都有,隨便一看就可以分辨出來。
抽象也可以對資訊進行分類處理,將對象按照一定的標準進行劃分,實現抽象模型的階層,更加通用和易處理。這樣,抽象出來的類就為對象的重用提供了保障。
封裝
把對象的狀態和行為綁到一起的機制,使對象形成一個獨立的整體,並且儘可能的隱藏對象的內部細節。封裝的資訊屏蔽作用反應了事物的相對獨立性,協助保護資料的完整性。綁定有兩個含義:一時把對象的全部狀態和行為結合在一起,形成一個不可分割的整體。對象的私人屬性只能夠由對象的行為來修改和讀取;二是儘可能隱蔽對象的內部細節,與外界的聯絡只能通過外部介面來實現。封裝的結果是使對象以外的部分不能隨意更改對象的內部屬性或狀態,可以通過公用存取控制器來控制對象封裝了的屬性或狀態的改變。
在物件導向的程式設計中,不能一味的限制對象的屬性被外部直接讀取,否則將增加很多無用的操作,要對對象的屬性進行分析後再設定。
繼承
各種事物之間不光有它們的共性,還有各個事物自己的特性,如果忽略了事物的特性,那麼世界就會變得一層不變,失去了特色的精彩世界。事物的各自的特色和個性是這個層次的世界穩固的原因,這些特色也是來區別事物共性的部分,相輔相成。
與抽象對比,抽象是把事物間的特性捨棄,抽象出事物間的共性成為一個類;而繼承則是提取了事物間的不同特性形成的多個類,這個類具有前一個類的全部特徵,是前一個類的子集,形成了一個層次的結構。這樣就可以看出,繼承和抽象是兩個相逆的過程,抽象是從多個對象中抽象出來了共性的類,是一個由多到少的過程;繼承則是從對象類中分層為多個具有自己特性的子類,是一個由少到多的過程。
特別的,繼承意味著“自動擁有”,即在特殊類中不必重新對已經存在一般類中的所定義過的屬性和行為進行定義,而是特殊類自動的,隱含的擁有其一般類的屬性和行為,且繼承後這些屬性和行為都是自己確實存在的。一般類稱為基類,特殊類稱為衍生類別。以為例,小學生和中學生,大學生,研究生這四個特殊類是學生類這個一般類的子類,也是從學生類中繼承來的新類,它們自動的擁有了所有屬於學生類的屬性和方法,而同時它們又有自己的特性,不用再重新定義在學生類中已經定義過的屬性和方法。學生類是基類,小學生等類是衍生類別。
繼承在物件導向軟體的開發過程中有如下目的,或者可以說是優勢:1.對類的描述更加簡潔;2.能夠重用和擴充現有類庫資源;3.是軟體易於維護和修改。
多態
多態是指兩個或多個屬於不同類的對象,對於同一個訊息或方法調用所作出的不同相應的能力。在物件導向的程式設計中,多態性是指在兩個或多個屬於不同類的同一函數名對應於多個具有相似功能的不同函數,可以使用相同的調用方式來調用這些具有不同功能的同名函數。這個可以這樣理解,在一個圖形的基類中有一個方法是畫圖,衍生類別矩形和衍生類別橢圓中也有畫圖的方法,但是通過同一個畫圖動作,矩形類畫出來的圖形是矩形,橢圓中畫圖畫出來的是橢圓。
繼承性和多態性的結合,實現了軟體的個人化設計。物件導向中的抽象和繼承更加重要,對物件導向的理解非常有協助,當對物件導向陌生的時候可以以這兩個為突破點,全面理解物件導向。