天天看點

程式設計思想+++++精華

 面向對象的軟體開發中九個最基本的概念:類、對象、屬性、方法、抽象、封裝、繼承、多态,以及事件。

一、面向對象的基本概念      (1)對象。

      對象是人們要進行研究的任何事物,從最簡單的整數到複雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。

      (2)對象的狀态和行為。

      對象具有狀态,一個對象用資料值來描述它的狀态。

      對象還有操作,用于改變對象的狀态,對象及其操作就是對象的行為。

      對象實作了資料和操作的結合,使資料和操作封裝于對象的統一體中

      (3)類。

      具有相同或相似性質的對象的抽象就是類。是以,對象的抽象是類,類的具體化就是對象,也可以說類的執行個體是對象。

      類具有屬性,它是對象的狀态的抽象,用資料結構來描述類的屬性。

      類具有操作,它是對象的行為的抽象,用操作名和實作該操作的方法來描述。

      (4)類的結構。

      在客觀世界中有若幹類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般--具體結構關系,整體--部分結構關系。

      ①一般——具體結構稱為分類結構,也可以說是“或”關系,或者是“is a”關系。

      ②整體——部分結構稱為組裝結構,它們之間的關系是一種“與”關系,或者是“has a”關系。

      (5)消息和方法。

      對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的資訊。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。

      類中操作的實作過程叫做方法,一個方法有方法名、參數、方法體。消息傳遞如圖10-1所示。

二、面向對象的特征

      (1)對象唯一性。

      每個對象都有自身唯一的辨別,通過這種辨別,可找到相應的對象。在對象的整個生命期中,它的辨別都不改變,不同的對象不能有相同的辨別。

      (2)分類性。

      分類性是指将具有一緻的資料結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關内容。任何類的劃分都是主觀的,但必須與具體的應用有關。

      (3)繼承性。

      繼承性是子類自動共享父類資料結構和方法的機制,這是類之間的一種關系。在定義和實作一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的内容作為自己的内容,并加入若幹新的内容。

      繼承性是面向對象程式設計語言不同于其它語言的最重要的特點,是其他語言所沒有的。

      在類層次中,子類隻繼承一個父類的資料結構和方法,則稱為單重繼承。

      在類層次中,子類繼承了多個父類的資料結構和方法,則稱為多重繼承。

      在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是資訊組織與分類的行之有效的方法,它簡化了對象、類的建立工作量,增加了代碼的可重性。

      采用繼承性,提供了類的規範的等級結構。通過類的繼承關系,使公共的特性能夠共享,提高了軟體的重用性。

      (4)多态性(多形性)

      多态性使指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一消息可以産生不同的結果,這種現象稱為多态性。

      多态性允許每個對象以适合自身的方式去響應共同的消息。

      多态性增強了軟體的靈活性和重用性。

三、面向對象的要素

      (1)抽象。

      抽象是指強調實體的本質、内在的屬性。在系統開發中,抽象指的是在決定如何實作對象之前的對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細節。

      類實作了對象的資料(即狀态)和行為的抽象。

      (2)封裝性(資訊隐藏)。

      封裝性是保證軟體部件具有優良的子產品性的基礎。

      面向對象的類是封裝良好的子產品,類定義将其說明(使用者可見的外部接口)與實作(使用者不可見的内部實作)顯式地分開,其内部實作按其具體定義的作用域提供保護。

      對象是封裝的最基本機關。封裝防止了程式互相依賴性而帶來的變動影響。面向對象的封裝比傳統語言的封裝更為清晰、更為有力。

      (3)共享性

      面向對象技術在不同級别上促進了共享

      同一類中的共享。同一類中的對象有着相同資料結構。這些對象之間是結構、行為特征的共享關系。

      在同一應用中共享。在同一應用的類層次結構中,存在繼承關系的各相似子類中,存在資料結構和行為的繼承,使各相似子類共享共同的結構和行為。使用繼承來實作代碼的共享,這也是面向對象的主要優點之一。

      在不同應用中共享。面向對象不僅允許在同一應用中共享資訊,而且為未來目标的可重用設計準備了條件。通過類庫這種機制和結構來實作不同應用中的資訊共享。

      4.強調對象結構而不是程式結構

四、面向對象的開發方法

      目前,面向對象開發方法的研究已日趨成熟,國際上已有不少面向對象産品出現。面向對象開發方法有Coad方法、Booch方法和OMT方法等。

      1.Booch方法

      Booch最先描述了面向對象的軟體開發方法的基礎問題,指出面向對象開發是一種根本不同于傳統的功能分解的設計方法。面向對象的軟體分解更接近人對客觀事務的了解,而功能分解隻通過問題空間的轉換來獲得。

      2.Coad方法

      Coad方法是1989年Coad和Yourdon提出的面向對象開發方法。該方法的主要優點是通過多年來大系統開發的經驗與面向對象概念的有機結合,在對象、結構、屬性和操作的認定方面,提出了一套系統的原則。該方法完成了從需求角度進一步進行類和類層次結構的認定。盡管Coad方法沒有引入類和類層次結構的術語,但事實上已經在分類結構、屬性、操作、消息關聯等概念中展現了類和類層次結構的特征。

      3.OMT方法

      OMT方法是1991年由James Rumbaugh等5人提出來的,其經典著作為“面向對象的模組化與設計”。

      該方法是一種新興的面向對象的開發方法,開發工作的基礎是對真實世界的對象模組化,然後圍繞這些對象使用分析模型來進行獨立于語言的設計,面向對象的模組化和設計促進了對需求的了解,有利于開發得更清晰、更容易維護的軟體系統。該方法為大多數應用領域的軟體開發提供了一種實際的、高效的保證,努力尋求一種問題求解的實際方法。

      4.UML(Unified Modeling Language)語言

      軟體工程領域在1995年~1997年取得了前所未有的進展,其成果超過軟體工程領域過去15年的成就總和,其中最重要的成果之一就是統一模組化語言(UML)的出現。UML将是面向對象技術領域内占主導地位的标準模組化語言。

