OOA - OOD - OOP 簡介

來源:互聯網
上載者:User

標籤:

OOA - OOD - OOP 簡介 一. OOA
  1. OOA : (Object-Oriented Analysis, 物件導向分析方法) 。
  • 是在一個系統的開發過程中進行了系統業務調查以後,按照物件導向的思想來分析問題。OOA與結構化分析有較大的區別。OOA所強調的是在系統調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是對管理業務現狀和方法的分析。
  • OOA(物件導向的分析)模型由5個層次(主題層、對象類層、結構層、屬性層和服務層)和5個活動(標識對象類、標識結構、定義主題、定義屬性和定義服務)組成。在這種方法中定義了兩種對象類之間的結構,一種稱為分類結構,一種稱為組裝結構。分類結構就是所謂的一般與特殊的關係。組裝結構則反映了對象之間的整體與部分的關係。
  • OOA在定義屬性的同時,要識別執行個體串連。執行個體串連是一個執行個體與另一個執行個體的映射關係。
  • OOA在定義服務的同時要識別訊息串連。當一個對象需要向另一對象發送訊息時,它們之間就存在訊息串連。
  • OOA 中的5個層次和5個活動繼續貫穿在OOD(畫向對象的設計)過程中。OOD模型由4個部分組成。它們分別是設計問題域部分、設計人機互動部分、設計任務管理部分和設計資料管理部分。
  1. OOA 的主要原則
  • (1)抽象

    • 第一, 不需要瞭解和描述它們的一切,只需要分析研究其中與系統目標有關的事物及其本質性特徵。
    • 第二, 通過捨棄個體事物在細節上的差異,抽取其共同特徵而得到一批事物的抽象概念。
    • 抽象是物件導向方法中使用最為廣泛的原則。抽象原則包括過程抽象和資料抽象兩個方面。

      • 過程抽象是指,任何一個完成確定功能的操作序列,其使用者都可以把它看作一個單一的實體,儘管實際上它可能是由一系列更低級的操作完成的。
      • 資料抽象是根據施加於資料之上的操作來定義資料類型,並限定資料的值只能由這些操作來修改和觀察。資料抽象是OOA的核心原則。它強調把資料(屬性)和操作(服務)結合為一個不可分的系統單位(即對象),對象的外部只需要知道它做什麼,而不必知道它如何做。
  • (2)封裝就是把對象的屬性和服務結合為一個不可分的系統單位,並儘可能隱蔽對象的內部細節。
  • (3)繼承:特殊類的對象擁有的其一般類的全部屬性與服務,稱作特殊類對一般類的繼承。
  • (4)分類:就是把具有相同屬性和服務的對象劃分為一類,用類作為這些對象的抽象描述。分類原則實際上是抽象原則運用於對象描述時的一種表現形式。
  • (5)彙總:又稱組裝,其原則是:把一個複雜的事物看成若干比較簡單的事物的組裝體,從而簡化對複雜事物的描述。
  • (6)關聯:是人類思考問題時經常運用的思想方法:通過一個事物聯想到另外的事物。能使人發生聯想的原因是事物之間確實存在著某些聯絡。
  • (7)訊息通訊:這一原則要求對象之間只能通過訊息進行通訊,而不允許在對象之外直接地存取對象內部的屬性。通過訊息進行通訊是由於封裝原則而引起的。在OOA中要求用訊息串連表示出對象之間的動態聯絡。
  • (8)粒度控制:一般來講,人在面對一個複雜的問題域時,不可能在同一時刻既能縱觀全域,又能洞察秋毫。因此需要控制自己的視野:考慮全域時,注意其大的組成部分,暫時不詳察每一部分的具體的細節;考慮某部分的細節時則暫時撇開其餘的部分。這就是粒度控制原則。
  • (9)行為分析:現實世界中事物的行為是複雜的。由大量的事物所構成的問題域中各種行為往往相互依賴、相互交織。
  1. OOA的主要優點
  • (1)加強了對問題域和系統責任的理解;
  • (2)改進與分析有關的各類人員之間的交流;
  • (3)對需求的變化具有較強的適應性;
  • (4)支援軟體複用。
  • (5)貫穿軟體生命週期全過程的一致性。
  • (6)實用性;
  • (7)有利於使用者參與。
  1. OOA方法的基本步驟
  • 在用OOA具體地分析一個事物時,大致上遵循如下五個基本步驟:

    • 第一步,確定對象和類。這裡所說的對象是對資料及其處理方式的抽象,它反映了系統儲存和處理現實世界中某些事物的資訊的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。
    • 第二步,確定結構(structure)。結構是指問題域的複雜性和串連關係。類成員結構反映了泛化-特化關係,整體-部分結構反映整體和局部之間的關係。
    • 第三步,確定主題(subject)。主題是指事物的總體概貌和總體分析模型。
    • 第四步,確定屬性(attribute)。屬性就是資料元素,可用來描述對象或分類結構的執行個體,可在圖中給出,並在對象的儲存中指定。
    • 第五步,確定方法(method)。方法是在收到訊息後必須進行的一些處理方法:方法要在圖中定義,並在對象的儲存中指定。對於每個對象和結構來說,那些用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的儲存中定義的,但並不在圖上給出),而有些則是顯示的。
