面向對象和麪向過程的區別



C是面向過程

C++、 JAVA是面向對象


面向對象和麪向過程的區別


一個博大,一個精深.

總體而言,面向對象簡單,面向過程對人員要求素質過高

面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。


面向對象是把構成問題事務分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。


艾蘭.庫伯的《軟件創新之路》中提到:


面向過程和麪向對象的區別並不像人們想象得那麼大

面向對象的大部分思想在面向過程中也能體現

但面向過程最大的問題(也許是唯一先天的缺陷)在於隨着系統的膨脹,面向過程將無法應付,最終導致系統的崩潰


面向對象的提出正是試圖解決這一軟件危機

目前看來,似乎有一定成效

但仍任重道遠



---------------------------------------------------------------


做一些對比來說吧:


分析 基本構件 方法 工具

---------------------------------

面向過程 基於算法 函數/過程 數據流圖、僞代碼... ...

面向對象 基於對象 類 UML建模... Rose,viso等

---------------------------------------------------------------


其實我始終認爲,不管是面向對象,還是面向過程,都體現了一種軟件重用的思想!

只不過面向過程中重用的是過程和函數,但是面向對象重用的是類,一種將數據和處理數據的過程及函數封裝在一起的實體,其實面向對象中的過程和函數和麪向過程中的分別不是很大,所以數據流圖和僞代碼還是有用的。

面向對象一個很大的好處就是數據 和方法的封裝,由此面向對象的三大特性得到發揮

什麼是面向對象 面向過程 面向事件

2010-06-05 11:26

      面向過程是在面向對象出現之前,以及之後,甚至至今都應用於程序開發中的程序設計思想。

      面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。面向對象是把構成問題事務分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描敘某個事物在整個解決問題的步驟中的行爲。

      如:

      一輛汽車

      用面向過程的思想去考慮它應該是這樣的:如何啓動汽車、如何起步、加速、剎車、熄火等一個個操作。而汽車在這裏並不是我們所關心的。

      而面向對象則以汽車爲對象,一切由汽車開始,以上的可用操作,即功能是汽車這個對象本身所具有的,做任何操作只要告訴汽車就可以了。

     C語言是面向過程的編程,它的最重要特點是函數,通過主函數來調用一個個子函數。程序運行的順序都是程序員決定好了的。

      C++是面向對象的編程,類是它的主要特點,程序執行過程中,先由主函數進入,定義一些類,根據需要,執行類的成員函數,過程的概念被淡化了(實際上過程還是有的,就是主函數的那些語句),類就是對象,所以我們稱之爲面向對象程序設計。

      Visual C++,它是面向事件的編程,程序執行時,不斷檢測有沒有事件(消息)發生,如果有,那麼就看有沒有對應於事件的函數,如果有就執行這個函數。相比之下,它過程式的味道幾乎沒有了,但是實際上也是面向過程的,這個過程就是檢驗有沒有事件,只不過這個過程被隱藏了起來。

      面向過程是把所有的功能全部在一個大的類裏定義出來,當系統龐大時,功能多了,各種操作之間的調用關係也很複雜,當需要修改一個功能時就可能引發一連串的改動,使修改和維護成本很昂貴。

而面向對象,對把功能以對象爲基本單位進行分類:這就是我們在面向對象程序設計中所常說的類了。我們知道在管理中有一種方法叫“授權”,意思是管理者把不同的任務交給相應的人去處理,這樣就把責任分發到相應的負責人,管理者只需要記錄誰負責什麼就可以,哪裏出了問題或是沒有完成任務,就找相應的負責人,只要修改相應的類以及極小部份的其他改動。

      面向對象的思想需要大家在實際工作中去慢慢體會,通過和麪向過程的對比,我們就能發現它的優越性,進而更好地掌握運用。

 

對於類的理解


    面向對象是在分析和解決問題的時候,將涉及的數據和對數據的操作封裝在類中。通過類可以創建對象。比方:可以構建一個Circle類,一個表示圓的類,它是半徑不同的所有的圓的一個抽象的描述。通過類可以創建任意多個對象,這些對象之間是相互獨立的。可以由圓類Circle創建圓c1和圓c2。而c1和c2是彼此獨立的對象。

這樣,對於事物的觀控粒度,由某個具體的對象擴大到一個類。這樣符合人們認識事物的習慣。

public class Circle

{

       private double R;                      // 圓的泛權——半徑

       public void getR(double r)             //設置圓的半徑

