什么是UML系統建模
UML系統建模是一種與面向對象軟件開發密切相關的建模方法。通過建造模型可以驗證建造事物的可行性。UML是一種統一建模語言,它的全稱是(Unified Method Language)。它的官方網址是:www.uml.org,目前最新的版本是2.5。模型是用某種工具對某個系統的表達方式。模型從某一個建模觀點出發,抓住事物最重要的方面而簡化或忽略其它方面。軟件系統的建模使用建模語言來表達(例如UML)。UML的目標是以面向對象各種相關圖的方式來描述任何類型的系統。
注:1.分布式系統:分布在一組機器上運行的系統,數據很容易從一台機器傳送到另一台機器,需要同步通信機制來確保數據完整性。
2.小型軟件:一般5000行代碼一下的軟件是小型軟件,5000行至5萬行代碼之間的是中型軟件,5萬行以上的是大型軟件。
面向對象方法
大型的、復雜的軟件系統的開發是一項工程,必須按照工程學的方法組織軟件的生產與管理,必須經過分析、設計、實現、測試、維護等一系列軟件生命周期階段。編程仍然是重要的,但是更具有決定性意義的是系統建模,只有在分析和設計階段建立了良好的系統模型,才有可能保證工程的正確實施。OOPL:面向對象的編程語言,OOD:面向對象設計,面向對象分析:OOA。
用計算機解決問題需要用程序設計語言開對問題進行求解加以描述(編程),實質上,軟件是問題求解的一種表述形式。對象是要研究任何的事物,對象可以是一個物理實體也可以是無形的事物,對象(類)由數據(事物的屬性)和作用於事物的操作(體現事物行為)構成一個獨立的整體。從程序設計者的角度來看,對象是一個程序模塊,從用戶角度來看,對象為他們提供所希望的行為。對象的操作通常稱為方法。
類是對象的模板,即類是對一組有相同數據和相同操作的對象的抽象定義一個類所包含的方法和數據描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。類可以有子類,也可以有父類,形成類層次結構。
面向對象特征:
封裝性:封裝是一種信息隱藏技術,它體現於類的說明,使數據更安全,是對象的重要特性。封裝使數據和加工該數據的方法(函數)封裝為一個整體,以實現獨立性很強的模塊,使用戶只能看到對象的外部特性(對象能接收哪些消息,具有哪些處理能力),對對象的內部特性(保存內部狀態的私有數據和實現加工能力的算法)對用戶是隱蔽的。瘋長的目的在於把對象的設計者和對象的使用者分開,使用者不必知曉行為的實現細節,只需用設計者提供的消息訪問該對象。通過封裝,可以把類作為軟件中的基本復用單元,提高其內聚度,降低耦合度。
繼承性:繼承性是子類自動共享父類數據和方法的機制,它由類的派生功能體現。一個類直接繼承其父類的全部描述,同時可修改和擴充。繼承具有傳遞性,也就是平時說的多繼承。
多態性:同一消息為不同的對象接收時可產生完全不同的行為,這種現象稱為動態多態。在C++里動態多態是通過繼承來支持的。利用繼承層次,盡可能的吧具有通用功能的協議存放在類層次中盡可能高的地方,而將實現這一功能的不同方法置於較低的層次。
在面向對象方法中,對象和消息傳遞分別表現事物及事物間相互聯系的概念。這種對象、類、消息和方法的程序設計范式的基本特點在於對象的封裝性和繼承性。通過封裝能將對象的定義和調用分開,通過繼承能體現類與類之間的關系。
抽象:抽象是指強調實體的本質,內在的屬性,使用抽象可以盡可能避免過早的考慮一些細節。在系統開發中,抽象指的是首相考慮對象的意義和行為,然后決定如何實現對象。類事先了對對象的數據(狀態)和行為的抽象。類是封裝良好的模塊,類定義將其說明(用戶可見的外部接口)與實現(用戶不可見的內部實現)顯式的分開。
面向對象的開發過程
面向對象方法遵循一般的認知方法學的基本概念,建立面向對象方法基礎。面向對象方法學認為客觀世界是由各種“對象”所組成的,任何事物都是對象,每一個對象都有自己的運動規律和內部狀態,每一個對象都數據某個“類”,都是該對象類的一個元素。復雜的對象可以是由相對比較簡單的各種對象以某種方式而構成的。不同對象的組合以及相互作用就構成了所要研究、分析和構造的客觀系統。面向對象方法主要是模擬了人類在認知進程中的有一般到特殊的演繹功能或有特殊到一般的歸納功能。遵照面向對象方法學的思想在進行開發時,有如下步驟:
現實對象-----(歸納概括)----->現實類-------(抽象模擬)------>軟件類--------(實例化)----->軟件對象-------(活動交互)------->程序
首先進行面向對象分析:了解問題域所涉及的對象,對象間的關系和作用(操作),然后構造問題的對象模型,爭取該模型能真實的反應出所需要解決的實際問題。在這個過程中,抽象是最本質、最重要的方法,針對不同問題選擇不同的抽象層次。接下來是面向對象設計:即設計軟件的對象模型。根據應用的面向對象那個軟件開發環境的功能強弱不等,在對問題的對象模型進行分析的基礎上,可能要對它進行一定的改造,但應該以最少改變原問題域的對象模型為原則。然后在軟件系統內設計各個對象、對象間的關系(如層次關系、繼承關系等)、對象間的通信方式(如消息模式)等,總之是設計各個對象應該做些什么。最后是面向對象實現,即軟件功能的編碼實現:包括:每個對象的內部功能實現:確立對象哪些處理能力應在哪些類中進行描述,確定並實現系統的界面、輸出形式及其他控制機理等。