二. OOD
  1. OOD: (Object-Oriented Design,物件導向設計) 。

    • 方法是OO方法中一個中間過渡環節。其主要作用是對OOA分析的結果作進一步的正常化整理,以便能夠被OOP直接接受。
    • 物件導向設計(OOD)是一種軟體設計方法,是一種工程化規範。這是毫無疑問的。按照Bjarne Stroustrup的說法,物件導向的編程範式(paradigm)是Stroustrup, 97:

       1 決定你要的類;

       2 給每個類提供完整的一組操作;

       3 明確地使用繼承來表現共同點。

    • 由這個定義,我們可以看出:OOD就是“根據需求決定所需的類、類的操作以及類之間關聯的過程”。 -  OOD的目標是管理程式內部各部分的相互依賴。為了達到這個目標,OOD要求將程式分成塊,每個塊的規模應該小到可以管理的程度,然後分別將各個塊隱藏在介面(interface)的後面,讓它們只通過介面相互交流。比如說,如果用OOD的方法來設計一個伺服器-用戶端(client-server)應用,那麼伺服器和用戶端之間不應該有直接的依賴,而是應該讓伺服器的介面和用戶端的介面相互依賴。 -  這種依賴關係的轉換使得系統的各部分具有了可複用性。還是拿上面那個例子來說,用戶端就不必依賴於特定的伺服器,所以就可以複用到其他的環境下。如果要複用某一個程式塊,只要實現必須的介面就行了。 -  OOD是一種解決軟體問題的設計範式(paradigm),一種抽象的範式。使用OOD這種設計範式,我們可以用對象(object)來表現問題領域(problem domain)的實體,每個對象都有相應的狀態和行為。我們剛才說到:OOD是一種抽象的範式。抽象可以分成很多層次,從非常概括的到非常特殊的都有,而對象可能處於任何一個抽象層次上。另外,彼此不同但又互有關聯的對象可以共同構成抽象:只要這些對象之間有相似性,就可以把它們當成同一類的對象來處理。
  2. OOD和傳統方法有什麼區別?
  還記得結構化設計方法嗎?程式被劃分成許多個模組,這些模組被組織成一個樹型結構。這棵樹的根就是主模組,葉子就是工具模組和最低級的功能模組。同時,這棵樹也表示調用結構:每個模組都調用自己的直接下級模組,並被自己的直接上級模組調用。  那麼,哪個模組負責收集應用程式最重要的那些策略?當然是最頂端的那些。在底下的那些模組只管實現最小的細節,最頂端的模組關心規模最大的問題。所以,在這個體繫結構中越靠上,概念的抽象層次就越高,也越接近問題領域;體繫結構中位置越低,概念就越接近細節,與問題領域的關係就越少,而與解決方案領域的關係就越多。  但是,由於上方的模組需要調用下方的模組,所以這些上方的模組就依賴於下方的細節。換句話說,與問題領域相關的抽象要依賴於與問題領域無關的細節!這也就是說,當實現細節發生變化時,抽象也會受到影響。而且,如果我們想複用某一個抽象的話,就必須把它依賴的細節都一起拖過去。  而在OOD中,我們希望倒轉這種依賴關係:我們建立的抽象不依賴於任何細節,而細節則高度依賴於上面的抽象。這種依賴關係的倒轉正是OOD和傳統技術之間根本的差異,也正是OOD思想的精華所在。
  1. OOD步驟

    • 細化重組類
    • 細化和實作類別間關係,明確其可見度
    • 增加屬性,指定屬性的類型與可見度
    • 分配職責,定義執行每個職責的方法
    • 對訊息驅動的系統,明確訊息傳遞方式
    • 利用設計模式進行局部設計
    • 畫出詳細的類圖與時序圖
  2. OOD設計過程中要展開的主要幾項工作

    • (一)對象定義規格的求精過程
  對於OOA所抽象出來的對象-&-類以及彙集的分析文檔,OOD需要有一個根據設計要求整理和求精的過程,使之更能符合OOP的需要。這個整理和求精過程主要有兩個方面:一是要根據物件導向的概念  模型整理分析所確定的對象結構、屬性、方法等內容,改正錯誤的內容,刪去不必要和重複的內容等。二是進行分類整理,以便於下一步資料庫設計和程式處理模組設計的需要。整理的方法主要是進行歸  類,對類一&一對象、屬性、方法和結構、主題進行歸類。
  • (二)資料模型和資料庫設計

  資料模型的設計需要確定類-&-對象屬性的內容、訊息串連的方式、系統訪問、資料模型的方法等。最後每個對象執行個體的資料都必須落實到物件導向的庫結構模型中。

  • (三)最佳化

  OOD的最佳化設計過程是從另一個角度對分析結果和處理業務過程的整理歸納,最佳化包括對象和結構的最佳化、抽象、整合。

  對象和結構的模組化表示OOD提供了一種範式,這種範式支援對類和結構的模組化。這種模組符合一般模組化所要求的所有特點,如資訊隱蔽性好,內部彙總度強和模組之間耦合度弱等。

  整合化使得單個構件有機地結合在一起,相互支援。

  1. OO方法的特點和面臨的問題
  OO方法以對象為基礎,利用特定的軟體工具直接完成從對象客體的描述到軟體結構之間的轉換。這是OO方法最主要的特點和成就。OO方法的應用解決了傳統結構化開發方法中客觀世界描述工具與軟  件結構的不一致性問題,縮短了開發週期,解決了從分析和設計到軟體模組結構之間多次轉換映射的繁雜過程,是一種很有發展前途的系統開發方法。  但是同原型方法一樣,OO方法需要一定的軟體基礎支援才可以應用,另外在大型的MIS開發中如果不經自頂向下的整體劃分,而是一開始就自底向上的採用OO 方法開發系統,同樣也會造成系統結構不合理、各部分關係失調等問題。所以OO方法和結構化方法目前仍是兩種在系統開發領域相互依存的、不可替代的方法。

  七、OOD能給我帶來什嗎?

  問這個問題的人,腦子裡通常是在想“OOD能解決所有的設計問題嗎?”沒有銀彈。OOD也不是解決一切設計問題、避免軟體危機、捍衛世界和平……的銀彈。OOD只是一種技術。但是,它是一種優秀的技術,它可以很好地解決目前的大多數軟體設計問題——當然,這要求設計者有足夠的能力。  OOD可能會讓你頭疼,因為要學會它、掌握它是很困難的;OOD甚至會讓你失望,因為它也並不成熟、並不完美。OOD也會給你帶來欣喜,它讓你可以專註於設計,而不必操心那些細枝末節;OOD也會使你成為一個更好的設計師,它能提供給你很好的工具,讓你能開發出更堅固、更可維護、更可複用的軟體。