UML不僅統一了Booch方法、OMT方法、OOSE方法的表示方法,而且對其作了進一步的發展,最終統一為大衆接受的标準模組化語言。UML是一種定義良好、易于表達、功能強大且普遍适用的模組化語言。它融入了軟體工程領域的新思想、新方法和新技術。它的作用域不限于支援面向對象的分析與設計,還支援從需求分析開始的軟體開發全過程。

五、面向對象的模型

·對象模型

      對象模型表示了靜态的、結構化的系統資料性質,描述了系統的靜态結構,它是從客觀世界實體的對象關系角度來描述,表現了對象的互相關系。該模型主要關心系統中對象的結構、屬性和操作,它是分析階段三個模型的核心,是其他兩個模型的架構。

      1.對象和類

      (1) 對象。

      對象模組化的目的就是描述對象。

(2) 類。

      通過将對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。

(3) 屬性。

      屬性指的是類中對象所具有的性質(資料值)。

      (4) 操作和方法。

      操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目标對象作為其隐含參數。

  方法是類的操作的實作步驟。

      2.關聯和鍊

      關聯是建立類之間關系的一種手段,而鍊則是建立對象之間關系的一種手段。

      (1) 關聯和鍊的含義。

      連結清單示對象間的實體與概念聯結,關聯表示類之間的一種關系,鍊是關聯的執行個體,關聯是鍊的抽象。

(2) 角色。

      角色說明類在關聯中的作用,它位于關聯的端點。

      (3) 受限關聯。

      受限關聯由兩個類及一個限定詞組成,限定詞是一種特定的屬性,用來有效的減少關聯的重數,限定詞在關聯的終端對象集中說明。

      限定提高了語義的精确性,增強了查詢能力,在現實世界中,常常出現限定詞。

(4) 關聯的多重性。

      關聯的多重性是指類中有多少個對象與關聯的類的一個對象相關。重數常描述為“一”或“多”。

      圖10-8表示了各種關聯的重數。小實心圓表示“多個”,從零到多。小空心圓表示零或一。沒有符号表示的是一對一關聯。

3.類的層次結構

      (1) 聚集關系。

      聚集是一種“整體-部分”關系。在這種關系中,有整體類和部分類之分。聚集最重要的性質是傳遞性,也具有逆對稱性。

聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來将部分類聯系起來簡單得多,對象模型應該容易地反映各級層次,圖10-10表示一個關于微機的多極聚集。

       (2)一般化關系。

      一般化關系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是“一般---具體”的關系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了交類的性質,而各子類的一些共同性質和操作又歸納到你類中。是以,一般化關系和繼承是同時存在的。一般化關系的符号表示是在類關聯的連線上加一個小三角形,如圖10-11

4.對象模型

      (1)模闆。模闆是類、關聯、一般化結構的邏輯組成。

      (2)對象模型。

      對象模型是由一個或若幹個模闆組成。模闆将模型分為若幹個便于管理的子塊,在整個對象模型和類及關聯的構造塊之間,模闆提供了一種內建的中間單元,模闆中的類名及關聯名是唯一的。

面向對象就是你走在馬路上找一個比你壯很多的人,然後死命的頂着他

面向過程就是當他發現你死命的頂着他的時候 ,給他一拳

面向結果就是你被送到醫院

(1)面向過程:BASIC、Pascal、FORTRAN、C等。

(2)面向對象:C++ 、 Java、Visual Basic等。

語言處理程式機器語言是計算機唯一能接受和執行的語言,即計算機隻能執行機器語言程式,用彙編語言或進階語言編寫的源程式,必須翻譯成機器可執行的機器語言程式。把用彙編語言或進階語言編寫的源程式翻譯成機器可執行的機器語言程式的工具稱為"語言處理程式"。語言處理程式包括彙程式設計式、解釋程式和翻譯程式。

(1)彙程式設計式:是把用彙編語言寫的彙編語言源程式翻譯成機器可執行的由機器語言表示的目标程式的翻譯程式,其翻譯過程叫彙編。

(2)解釋程式:接受用某種程式設計語言(如Basic語言)編寫的源程式,然後對源程式的每個語句逐句進行解釋并執行,最後得出結果。

(3)編譯程式:是将用進階語言所編寫的源程式翻譯成與之等價的用機器語言表示的目标程式的翻譯程式,其翻譯過程稱為編譯。

繼續閱讀