   {

         R=r;

   }

   public double getArea()                //求圓的面積

   {

          return 3.14*R*R;

   }

}


面向對象和麪向過程


   1.面向過程程序設計方法的實質上是從計算機處理問題的觀點來進行程序設計工作:輸入——運算——輸出。面向過程程序設計者需要變更習慣的思維方法以貼近計算機的內部工作機理。面向過程程序設計所具有的流的工作性質,試圖通過信息流及其轉換來認識系統,不僅加大了程序設計的難度,同時亦使得程序的可理解性比較差。

面向對象程序設計方法中,一種普遍採用的優化方法是使用結構化的程序設計方法。

面向過程程序設計方法一般適宜採用自上而下的設計方法。

面向過程程序設計方法需要在一開始就全面的,自上而下的設計整個應用程序的架構,因此要求程序設計者對問題域有全面的瞭解。

面向過程程序設計方法很難複用以前已經設計完成的軟件。

2.面向對象程序設計是一種自下而上的程序設計方法,往往從問題的一部分着手,一點一點地構建出整個程序。面向對象設計一數據爲中心,類作爲表現數據的工具,成爲劃分程序的基本單位。

面向對象有以下幾個重要特點:

   (1)客觀世界有對象組成

   (2)對象抽象爲類

   (3)類與類之間存在繼承關係

   (4)對象之間通過傳遞消息而彼此聯繫

 

關於面向過程及面向對象編程

