面向對象開發方法概述,面向對象開發方法
1.面向對象方法
01.簡介
面向對象方法(Object-Oriented Method)是一種把面向對象的思想應用於軟件開發過程中,指導開發活動的系統方法,簡稱OO (Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。對象是由數據和容許的操作組成的封裝體,與客觀實體有直接對應關系,一個對象類定義了具有相似性質的一組對象。而每繼承性是對具有層次關系的類的屬性和操作進行共享的一種方式。所謂面向對象就是基於對象概念,以對象為中心,以類和繼承為構造機制,來認識、理解、刻畫客觀世界和設計、構建相應的軟件系統。
02.實質
就是主張從客觀世界固有的事物出發來構造系統,提倡用人類在現實生活中常用的思維方法來認識、理解和描述客觀事物,強調最終建立的系統能夠映射問題域,也就是說,系統中的對象以及對象之間的關系能夠如實地反映問題域中固有事物及其關系。
03.面向對象的基本概念
對象
對象是要研究的任何事物。從一本書到一家圖書館,單的整數到整數列龐大的數據庫、極其復雜的自動化工廠、航天飛機都可看作對象,它不僅能表示有形的實體,也能表示無形的(抽象的)規則、計劃或事件。對象由數據(描述事物的屬性)和作用於數據的操作(體現事物的行為)構成一獨立整體。從程序設計者來看,對象是一個程序模塊,從用戶來看,對象為他們提供所希望的行為。在對內的操作通常稱為方法。一個對象請求另一對象為其服務的方式是通過發送消息。
類
類是對象的模板。即類是對一組有相同數據和相同操作的對象的定義,一個類所包含的方法和數據描述一組對象的共同行為和屬性。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可有其子類,也可有其它類,形成類層次結構。
消息
消息是對象之間進行通信的一種規格說明。一般它由三部分組成:接收消息的對象、消息名及實際變元。
繼承
繼承性(Inheritance)是指,在某種情況下,一個類會有“子類”。子類比原本的類(稱為父類)要更加具體化。例如,“狗”這個類可能會有它的子類“牧羊犬”和“吉娃娃犬”。在這種情況下,“萊絲”可能就是牧羊犬的一個實例。子類會繼承父類的屬性和行為,並且也可包含它們自己的。我們假設“狗”這個類有一個方法(行為)叫做“吠叫()”和一個屬性叫做“毛皮顏色”。它的子類(前例中的牧羊犬和吉娃娃犬)會繼承這些成員。
封裝性
具備封裝性(Encapsulation)的面向對象程序設計隱藏了某一方法的具體執行步驟,取而代之的是通過消息傳遞機制傳送消息給它。因此,舉例來說,“狗”這個類有“吠叫()”的方法,這一方法定義了狗具體該通過什麼方法吠叫。但是,萊絲的朋友並不知道它到底是如何吠叫的。
多態
多態(Polymorphism)是指由繼承而產生的相關的不同的類,其對象對同一消息會做出不同的響應。例如,狗和雞都有“叫()”這一方法,但是調用狗的“叫()”,狗會吠叫;調用雞的“叫()”,雞則會啼叫。
這樣,雖然同樣是做出叫這一種行為,但其具體做出的表現方式將大不相同。
抽象性
抽象(Abstraction)是簡化復雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,並且可以在最恰當的繼承級別解釋問題。舉例說明,萊絲在大多數時候都被當作一條狗,但是如果想要讓它做牧羊犬做的事,你完全可以調用牧羊犬的方法。如果狗這個類還有動物的父類,那麼你完全可以視萊絲為一個動物。
04.主要特征
封裝性
封裝是一種信息隱蔽技術,它體現於類的說明,是對象的重要特性。封裝使數據和加工該數據的方法(函數)封裝為一個整體,以實現獨立性很強的模塊,使得用戶只能見到對象的外特性(對象能接受哪些消息,具有那些處理能力),而對象的內特性(保存內部狀態的私有數據和實現加工能力的算法)對用戶是隱蔽的。封裝的目的在於把對象的設計者和對象者的使用分開,使用者不必知曉行為實現的細節,只須用設計者提供的消息來訪問該對象。
繼承性
繼承性是子類自動共享父類之間數據和方法的機制。它由類的派生功能體現。一個類直接繼職其它類的全部描述,同時可修改和擴充。
繼職具有傳達室遞性。繼職分為單繼承(一個子類只有一父類)和多重繼承(一個類有多個父類)。類的對象是各自封閉的,如果沒繼承性機制,則類對象中數據、方法就會出現大量重復。繼承不僅支持系統的可重用性,而且還促進系統的可擴充性。
多態性
對象根據所接收的消息而做出動作。同一消息為不同的對象接受時可產生完全不同的行動,這種現象稱為多態性。利用多態性用戶可發送一個通用的信息,而將所有的實現細節都留給接受消息的對象自行決定,如是,同一消息即可調用不同的方法。例如:Print消息被發送給一圖或表時調用的打印方法與將同樣的Print消息發送給一正文文件而調用的打印方法會完全不同。多態性的實現受到繼承性的支持,利用類繼承的層次關系,把具有通用功能的協議存放在類層次中盡可能高的地方,而將實現這一功能的不同方法置於較低層次,這樣,在這些低層次上生成的對象就能給通用消息以不同的響應。在OOPL中可通過在派生類中重定義基類函數(定義為重載函數或虛函數)來實現多態性。
2.UML語言簡介
01.簡介
Unified Modeling Language (UML)又稱統一建模語言或標准建模語言,是始於1997年一個OMG標准,它是一個支持模型化和軟件系統開發的圖形化語言,為軟件開發的所有階段提供模型化和可視化支持,包括由需求分析到規格,到構造和配置。 面向對象的分析與設計(OOA&D,OOAD)方法的發展在80年代末至90年代中出現了一個高潮,UML是這個高潮的產物。它不僅統一了Booch、Rumbaugh和Jacobson的表示方法,而且對其作了進一步的發展,並最終統一為大眾所接受的標准建模語言。
UML規范用來描述建模的概念有,類(對象的)、對象、關聯、職責、行為、接口、用例、包、順序、協作,以及狀態。
02.分類
UML定義了5類,10種模型圖
五種類圖定義:
1.用例圖:從用戶角度描述系統功能,並指各功能的操作者。
2.靜態圖:包括類圖,包圖,對象圖。
類圖:描述系統中類的靜態結構
包圖:是包和類組成的,表示包與包之間的關系,包圖描述系統的分層結構
對象圖:是類圖的實例
3.行為圖:描述系統動態模型和對象組成的交換關系。包括狀態圖和活動圖
活動圖:描述了業務實現用例的工作流程
狀態圖:是描述狀態到狀態控制流,常用於動態特性建模
4.交互圖:描述對象之間的交互關系
順序圖:對象之間的動態合作關系,強調對象發送消息的順序,同時顯示對象之間的交互
合作圖:描述對象之間的協助關系
5.實現圖:
配置圖:定義系統中軟硬件的物理體系結構
十種模型圖定義:
(1)、用例圖:展示系統外部的各類執行者與系統提供的各種用例之間的關系
(2)、類圖:展示系統中類的靜態結構(類是指具有相同屬性和行為的對象,類圖用來描述系統中各種類之間的靜態結構)
(3)、對象圖:是類圖的一種實例化圖(對象圖是對類圖的一種實例化)
(4)、包圖:是一種分組機制。在UML1.1版本中,包圖不再看作一種獨立的模型圖)
(5)、狀態圖:描述一類對象具有的所有可能的狀態及其轉移關系(它展示對象所具有的所有可能的狀態以及特定事件發生時狀態的轉移情況)
(6)、順序圖:展示對象之間的一種動態協作關系(一組對象組成,隨時間推移對象之間交換消息的過程,突出時間關系)
(7)、合作圖:從另一個角度展示對象之間的動態協作關系(對象間動態協作關系,突出消息收發關系)
(8)、活動圖:展示系統中各種活動的執行流程(各種活動的執行順序、執行流程)
(9)、構件圖:展示程序代碼的物理結構(描述程序代碼的組織結構,各種構件之間的依賴關系)
(10)、配置圖:展示軟件在硬件環境中(特別是在分布式及網絡環境中)的配置關系(系統中硬件和軟件的物理配置情況和系統體系結構)