- 面向對象分析與設計(第2版·雙色版)
- 麻志毅編著
- 1615字
- 2024-06-27 15:49:04
1.2 面向對象的基本思想
面向對象方法已深入到計算機軟件領域的幾乎所有分支。它不僅是一些具體的軟件開發技術與策略,而且是一整套關于如何看待軟件系統與現實世界的關系,用什么觀點來研究問題并進行問題求解,以及如何進行軟件系統構造的軟件方法學。因而,面向對象方法有著自己的基本思想。
面向對象方法解決問題的思路是從現實世界中的客觀對象(如人和事物)入手,盡量運用人類的自然思維方式從不同的抽象層次和方面來構造軟件系統,這與傳統開發方法構造系統的思想是不一樣的。特別是,面向對象方法把一切都看成是對象。下面以開發一個開發票的軟件為例來說明這種觀點。發票的樣本如圖1-1所示。

圖1-1 發票樣本
按非面向對象思路,要定義數據結構(如C中的結構或Pascal中的記錄)以及編寫根據數據結構進行計算的函數或過程。而按面向對象思路,先把發票看成一個對象,其中有若干屬性,如編號、名稱和規格等,還有若干操作,如計算一種商品金額的操作“單項金額計算”和計算金額合計的操作“發票金額合計”,然后再根據具體編程語言考慮怎樣實現這個對象。
人們已經形成共識:面向對象方法是一種運用對象、類、繼承、聚合、關聯、消息和封裝等概念和原則來構造軟件系統的開發方法。下面具體地闡述面向對象方法的基本思想:
1)客觀世界中的事物都是對象(object),對象間存在一定的關系。面向對象方法要求從現實世界中客觀存在的事物出發來建立軟件系統,強調直接以問題域(現實世界)中的事物以及事物間的聯系為中心來思考問題和認識問題,并根據這些事物的本質特征和系統責任,把它們抽象地表示為系統中的對象,作為系統的基本構成單位。這可以使系統直接映射到問題域,保持問題域中的事物及其相互關系的本來面貌。
2)用對象的屬性(attribute)表示事物的數據特征;用對象的操作(operation)表示事物的行為特征。
3)對象把它的屬性與操作結合在一起,成為一個獨立的、不可分的實體,并對外屏蔽它的內部細節。
4)通過抽象對事物進行分類。把具有相同屬性和相同操作的對象歸為一類,類(class)是這些對象的抽象描述,每個對象是它的類的一個實例。
5)復雜的對象可以用簡單的對象作為構成部分。
6)通過在不同程度上運用抽象原則,可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與操作。
7)對象之間通過消息進行通信,以實現對象之間的動態聯系。
8)通過關聯表達類之間的靜態關系。
圖1-2為上述部分思想的一個示意圖。

圖1-2 面向對象基本思想(部分)的示意圖
利用抽象原則從客觀世界中發現對象以及對象間的關系,其中包括整體對象和部分對象,進而再把對象抽象成類,把對象間的關系抽象為類之間的關系。通過繼續運用抽象原則,確定類之間存在的繼承關系。上述簡略地說明了建立系統的靜態結構模型的思想,系統其他模型的建立原則也與此類似,這些內容將是本書講述的重點。通過以圖形的方式作為建模的主要方式之一,分別建立系統的分析與設計模型,進而得到可運行的程序。正是通過面向對象建模,對所要解決的問題有了深刻且完整的認識,進而把其轉換成可運行的程序,使得程序所處理的對象是對現實世界中對象的抽象。
從上述可以看出,面向對象方法強調充分運用人類在日常邏輯思維中經常采用的思想方法與原則,如抽象、聚合、封裝和關聯等。這使得軟件開發者能更有效地思考問題,并以其他人也能看得懂的方式把自己的認識表達出來。為了更全面和清楚地表達認識,面向對象方法要用多種圖來詳述模型,即從多方面來刻畫模型。像一些開發方法一樣,面向對象方法也要求從分析、設計和實現等不同抽象層次(開發階段)來開發復雜的軟件系統。
面向對象方法也是多種多樣的,盡管各種面向對象方法不同,但都是以上述基本思想為基礎的。還要指出的是,一種方法要包含一組概念和相應的表示法以及用其構造系統的過程指導,面向對象方法也不例外。貫穿于本書的面向對象概念及表示法均取自UML 2.4;至于過程指導,國內外尚無統一標準,本書給出的是基于特定活動而組織的,其特點是易學易用,且不失應用的普遍性。