2010-06-10 10:00

 

   從事軟件開發的人可能同時用過面向過程及面向對象的編碼,例如JAVA、C++、C#均是面向對象的語言、C語言是面向過程的語言、PHP既支持面向過程也支持面向對象的功能,面向過程及面向對象均有自己的優缺點,也均有自己的適用範圍。


  面向過程


  優點:性能比面向對象高,因爲類調用時需要實例化,開銷比較大,比較消耗資源;比如單片機、嵌入式開發、Linux/Unix等一般採用面向過程開發,性能是最重要的因素。


  缺點:沒有面向對象易維護、易複用、易擴展


  面向對象


  優點:易維護、易複用、易擴展,由於面向對象有封裝、繼承、多態性的特性,可以設計出低耦合的系統,使系統更加靈活、更加易於維護


  缺點:性能比面向過程低


  面向對象程序設計的一些顯著的特性包括:


  .程序設計的重點在於數據而不是過程;


  .程序被劃分爲所謂的對象;


  .數據結構爲表現對象的特性而設計;


  .函數作爲對某個對象數據的操作,與數據結構緊密的結合在一起;


  .數據被隱藏起來,不能爲外部函數訪問;


  .對象之間可以通過函數溝通;


  .新的數據和函數可以在需要的時候輕而易舉的添加進來;


  .在程序設計過程中遵循由下至上(bottom-up)的設計方法。


  面向對象程序設計在程序設計模式中是一個新的概念,對於不同的人可能意味着不同的內容。我們對面向對象程序設計的定義是"面向對象程序設計是一種方法,這種方法爲數據和函數提供共同的獨立內存空間,這些數據和函數可以作爲模板以便在需要時創建類似模塊的拷貝。這樣的程序設計方法稱爲面向對象程序設計。"


  從以上定義可以看到,一個對象被認爲是計算機內存中的一個獨立區間,在這個區間中保存着數據和能夠訪問數據的一組操作。因爲內存區間是相互獨立的,所以對象可以不經修改就應用於多個不同的程序中。


  什麼是面向對象程序設計?


  面向對象程序設計(OOP)技術汲取了結構化程序設計中好的思想,並將這些思想與一些新的、強大的理念相結合,從而給你的程序設計工作提供了一種全新的方法。通常,在面向對象的程序設計風格中,你會將一個問題分解爲一些相互關聯的子集,每個子集內部都包含了相關的數據和函數。同時,你會以某種方式將這些子集分爲不同等級,而一個對象就是已定義的某個類型的變量。當你定義了一個對象,你就隱含的創建了一個新的數據類型。


  對象


  在一個面向對象的系統中,對象是運行期的基本實體。它可以用來表示一個人或者說一個銀行帳戶,一張數據表格,或者其它什麼需要被程序處理的東西。它也可以用來表示用戶定義的數據,例如一個向量,時間或者列表。在面向對象程序設計中,問題的分析一般以對象及對象間的自然聯繫爲依據。如前所述,對象在內存中佔有一定空間,並且具有一個與之關聯的地址,就像Pascal中的record和 C中的結構一樣。


  當一個程序運行時,對象之間通過互發消息來相互作用。例如,程序中包含一個"customer"對象和一個 "account"對象,而customer對象可能會向account對象發送一個消息,查詢其銀行帳目。每個對象都包含數據以及操作這些數據的代碼。即使不瞭解彼此的數據和代碼的細節,對象之間依然可以相互作用,所要了解的只是對象能夠接受的消息的類型,以及對象返回的響應的類型,雖然不同的人會以不同的方法實現它們。


  類


  我們剛纔提到,對象包含數據以及操作這些數據的代碼。一個對象所包含的所有數據和代碼可以通過類來構成一個用戶定義的數據類型。事實上,對象就是類類型(class type)的變量。一旦定義了一個類,我們就可以創建這個類的多個對象,每個對象與一組數據相關,而這組數據的類型在類中定義。因此,一個類就是具有相同類型的對象的抽象。例如,芒果、蘋果和桔子都是fruit類的對象。類是用戶定義的數據類型,但在一個程序設計語言中,它和內建的數據類型行爲相同。比如創建一個類對象的語法和創建一個整數對象的語法一模一樣。


  數據抽象和封裝


  把數據和函數包裝在一個單獨的單元(稱爲類)的行爲稱爲封裝。數據封裝是類的最典型特點。數據不能被外界訪問,只能被封裝在同一個類中的函數訪問。這些函數提供了對象數據和程序之間的接口。避免數據被程序直接訪問的概念被稱爲"數據隱藏"。


  抽象指僅表現核心的特性而不描述背景細節的行爲。類使用了抽象的概念,並且被定義爲一系列抽象的屬性如尺寸、重量和價格,以及操作這些屬性的函數。類封裝了將要被創建的對象的所有核心屬性。因爲類使用了數據抽象的概念,所以它們被稱爲抽象數據類型(ADT)。


  封裝


  封裝機制將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。它同樣允許創建對象。簡單的說,一個對象就是一個封裝了數據和操作這些數據的代碼的邏輯實體。


  在一個對象內部,某些代碼和(或)某些數據可以是私有的,不能被外界訪問。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程序中無關的部分意外的改變或錯誤的使用了對象的私有部分。


  繼承


  繼承是可以讓某個類型的對象獲得另一個類型的對象的屬性的方法。它支持按級分類的概念。例如,知更鳥屬於飛鳥類,也屬於鳥類。這種分類的原則是,每一個子類都具有父類的公共特性。


  在 OOP中,繼承的概念很好的支持了代碼的重用性(reusability),也就是說,我們可以向一個已經存在的類中添加新的特性,而不必改變這個類。這可以通過從這個已存在的類派生一個新類來實現。這個新的類將具有原來那個類的特性,以及新的特性。而繼承機制的魅力和強大就在於它允許程序員利用已經存在的類(接近需要,而不是完全符合需要的類),並且可以以某種方式修改這個類,而不會影響其它的東西。


  注意,每個子類只定義那些這個類所特有的特性。而如果沒有按級分類,每類都必須顯式的定義它所有的特性。


  多態


  多態是OOP的另一個重要概念。多態的意思是事物具有不同形式的能力。舉個例子,對於不同的實例,某個操作可能會有不同的行爲。這個行爲依賴於所要操作數據的類型。比如說加法操作,如果操作的數據是數,它對兩個數求和。如果操作的數據是字符串,則它將連接兩個字符串。


  多態機制使具有不同內部結構的對象可以共享相同的外部接口。這意味着,雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。多態在實現繼承的過程中被廣泛應用。


  面向對象程序設計語言支持多態,術語稱之爲"one interface multiple method(一個接口,多個實現)"。簡單來說,多態機制允許通過相同的接口引發一組相關但不相同的動作,通過這種方式,可以減少代碼的複雜度。在某個特定的情況下應該作出怎樣的動作,這由編譯器決定,而不需要程序員手工干預。


  在多函數程序中,許多重要的數據被聲明爲全局變量,這樣它們纔可以被所有的函數訪問。每個函數又可以具有它自己的局部變量。全局變量很容易被某個函數不經意之間改變。而在一個大程序中,很難分辨每個函數都使用了哪些變量。如果我們需要修改某個外部數據的結構,我們就要修改所有訪問這個數據的函數。這很容易導致bug的產生。


  在結構化程序設計中,另一個嚴重的缺陷是不能很好的模擬真實世界的問題。這是因爲函數都是面向過程的,而不是真正的對應於問題中的各個元素。


  面向過程的程序設計的一些特點如下:


  .強調做(算法);


  .大程序被分隔爲許多小程序,這些小程序稱爲函數;


  .大多數函數共享全局數據;


  .數據開放的由一個函數流向另一個函數。函數把數據從一種形式轉換爲另一種形式。


  採用由上至下的程序設計方法。


  動態綁定


  綁定指的是將一個過程調用與相應代碼鏈接起來的行爲。動態綁定的意思是,與給定的過程調用相關聯的代碼只有在運行期纔可知。它與多態和繼承的聯繫極爲緊密。一個多態引用的函數調用決定於這個引用的動態類型。


  消息傳遞


  一個面向對象的程序由許多對象組成,這些對象之間需要相互溝通。因此,在面向對象程序設計語言中,程序設計的主要步驟如下:


  1、創建類,這些類定義了對象及其行爲;


  2、由類定義創建對象;


  3、建立對象之間的通訊。


  對象之間通過收發信息相互溝通,這一點類似於人與人之間的信息傳遞。信息傳遞的概念使得真實世界的直接模擬更易於和建立系統交流。


  對於某個特定對象來說,消息就是請求執行某個過程,因此,消息的接收對象會調用一個函數(過程),以產生預期的結果。傳遞的消息的內容包括接收消息的對象的名字,需要調用的函數的名字,以及必要的信息。


  對象就有一個生命週期。它們可以被創建和銷燬。只要對象正處於其生存期,就可以與其進行通訊。


  OOP的優點


  OOP具有許多優點,無論是對於程序設計者或者用戶來說都是如此。面向對象爲軟件產品擴展和質量保證中的許多問題提供瞭解決辦法。這項技術能夠大大提高程序員的生產力,並可提高軟件的質量以及降低其維護費用。其主要的優點陳列於下:


  1、通過繼承,我們可以大幅減少多餘的代碼,並擴展現有代碼的用途;


  2、我們可以在標準的模塊上(這裏所謂的"標準"指程序員之間彼此達成的協議)構建我們的程序,而不必一切從頭開始。這可以減少軟件開發時間並提高生產效率;


  3、數據隱藏的概念幫助程序員們保護程序免受外部代碼的侵襲;


  4、允許一個對象的多個實例同時存在,而且彼此之間不會相互干擾;


  5、允許將問題空間中的對象直接映射到程序中;


  6、基於對象的工程可以很容易的分割爲獨立的部分;


  7、以數據爲中心的設計方法允許我們抓住可實現模型的更多細節;


  8、面向對象的系統很容易從小到大逐步升級;


  9、對象間通訊所使用的消息傳遞技術與外部系統接口部分的描述更簡單;


  10、更便於控制軟件複雜度。


  當需要將以上所說的所有特性有機的結合於一個面向對象系統中,它們之間的相對重要性就取決於工程的類型和程序員的喜好。爲了獲得上述的某些優勢,必須考慮很多事情。例如,對象庫必須可以被重用。技術還在不停的發展,現有的產品也會很快的更新換代。如果重用沒有能夠實現,那麼就需要進行嚴格的控制和管理。


  易於使用的開發軟件往往難以編寫。面向對象程序設計工具有望解決這個問題。


  面向對象程序設計語言


  面向對象技術並不是某個特定語言的特權。如同結構化程序設計一樣,OOP概念可以在很多語言比如C和Pascal中實現。但是,當程序越來越大時,程序設計工作會變得拙劣而混亂。而一個支持OOP概念的程序設計語言則可以讓一切變得簡單。


  一個語言必須支持幾個主要的OOP概念才能稱其是面向對象的。根據所支持的OOP特性,語言可以分爲以下兩類:


  1、基於對象的程序設計語言;


  2、面向對象的程序設計語言。


  基於對象的程序設計語言僅支持封裝和對象辨識。


  一個面向對象的程序設計語言所要支持的重要特性如下:


  .數據封裝


  .數據隱藏和訪問機制


  .對象的自動初始化和清除


  .操作符重載


  支持對象風格程序設計的語言稱爲基於對象的程序設計語言。它們不支持繼承和動態綁定。


  Ada就是一個典型的基於對象的程序設計語言。


  面向對象的程序設計不僅僅包含基於對象程序設計的特性,還支持繼承和動態綁定。


  OOP的應用


  OOP最有前途的應用領域如下:


  1、實時系統;


  2、仿真和建模;


  3、面相對象數據庫;


  4、超文本、超媒體和擴展文本;


  5、AI和專家系統;


  6、神經網絡和並行程序設計;


  7、決策支持和辦公自動化系統;


  8、CIM/CAM/CAD系統。


  Via


  業務邏輯比較簡單的適合用面向過程,例如統計當前在線用戶數,一條SQL語句就可以搞定的沒有多大必要用面向對象,也沒有必要用什麼設計模式,那樣就是簡單問題複雜化了。


  業務邏輯比較複雜的適合用面向對象,這樣當需求有變化時,維護起來會比較方便。


  面向對象的局部是面向過程的,比如某個類裏面某個方法裏面實際就是面向過程的,而面向過程會借用面向對象的一些優點來進行優化。


  網上發現了一篇文章,說了一下OP與OO的不同,並且打了一個比喻,通俗易懂。


  有人這麼形容OP和OO的不同:用面向過程的方法寫出來的程序是一份蛋炒飯,而用面向對象寫出來的程序是一份蓋澆飯。所謂蓋澆飯,北京叫蓋飯,東北叫燴飯,廣東叫碟頭飯,就是在一碗白米飯上面澆上一份蓋菜,你喜歡什麼菜,你就澆上什麼菜。我覺得這個比喻還是比較貼切的。


  蛋炒飯製作的細節,我不太清楚,因爲我沒當過廚師,也不會做飯,但最後的一道工序肯定是把米飯和雞蛋混在一起炒勻。蓋澆飯呢,則是把米飯和蓋菜分別做好,你如果要一份紅燒肉蓋飯呢,就給你澆一份紅燒肉;如果要一份青椒土豆蓋澆飯,就給澆一份青椒土豆絲。


  蛋炒飯的好處就是入味均勻,吃起來香。如果恰巧你不愛吃雞蛋,只愛吃青菜的話,那麼唯一的辦法就是全部倒掉,重新做一份青菜炒飯了。蓋澆飯就沒這麼多麻煩,你只需要把上面的蓋菜撥掉,更換一份蓋菜就可以了。蓋澆飯的缺點是入味不均,可能沒有蛋炒飯那麼香。


  到底是蛋炒飯好還是蓋澆飯好呢?其實這類問題都很難回答,非要比個上下高低的話,就必須設定一個場景,否則只能說是各有所長。如果大家都不是美食家,沒那麼多講究,那麼從飯館角度來講的話,做蓋澆飯顯然比蛋炒飯更有優勢,他可以組合出來任意多的組合,而且不會浪費。


  蓋澆飯的好處就是"菜""飯"分離,從而提高了製作蓋澆飯的靈活性。飯不滿意就換飯,菜不滿意換菜。用軟件工程的專業術語就是"可維護性"比較好,"飯" 和"菜"的耦合度比較低。蛋炒飯將"蛋""飯"攪和在一起,想換"蛋""飯"中任何一種都很困難,耦合度很高,以至於"可維護性"比較差。軟件工程追求的目標之一就是可維護性,可維護性主要表現在3個方面:可理解性、可測試性和可修改性。面向對象的好處之一就是顯著的改善了軟件系統的可維護性。



 