三. OOP
  1. OOP: (Object Oriented Programming,物件導向的程式設計)。

    • 是一種電腦編程架構
  2. OOP 的一條基本原則是電腦程式是由單個能夠起到子程式作用的單元或對象組合而成。OOP 達到了軟體工程的三個主要目標:重用性、靈活性和擴充性。為了實現整體運算,每個對象都能夠接收資訊、處理資料和向其它對象發送資訊。OOP 主要有以下的概念和組件:

    • 組件 - 資料和功能一起在運行著的電腦程式中形成的單元,組件在 OOP 電腦程式中是模組和結構化的基礎。
    • 抽象性 - 程式有能力忽略正在處理中資訊的某些方面,即對資訊主要方面關注的能力。
    • 封裝 - 也叫做資訊封裝:確保組件不會以不可預期的方式改變其它組件的內部狀態;只有在那些提供了內部狀態改變方法的組件中,才可以訪問其內部狀態。每類組件都提供了一個與其它組件聯絡的介面,並規定了其它組件進行調用的方法。
    • 多態性 - 組件的引用和類集會涉及到其它許多不同類型的組件,而且引用組件所產生的結果得依據實際調用的類型。
    • 繼承性 - 允許在現存的組件基礎上建立子類組件,這統一併增強了多態性和封裝性。典型地來說就是用類來對組件進行分組,而且還可以定義新類為現存的類的擴充,這樣就可以將類組織成樹形或網狀結構,這體現了動作的通用性。
    • 由於抽象性、封裝性、重用性以及便於使用等方面的原因,以組件為基礎的編程在指令碼語言中已經變得特別流行。Python 和 Ruby 是最近才出現的語言,在開發時完全採用了 OOP 的思想,而流行的 Perl 指令碼語言從版本5開始也慢慢地加入了新的物件導向的功能組件。用組件代替“現實”上的實體成為 JavaScript(ECMAScript) 得以流行的原因,有論證表明對組件進行適當的組合就可以在英特網上代替 HTML 和 XML 的文件物件模型(DOM)。

OOA - OOD - OOP 簡介

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.