最近打算給開發和QA的同學介紹一下面向對象和UML相關的內容。這是第一篇,介紹主要面向對象的基礎概念和UML類圖的繪製。

概念:類似對象的一種軟件抽象,創建對象的模板。

UML圖:屬性和操作之前可附加一個可見性修飾符。加號(+)表示具有公共可見性。減號(-)表示私有可見性。#號表示受保護的可見性。省略這些修飾符表示具有package(包)級別的可見性。如果屬性或操作具有下劃線,表明它是靜態的。在操作中,可同時列出它接受的參數,以及返回類型。

接口

概念:定義了一套內聚行爲的一個或多個操作特性標記的集合。接口是確保送耦合的一種強大的方法。它們允許類參與一套共同的功能集,除了支持接口意外,不需要別的類知道任何有關他的事情。接口的設計要遵循“接口分離原則”,參見什麼是面相對象設計的SOLID原則(s)

UML圖:接口的UML圖展現的樣式會有幾種變化,但內容都是一樣的。

注:在StarUML中可以通過選擇Interface元素的Format->【Stereotype Display】、【Suppress Attributes】、【Suppress Operations】來調整。

聯繫(Association)

概念:實體之間的一個結構化關係表明對象是相互連接的。箭頭是可選的,它用於指定導航能力。如果沒有箭頭,暗示是一種雙向的導航能力。

UML圖:

方向性。開口箭頭指出關聯的方向。只有一個開口箭頭的關聯是單向的:它僅可以在一個方向(箭頭的方向)上移動。沒有箭頭時,表示關聯是可以在兩個方向上移動。

標籤。標籤是可選的,一般有一到兩個詞組成,用來描述關聯。

多重性(Multiplicity)。關聯的多重性在線的兩端標出,每個方向有一個多重性指示器。

聚合(Aggregation)

概念:有時對象會有其他對象組成。例如,飛機由機身、機翼、引擎、起落架等組成。這些全部都是聚合這個概念的例子,它表示“is part of”關係。

UML圖:

 

class Node { private: vector<Node*> itsNodes; };

上述代碼只有當子節點不會成爲父節點的父節點時(即,必須是樹結構,不能是圖結構),才能稱之

爲聚合。

組合(Composition)

概念:組合是更強形式的聚合,其中“整體”負責部分,每個“部分”對象也僅與一個整體對象聯繫。例如,

在任何給定時間,引擎是且僅是飛機的一部分。而且,除了飛機以外,其他對象都不能直接與引擎對象發

生交互。

UML圖:

class Car { public: virtual ~Car() {delete itsCarb;} private: Carburetor* itsCarb };

依賴(Dependency)

概念:對象之間存在臨時關係,只有一個原因,它們可能會相互協作。一個對象與另一個對象進行協作,它需要了解這個對象。這意味着兩個對象之間必須存在對象關係或part-of關係。當兩個對象之間不存在持久關聯的時候,我們需要在兩個類之間建立依賴。

UML圖:

泛化(Generalization)

概念:表示一個更泛化的元素和一個更具體的元素之間的關係。

UML圖:

AbstractKmsTheme被標記爲抽象的(名字是斜體)。

實現(Realization)

概念:指定兩個實體之間的一個合同。換言之,一個實體定義一個合同,而另一個實體保證履行該合同。

UML圖

總結面向對象的概念和術語彙總表

術語 描述

Abstract Class抽象類 不能實例化的類

Abstraction抽象 一個項目(可能是類或者操作)的本質特徵

Aggregation聚合 兩個類或者組件之間的關係,定義爲“is part of”

Association關聯 兩個類或者對象之間的關係

Attribute屬性 類瞭解的東西(數據/信息)

Cardinality基數 表示“有多少”的概念

Class類 類似對象的一種軟件抽象,創建對象的模板

Cohesion內聚 封裝單元(如組件或者類)的相關程度

Component組件 一種內聚功能單元,可以獨立開發、發佈、由其他組件編輯組成更大的單元。

Composition組合 強類型的聚合,其中“整體”完全負責各個組成部分,每個部分對象僅與一個“整體”對象相關聯

Concrete Class具體類 可以從中實例化對象的類

Coupling耦合 兩個項目之間的依賴程度

Generalization泛化 表示一個更泛化的元素和一個更具體的元素之間的關係。

Inheritance繼承 定義爲“is a”或者“is like”的關係

Instance實例 一個對象,它是某個類的一個示例

Instantiate實例化 從類定義中創建對象

Interface接口 定義了一套內聚行爲的一個或多個操作特性標記的集合

Message消息 請求星系或者執行任務

Messaging消息傳遞 對象之間通過發送消息相互協作的過程

Method方法 有執行值操作的類實現的一個過程(與結構化編程中的函數相似)

Multiple Inheritance多重繼承 直接繼承自一個以上的類

Object對象 基於類定義的人物、地點、事件、事物等等

Optionality選擇性 概念“你需要它嗎?”

Override 在子類中重新定義屬性和/或方法,以使它們與父類中的定義有區別

Pattern 在考慮相關因素的情況下,通用問題的一個可行性解決方案

Polymorphism多態 不同的對象可以以不同的方式響應同一消息,使對象可以交互而不需要知道確切的類型

Property 在UML2中,是一個命名的值,例如,屬性和關聯,包括組合,指定元素(例如類或者組件)的一個特徵。在Java中,屬性的組合包括Getter和Setter

Single Inheritance多重繼承 僅從一個類直接繼承

Stereotype構造型 建模元素的一種通用用法

Subclass子類 繼承自另一個類的類

Superclass父類 另一個類從中繼承的類


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