面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)1-2 課件_第1頁(yè)
面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)1-2 課件_第2頁(yè)
面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)1-2 課件_第3頁(yè)
面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)1-2 課件_第4頁(yè)
面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)1-2 課件_第5頁(yè)
已閱讀5頁(yè),還剩139頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、碩士課程面向?qū)ο蟪绦蛟O(shè)計(jì)主要內(nèi)容第一部分:面向?qū)ο蠓治鯫bject-Oriented Analysis,OOA第二部分:面向?qū)ο笤O(shè)計(jì)Object-Oriented Design,OOD第三部分:面向?qū)ο蟪绦蛟O(shè)計(jì)Object-Oriented Programming,OOP 第一部分 面向?qū)ο蠓治鯫bject-Oriented Analysis系統(tǒng)的復(fù)雜性 根據(jù)信息論的觀點(diǎn),復(fù)雜度可以定義為系統(tǒng)表明自身方式數(shù)目的對(duì)數(shù),或是系統(tǒng)可能狀態(tài)數(shù)目的對(duì)數(shù):K=logN,式中K是復(fù)雜度,N是不同的可能狀態(tài)數(shù)。一般來(lái)說(shuō),一個(gè)系統(tǒng)越復(fù)雜,它所攜帶的信息越多。若兩個(gè)系統(tǒng)各自有M個(gè)和N個(gè)可能狀態(tài),那么,組合系統(tǒng)的狀

2、態(tài)數(shù)目是兩者之積MN,其復(fù)雜度為,K=logMN。 從可操作性的角度,復(fù)雜性可以定義為:尋找最小的程序或指令集來(lái)描述給定的“結(jié)構(gòu)”,即一個(gè)數(shù)字序列。若用比特計(jì)算的話,這個(gè)程序的大小相對(duì)于數(shù)字序列的大小就是其復(fù)雜性的量度??死谄浣?jīng)典著作混沌與秩序生物系統(tǒng)的復(fù)雜結(jié)構(gòu)(Chaos and Order: The Complex Structure of Living Systems)一書中,給了幾個(gè)簡(jiǎn)單例子,用于分析相應(yīng)程序的復(fù)雜性。系統(tǒng)的復(fù)雜性例1:序列aaaaaaa 這是一個(gè)亞(準(zhǔn))復(fù)雜性系統(tǒng),相應(yīng)的程序?yàn)椋涸诿恳粋€(gè)a后續(xù)寫a。這個(gè)短程序使得這個(gè)序列得以隨意復(fù)制到無(wú)窮。例2:序列aabaaba

3、abaab 與第1個(gè)例子相比,該例要復(fù)雜一些,但仍可以很容易地寫出程序:在兩個(gè)a后續(xù)寫b并重復(fù)這一操作。例3:aabaababbaabaababb 這個(gè)例子與例2相似,也可以用很短的程序來(lái)描述:在兩個(gè)a后續(xù)寫b并重復(fù)。每當(dāng)?shù)谌沃貙慴時(shí),將第二個(gè)a替換為b。這樣的序列具有可定義的結(jié)構(gòu),有對(duì)應(yīng)的程序來(lái)表示。例4:aababbababbbabaaababbab 這個(gè)例子,無(wú)結(jié)構(gòu),若想編程,則必須將字符串全部列出。結(jié)論: 一旦一個(gè)程序的大小與試圖描述的系統(tǒng)相提并論時(shí),則無(wú)法編程?;蛘哒f(shuō),當(dāng)系統(tǒng)的結(jié)構(gòu)不能被描述,或描述它的最小算法與系統(tǒng)本身具有相同的信息比特?cái)?shù)時(shí),則稱該系統(tǒng)為根本復(fù)雜系統(tǒng)。在達(dá)到根本復(fù)

4、雜之前,人們?nèi)钥梢跃帉懗瞿軌驁?zhí)行的程序,否則,做不到。軟件的復(fù)雜性 在計(jì)算機(jī)中,軟件系統(tǒng)的狀態(tài)又比硬件系統(tǒng)的狀態(tài)往往要多若干數(shù)量級(jí)。另外,由于軟件系統(tǒng)中的實(shí)體,其擴(kuò)展不像硬件系統(tǒng)那樣,可以由相同元素重復(fù)添加,從而使計(jì)算機(jī)中軟件的復(fù)雜度呈非線性增長(zhǎng)。因此,找到控制和降低軟件復(fù)雜性的方法,也就找到了控制和降低計(jì)算機(jī)系統(tǒng)復(fù)雜性最根本的方法。于是,我們可以將問(wèn)題的焦點(diǎn)放在計(jì)算機(jī)軟件上。 關(guān)于軟件的復(fù)雜性,布魯克斯(Frederick P.Brooks)在其著作人月神話(The Mythical Man-month)一書中,從復(fù)雜度、一致性、可變性、不可見性等方面作了系統(tǒng)地分析,揭示了軟件所固有的困難。

5、下面,簡(jiǎn)述之:軟件的復(fù)雜性(1)復(fù)雜度 布魯克斯認(rèn)為,沒(méi)有兩個(gè)軟件部分是相同的(至少在語(yǔ)句級(jí)別上),若有相同的,人們會(huì)把它們合并成一個(gè)供調(diào)用的子函數(shù),因此,認(rèn)為復(fù)雜是軟件的根本屬性。 軟件開發(fā)面對(duì)的是客觀世界模型的構(gòu)建問(wèn)題,相對(duì)于物理學(xué),物理學(xué)家可以忽視大量實(shí)體內(nèi)容的描述,僅僅關(guān)注諸如力、時(shí)間、質(zhì)量、速度等非常有限內(nèi)容的描述,從而大大降低問(wèn)題的復(fù)雜度,而軟件工程師卻不能這樣做。 構(gòu)成軟件復(fù)雜度的實(shí)體及其關(guān)系的描述不僅引發(fā)了大量學(xué)習(xí)和理解上的負(fù)擔(dān),而且隨著軟件規(guī)模的增長(zhǎng),使得團(tuán)隊(duì)成員之間的溝通以及管理變得越來(lái)越困難,從而使軟件的開發(fā)逐漸地演變成一場(chǎng)災(zāi)難。要避免這場(chǎng)災(zāi)難,其關(guān)鍵就在于能否控制和降低

6、該軟件系統(tǒng)的復(fù)雜性。軟件的復(fù)雜性(2)一致性 大型軟件開發(fā)中,為保持各子系統(tǒng)之間的一致性,軟件必須隨接口的不同、時(shí)間的推移而變化。增加了軟件的復(fù)雜性。(3)易變性 與計(jì)算機(jī)硬件、建筑、汽車等實(shí)體相比,軟件實(shí)體經(jīng)常會(huì)面對(duì)持續(xù)的變更壓力。人們一般認(rèn)為,已購(gòu)買的計(jì)算機(jī)硬件、建筑、汽車等實(shí)體修改起來(lái)成本太高,于是打消了修改這些產(chǎn)品的念頭。而對(duì)軟件實(shí)體,人們卻不這樣認(rèn)為,因?yàn)樗且粋€(gè)純粹思維活動(dòng)的產(chǎn)物,可以無(wú)限擴(kuò)展。(4)不可見性 軟件是看不見的,當(dāng)利用圖示方法來(lái)描述軟件結(jié)構(gòu)時(shí),也無(wú)法充分表現(xiàn)其結(jié)構(gòu),從而使軟件的復(fù)雜度大大超過(guò)計(jì)算機(jī)硬件的復(fù)雜度,使得人們之間的溝通面臨極大的困難。軟件開發(fā)難點(diǎn):概念結(jié)構(gòu)規(guī)

7、格、設(shè)計(jì)和測(cè)試 布魯克斯指出軟件復(fù)雜度是軟件生產(chǎn)的主要困難,不僅如此,他還分析了在軟件領(lǐng)域,人們所取得的進(jìn)展,并且認(rèn)為,這些進(jìn)展只是解決了軟件復(fù)雜度的一些次要方面的問(wèn)題,如果說(shuō)有重大進(jìn)展的話,那就是從匯編語(yǔ)言到高級(jí)語(yǔ)言的進(jìn)展,其他的進(jìn)展只能算是一種漸進(jìn)。 的確如此,高級(jí)語(yǔ)言抽象掉了匯編語(yǔ)言所關(guān)心的寄存器、位、磁盤等概念,使軟件開發(fā)的生產(chǎn)率提高了若干倍,同時(shí),軟件的可靠性、簡(jiǎn)潔性也大為提高,相對(duì)于匯編語(yǔ)言,高級(jí)語(yǔ)言有效地降低了軟件的復(fù)雜性。 布魯克斯認(rèn)為,對(duì)于一個(gè)軟件系統(tǒng)的開發(fā)來(lái)說(shuō),最為困難的是對(duì)其概念結(jié)構(gòu)(概念模型)的規(guī)格、設(shè)計(jì)和測(cè)試,而不是對(duì)概念結(jié)構(gòu)的實(shí)現(xiàn),以及對(duì)這種實(shí)現(xiàn)的測(cè)試。當(dāng)然,他也承

8、認(rèn),在實(shí)現(xiàn)的過(guò)程中會(huì)出現(xiàn)語(yǔ)法的錯(cuò)誤,但是,相對(duì)于概念結(jié)構(gòu)方面的錯(cuò)誤,則要小得多。軟件的概念結(jié)構(gòu) 在軟件開發(fā)的前期,要對(duì)用戶的需求進(jìn)行分析,然后,將這種需求抽象為一種信息結(jié)構(gòu),這種結(jié)構(gòu)被稱為概念結(jié)構(gòu)。其主要特點(diǎn)為: (1)能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求; (2)易于理解,從而可以用它和不熟悉計(jì)算機(jī)的用戶交換意見; (3)易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時(shí),能容易地對(duì)概念結(jié)構(gòu)進(jìn)行修改和擴(kuò)充; (4)易于向計(jì)算機(jī)支持的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換。軟件的概念結(jié)構(gòu) 軟件概念結(jié)構(gòu)的特點(diǎn)決定了這種結(jié)構(gòu)的設(shè)計(jì)在很多情況下是很難采用形式化的方法,而采用非形式化的系統(tǒng)化方法,

9、如結(jié)構(gòu)化方法、面向?qū)ο蠓椒ǖ?,卻可以有效地控制和降低概念結(jié)構(gòu)設(shè)計(jì)的復(fù)雜性,最后,完成編碼、使軟件形式化。 系統(tǒng)化方法進(jìn)入大學(xué)“軟件工程”等課程已有幾十多年的時(shí)間了,然而使用系統(tǒng)化方法的真正原因卻被人們忽視了,這種忽視阻礙了人們自覺(jué)地應(yīng)用系統(tǒng)化方法的基本原理去控制和降低軟件開發(fā)復(fù)雜性的自覺(jué)性和能動(dòng)性。軟件開發(fā)的系統(tǒng)化方法遵循的原則 在軟件中,存在著大量不能簡(jiǎn)化的實(shí)體,我們把這些實(shí)體稱之為元素,那么,軟件系統(tǒng)就是由這些相互聯(lián)系、相互作用的若干元素組成的,具有特定功能的統(tǒng)一整體。而軟件系統(tǒng)的概念結(jié)構(gòu)則是指系統(tǒng)內(nèi)各組成部分(元素和子系統(tǒng))之間相互聯(lián)系、相互作用的框架。 要使一個(gè)軟件系統(tǒng)的復(fù)雜性下降,無(wú)

10、非也就是分割,通俗點(diǎn)講,也就是將一個(gè)大系統(tǒng)劃分為若干小的子系統(tǒng),最終,使人們易于理解和交流。下面,給出軟件開發(fā)的系統(tǒng)化方法需要遵循的幾個(gè)基本原則: (1)抽象第一的原則 所謂抽象,就是要對(duì)實(shí)際的事物進(jìn)行人為處理,抽取所關(guān)心的、共同的、本質(zhì)特征的屬性,并對(duì)這些事物及其特征屬性進(jìn)行描述。由于抽取的是共同的、本質(zhì)特征的屬性,從而大大降低了系統(tǒng)元素的絕對(duì)數(shù)量。軟件開發(fā)的系統(tǒng)化方法遵循的原則(2)層次劃分的原則 如果一個(gè)系統(tǒng)過(guò)于復(fù)雜,以至于很難處理,那么,就得先將它分解為若干子系統(tǒng)。如何進(jìn)行分解?什么是好的分解? 可參照集合分解的等價(jià)類概念。使用滿足等價(jià)關(guān)系的3個(gè)條件(自反性、對(duì)稱性和傳遞性),將集合劃

11、分為若干互不相交的子集(等價(jià)類),則子集具有某種共同性質(zhì)的屬性,并可以完全恢復(fù)到原來(lái)狀態(tài)。這種劃分的重要意義在于,使我們將注意力集中于子集中那些具有共同性質(zhì)的屬性及子集之間實(shí)質(zhì)性的關(guān)聯(lián),從而使無(wú)序變?yōu)橛行?,最終大大地降低系統(tǒng)復(fù)雜性。 在計(jì)算機(jī)系統(tǒng)中,人們希望在層次的劃分中遵循等價(jià)類劃分的3個(gè)基本原則;另外,為便于記憶,希望劃分后的層次數(shù)目控制在心理學(xué)中有關(guān)短時(shí)記憶最大容量72范圍之內(nèi),像計(jì)算機(jī)網(wǎng)絡(luò)層次結(jié)構(gòu)、計(jì)算機(jī)體系結(jié)構(gòu)等均遵循這樣的原則。軟件開發(fā)的系統(tǒng)化方法遵循的原則(3)模塊化原則 模型化原則就是根據(jù)系統(tǒng)模型說(shuō)明的原因和真實(shí)系統(tǒng)提供的依據(jù),提出以模型代替真實(shí)系統(tǒng)進(jìn)行模擬實(shí)驗(yàn),達(dá)到認(rèn)識(shí)真實(shí)系

12、統(tǒng)特性和規(guī)律性的方法。模型化方法是系統(tǒng)科學(xué)的基本方法。 系統(tǒng)科學(xué)研究主要采用的是符號(hào)模型而非實(shí)物模型。研究系統(tǒng)的模型化方法,通常是指通過(guò)建立和分析系統(tǒng)的數(shù)學(xué)模型來(lái)解決問(wèn)題的方法和程序。 用計(jì)算機(jī)程序定義的模型稱為基于計(jì)算機(jī)的模型。所有的數(shù)學(xué)模型均可轉(zhuǎn)化為基于計(jì)算機(jī)的模型,并通過(guò)計(jì)算來(lái)研究系統(tǒng)。另外,計(jì)算實(shí)驗(yàn)對(duì)一些無(wú)法用真實(shí)實(shí)驗(yàn)來(lái)檢驗(yàn)的系統(tǒng)來(lái)說(shuō)還是惟一可行的檢驗(yàn)手段。軟件開發(fā)的系統(tǒng)化方法遵循的原則 針對(duì)軟件,在考慮模塊化時(shí),還要充分考慮來(lái)自Meyer給出的以下5個(gè)原則。 (1)模塊可分解性。要控制和降低系統(tǒng)的復(fù)雜性,就必須有一套相應(yīng)的將問(wèn)題分解成子問(wèn)題的系統(tǒng)化機(jī)制,這種機(jī)制是形成模塊化設(shè)計(jì)方案的

13、關(guān)鍵。 (2)模塊可組裝性。要充分利用現(xiàn)存的(可復(fù)用的)設(shè)計(jì)構(gòu)件能被組裝成新系統(tǒng),要盡可能避免一切從頭開始的模塊化設(shè)計(jì)方案。 (3)模塊可理解性。要使系統(tǒng)中的模塊能夠作為一個(gè)獨(dú)立的單位(不用參考其他模型)被理解,從而使系統(tǒng)中的模塊易于構(gòu)造和修改。 (4)模塊連續(xù)性。在對(duì)系統(tǒng)進(jìn)行小的修改時(shí),要盡可能只涉及到單獨(dú)模塊的修改,而不要涉及到整個(gè)系統(tǒng),從而保證修改后副作用的最小化。 (5)模塊保護(hù)。在模塊出現(xiàn)問(wèn)題時(shí),要將其影響盡可能控制在該模塊的內(nèi)部,要使錯(cuò)誤引起的副作用最小化。結(jié)構(gòu)化方法Structured Methodology 結(jié)構(gòu)化方法是計(jì)算學(xué)科的一種典型的系統(tǒng)開發(fā)方法。它采用了系統(tǒng)科學(xué)的思想方

14、法,從層次的角度,自頂向下地分析和設(shè)計(jì)系統(tǒng)。結(jié)構(gòu)化方法包括結(jié)構(gòu)化分析(Structured Analysis,簡(jiǎn)稱SA)、結(jié)構(gòu)化設(shè)計(jì)(Structured Design,簡(jiǎn)稱SD)和結(jié)構(gòu)化程序設(shè)計(jì)(Structured Program Design,簡(jiǎn)稱SP)三部分內(nèi)容。其中,SA和SD主要屬于學(xué)科抽象形態(tài)的內(nèi)容,SP則主要屬于學(xué)科設(shè)計(jì)形態(tài)方面的內(nèi)容。 在結(jié)構(gòu)化方法中,有兩大類典型方法,一類是以Yourdon的結(jié)構(gòu)化設(shè)計(jì)、Gane/Sersor結(jié)構(gòu)化分析方法以及Demarco結(jié)構(gòu)化分析方法為代表的面向過(guò)程(面向數(shù)據(jù)流)的方法;另一類是以Jackson方法和Warnier-Orr方法為代表的面向

15、數(shù)據(jù)結(jié)構(gòu)的方法。 結(jié)構(gòu)化方法是其他系統(tǒng)開發(fā)方法的基礎(chǔ)。結(jié)構(gòu)化方法的產(chǎn)生和發(fā)展1. 結(jié)構(gòu)化程序設(shè)計(jì)方法的形成 結(jié)構(gòu)化方法起源于結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。在使用SP之前,程序員都是按照各自的習(xí)慣和思路來(lái)編寫程序,沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),這樣編寫的程序可讀性差,更為嚴(yán)重的是程序的可維護(hù)性極差,經(jīng)過(guò)研究發(fā)現(xiàn),造成這一現(xiàn)象的根本原因是程序的結(jié)構(gòu)問(wèn)題。 1966年,C.Bhm和G.Jacopini提出了關(guān)于“程序結(jié)構(gòu)”的理論,并給出了任何程序的邏輯結(jié)構(gòu)都可以用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)來(lái)表示的證明。在程序結(jié)構(gòu)理論的基礎(chǔ)上,1968年,戴克斯特拉提出了“GOTO語(yǔ)句是有害的”的問(wèn)題,并引起普遍重視,SP逐漸形成,并成為

16、計(jì)算機(jī)軟件領(lǐng)域的重要方法,對(duì)計(jì)算機(jī)軟件的發(fā)展具有重要的意義。伴隨著SP的形成,相繼出現(xiàn)了Modula-2、C以及Ada等結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言。結(jié)構(gòu)化方法的產(chǎn)生和發(fā)展2. 結(jié)構(gòu)化設(shè)計(jì)方法的形成 結(jié)構(gòu)化程序設(shè)計(jì)需要事先設(shè)計(jì)好每一個(gè)具體的功能模塊,然后將這些設(shè)計(jì)好的模塊組裝成一個(gè)軟件系統(tǒng)。接下來(lái)的問(wèn)題是,如何設(shè)計(jì)模塊。 源于結(jié)構(gòu)化程序設(shè)計(jì)思想的結(jié)構(gòu)化設(shè)計(jì)方法就是要解決模塊的構(gòu)建問(wèn)題。1974年,W.Stevens、G.Myers和L.Constantine等人在IBM系統(tǒng)(IBM System)雜志上發(fā)表了結(jié)構(gòu)化設(shè)計(jì)(Structured Design)論文,為結(jié)構(gòu)化設(shè)計(jì)方法奠定了思想基礎(chǔ)。此后這一思

17、想不斷發(fā)展,最終成為一種流行的系統(tǒng)開發(fā)方法。結(jié)構(gòu)化方法的產(chǎn)生和發(fā)展3. 結(jié)構(gòu)化分析方法的形成 結(jié)構(gòu)化設(shè)計(jì)方法建立在系統(tǒng)需求明確的基礎(chǔ)上。如何明確系統(tǒng)的需求,就是結(jié)構(gòu)化分析所要解決的問(wèn)題。結(jié)構(gòu)化分析方法產(chǎn)生于20世紀(jì)70年代中期,最初的倡導(dǎo)者有Tom Demarco、Ed Yourdon等人。結(jié)構(gòu)化分析在20世紀(jì)80年代又得到了進(jìn)一步的發(fā)展,并隨著Ed Yourdon于1989年所著的現(xiàn)代結(jié)構(gòu)化分析(Modern Structured Analysis)的出版而流行開來(lái)。現(xiàn)代結(jié)構(gòu)化分析更強(qiáng)調(diào)建模的重要性。 結(jié)構(gòu)化方法遵循的基本原則 結(jié)構(gòu)化方法的基本思想就是將待解決的問(wèn)題看作一個(gè)系統(tǒng),從而用系統(tǒng)科

18、學(xué)的思想方法來(lái)分析和解決問(wèn)題。結(jié)構(gòu)化方法遵循以下基本原則。 (1)抽象原則:抽象原則是一切系統(tǒng)科學(xué)方法都必須遵循的基本原則,它注重把握系統(tǒng)的本質(zhì)內(nèi)容,而忽略與系統(tǒng)當(dāng)前目標(biāo)無(wú)關(guān)的內(nèi)容,它是一種基本的認(rèn)知過(guò)程和思維方式。 (2)分解原則:分解原則是結(jié)構(gòu)化方法中最基本的原則,它是一種先總體,后局部的思想原則。在構(gòu)造信息系統(tǒng)模型時(shí),它采用自頂向下,分層解決的方法。 (3)模塊化原則:模塊化是結(jié)構(gòu)化方法最基本的分解原則的具體應(yīng)用,它主要出現(xiàn)在結(jié)構(gòu)化設(shè)計(jì)階段中,其目標(biāo)是將系統(tǒng)分解成具有特定功能的若干模塊,從而完成系統(tǒng)指定的各項(xiàng)功能。結(jié)構(gòu)化方法的核心問(wèn)題 模型問(wèn)題是結(jié)構(gòu)化方法的核心問(wèn)題。建立模型(簡(jiǎn)稱建模)

19、是為了更好地理解我們要模擬的現(xiàn)實(shí)世界。建模通常是從系統(tǒng)的需求分析開始,在結(jié)構(gòu)化方法中,就是使用SA方法構(gòu)建系統(tǒng)的環(huán)境模型;然后使用SD方法,確定系統(tǒng)的行為和功能模型;最后使用SP方法,進(jìn)行系統(tǒng)的設(shè)計(jì),并確定用戶的現(xiàn)實(shí)模型。結(jié)構(gòu)化方法的核心問(wèn)題1. 環(huán)境模型 SA的主要任務(wù)就是要完成系統(tǒng)的需求分析,并構(gòu)建現(xiàn)實(shí)世界的環(huán)境模型。在結(jié)構(gòu)化方法中,環(huán)境模型包括需求分析、環(huán)境圖和事件列表等內(nèi)容。 (1)需求分析:系統(tǒng)分析的第一步,它的主要任務(wù)是明確用戶的各種需求,并對(duì)系統(tǒng)要做什么作一個(gè)清晰、簡(jiǎn)潔和無(wú)二義性的文檔說(shuō)明。需求分析階段的用戶一般是高級(jí)主管、人事主管和執(zhí)行官,且基本上每個(gè)人都不直接參與新系統(tǒng)開發(fā)。

20、 (2)環(huán)境圖:數(shù)據(jù)流圖的一種特殊形式。環(huán)境圖模擬系統(tǒng)的一個(gè)大致邊界,并展示系統(tǒng)和外部的接口、數(shù)據(jù)的輸入和輸出以及數(shù)據(jù)的存儲(chǔ)。 (3)事件列表:發(fā)生在外部世界,但系統(tǒng)必須響應(yīng)的敘述性列表。事件列表是對(duì)環(huán)境圖的一個(gè)補(bǔ)充。結(jié)構(gòu)化方法的核心問(wèn)題2. 行為和功能模型 SD的主要任務(wù)就是要在系統(tǒng)環(huán)境模型的基礎(chǔ)上建立系統(tǒng)的行為和功能模型,完成系統(tǒng)內(nèi)部行為的描述。實(shí)現(xiàn)系統(tǒng)行為和功能模型的主要工具有:數(shù)據(jù)字典、數(shù)據(jù)流圖、狀態(tài)變遷圖和實(shí)體聯(lián)系模型等。 (1)數(shù)據(jù)字典 數(shù)據(jù)字典是一個(gè)包含所有系統(tǒng)數(shù)據(jù)元素定義的倉(cāng)庫(kù)。數(shù)據(jù)元素的定義必須是精確的、嚴(yán)格的和明確的。一個(gè)實(shí)體一般應(yīng)包括以下幾個(gè)部分的內(nèi)容: 名字; 別名;

21、用途; 內(nèi)容描述; 備注信息。結(jié)構(gòu)化方法的核心問(wèn)題2. 行為和功能模型 (2)數(shù)據(jù)流圖:是SA和SD的核心技術(shù),它采用面向處理過(guò)程的思想來(lái)描述系統(tǒng),它是一種描述信息流和數(shù)據(jù)從輸入到輸出變換的應(yīng)用圖形技術(shù)。 (3)狀態(tài)變遷圖:及時(shí)地描述了對(duì)象的狀態(tài),它著重系統(tǒng)的時(shí)間依賴行為。狀態(tài)變遷圖源于實(shí)時(shí)系統(tǒng)的建模,并被廣泛應(yīng)用于商業(yè)信息處理領(lǐng)域中。狀態(tài)變遷圖看起來(lái)非常像數(shù)據(jù)流圖,然而,它們之間卻存在著本質(zhì)的不同。數(shù)據(jù)流圖著重于數(shù)據(jù)流和數(shù)據(jù)轉(zhuǎn)換的過(guò)程,而狀態(tài)變遷圖著重于狀態(tài)的描述,如激勵(lì)發(fā)生時(shí)的開始狀態(tài)和系統(tǒng)執(zhí)行響應(yīng)后的結(jié)果狀態(tài)。狀態(tài)變遷圖的條件和一個(gè)過(guò)程的輸入數(shù)據(jù)流相對(duì)應(yīng),同時(shí),還與控制流的流出相對(duì)應(yīng)。

22、(4)實(shí)體聯(lián)系模型:被用來(lái)模擬系統(tǒng)數(shù)據(jù)部件之間的相互關(guān)系。實(shí)體聯(lián)系模型獨(dú)立于當(dāng)前的系統(tǒng)狀態(tài),并與具體的計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言無(wú)關(guān)。結(jié)構(gòu)化方法的核心問(wèn)題3. 實(shí)現(xiàn)模型 SP的主要任務(wù)就是要在系統(tǒng)行為和功能模型的基礎(chǔ)上建立系統(tǒng)的實(shí)現(xiàn)模型。實(shí)現(xiàn)該模型的主要工具有: (1)處理器模型:在多處理器系統(tǒng)和網(wǎng)絡(luò)環(huán)境中,還需要將處理器分成不同的組,以便確定操作在哪個(gè)處理器上進(jìn)行。 (2)任務(wù)模型:任務(wù)模型建立在處理器模型的基礎(chǔ)之上,它將所有過(guò)程都劃分成操作系統(tǒng)的任務(wù)。 (3)結(jié)構(gòu)圖:結(jié)構(gòu)圖是使用圖形符號(hào)來(lái)描述系統(tǒng)的過(guò)程和結(jié)構(gòu)的工具。結(jié)構(gòu)圖常由數(shù)據(jù)流圖轉(zhuǎn)換而來(lái),它展示了模塊的劃分、層次和組織結(jié)構(gòu)以及模塊間的通信接口

23、,從而有助于設(shè)計(jì)者和程序開發(fā)人員進(jìn)行系統(tǒng)的設(shè)計(jì)。在結(jié)構(gòu)圖中,通常有一個(gè)主模塊在最高層,由該主模塊啟動(dòng)程序并協(xié)調(diào)所有的模塊。低級(jí)模塊則包含更詳細(xì)的功能設(shè)計(jì)。結(jié)構(gòu)化方法的核心問(wèn)題3. 實(shí)現(xiàn)模型 (4)模塊設(shè)計(jì):在結(jié)構(gòu)化方法中,SP階段的目標(biāo)就是將系統(tǒng)分解成更容易實(shí)現(xiàn)和維護(hù)的模塊。SP方法要求每個(gè)模塊執(zhí)行單一的功能,而且不同模塊間的依賴性要盡可能低。 (5)實(shí)現(xiàn)階段:實(shí)現(xiàn)階段包括系統(tǒng)的編碼、測(cè)試和安裝。這一階段的產(chǎn)物主要是能夠模擬現(xiàn)實(shí)世界的軟件系統(tǒng)。除此之外,軟件文檔和幫助用戶熟悉系統(tǒng)的客戶培訓(xùn)計(jì)劃也是這一階段的產(chǎn)物。面向?qū)ο蟮姆椒?面向?qū)ο笫墙?0年來(lái)國(guó)內(nèi)外IT行業(yè)最為關(guān)注的技術(shù)之一,面向?qū)ο蠹夹g(shù)

24、是一種按照人們對(duì)現(xiàn)實(shí)世界習(xí)慣的認(rèn)識(shí)論和思維方式來(lái)研究和模擬客觀世界的方法學(xué)。 它將現(xiàn)實(shí)世界中的任何事物都視為“對(duì)象”,將客觀世界看成是由許多不同種類的對(duì)象構(gòu)成的,每一個(gè)對(duì)象都有自己的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象之間的相互聯(lián)系和相互作用就構(gòu)成了完整的客觀世界。面向?qū)ο蟮乃枷氚丛O(shè)計(jì)思想來(lái)分,傳統(tǒng)的軟件系統(tǒng)開發(fā)可分為自頂向下和自底向上兩種。流行的結(jié)構(gòu)化方法采用自頂向下的設(shè)計(jì)思想。但是,面向?qū)ο蠓椒炔皇亲皂斚蛳路椒ㄒ膊皇亲缘紫蛏戏椒?。盡管它兼有這兩者的一些特點(diǎn)。 一方面,面向?qū)ο蠓椒ü膭?lì)人們從問(wèn)題的基本的、簡(jiǎn)單的方面入手,用對(duì)象來(lái)考慮如何描述問(wèn)題的解決,然后抽象并確定類,得到具有一般性的解決問(wèn)題的方

25、法,這正是自底向上的本質(zhì); 另一方面,面向?qū)ο蟮姆椒ㄓ忠笕藗兠嫦蚰繕?biāo),考慮為達(dá)到這一目標(biāo)如何建立這些基本的對(duì)象,這正體現(xiàn)了自頂向下的思想。面向?qū)ο蠓椒◤囊婚_始就強(qiáng)調(diào)結(jié)構(gòu)與代碼的共享與重用 。它與傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)思想比起來(lái),有著明顯的優(yōu)點(diǎn)。 代碼的可重用性好:隨著開發(fā)平臺(tái)以及應(yīng)用要求越來(lái)越復(fù)雜,應(yīng)用程序的規(guī)模變得越來(lái)越龐大,代碼重用成了提高程序設(shè)計(jì)效率的關(guān)鍵??删S護(hù)性和可擴(kuò)充性好:用傳統(tǒng)的面向過(guò)程語(yǔ)言開發(fā)出來(lái)的軟件很難維護(hù),是長(zhǎng)期困擾人們的一個(gè)嚴(yán)重問(wèn)題,也是軟件危機(jī)的突出表現(xiàn) 穩(wěn)定性好: 結(jié)構(gòu)化程序設(shè)計(jì)也存在模塊的獨(dú)立性,因此結(jié)構(gòu)化軟件也有一定的穩(wěn)定性。但結(jié)構(gòu)化設(shè)計(jì)是通過(guò)過(guò)程(函數(shù)、子程序)的

26、概念來(lái)實(shí)現(xiàn)的 。 面向?qū)ο蟮姆椒ǜ拍钆c思想 所謂面向?qū)ο蠹夹g(shù),顧名思義,就是以對(duì)象觀點(diǎn)來(lái)分析現(xiàn)實(shí)世界中的問(wèn)題。從普通人認(rèn)識(shí)世界的觀點(diǎn)出發(fā),把事物歸類、綜合,提取共性并加以描述。在面向?qū)ο蟮南到y(tǒng)中,世界被看成是獨(dú)立對(duì)象的集合,對(duì)象之間通過(guò)過(guò)程(在面向?qū)ο笮g(shù)語(yǔ)中稱之為“消息”)相互通信。 面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、消息傳送和多態(tài)性等概念來(lái)構(gòu)造系統(tǒng)的軟件開發(fā)方法。OO方法的產(chǎn)生和發(fā)展結(jié)構(gòu)化生命周期法難以控制、處理和適應(yīng)變化的矛盾,因此產(chǎn)生了原型化方法來(lái)進(jìn)行彌補(bǔ),原型化方法又需要有快速原型生成工具來(lái)支持。這兩種方法都是從一般系統(tǒng)工程的角度采用計(jì)算機(jī)語(yǔ)言來(lái)描述、處理自然世界,這樣

27、必然造成系統(tǒng)分析、設(shè)計(jì)與其事物管理的差距,使管理信息系統(tǒng)在應(yīng)用上產(chǎn)生了許多困難和矛盾。 在20世紀(jì)80年代初期產(chǎn)生了面向?qū)ο蟮脑O(shè)計(jì)方法(OOP),面向?qū)ο笤O(shè)計(jì)方法既吸取了以前開發(fā)方法的優(yōu)點(diǎn),同時(shí)又正視和順應(yīng)了現(xiàn)實(shí)世界由物質(zhì)和意識(shí)兩部分組成,是近20年來(lái)發(fā)展起來(lái)的基于問(wèn)題對(duì)象的一種自底向上的系統(tǒng)開發(fā)方法。面向?qū)ο蟮乃枷胧紫瘸霈F(xiàn)在程序設(shè)計(jì)的語(yǔ)言中,產(chǎn)生了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(Object-Oriented Programming, OOP),并進(jìn)而產(chǎn)生面向?qū)ο蠹夹g(shù)和方法。 一般認(rèn)為,面向?qū)ο蟮母拍钇鹪从?0世紀(jì)70年代挪威的K.Nyguarded等人開發(fā)的模擬離散事件的程序設(shè)計(jì)語(yǔ)言Simula6

28、7。但真正的面向?qū)ο笤O(shè)計(jì)(OOP)還是來(lái)源于Alan Keyz主持設(shè)計(jì)的Smalltalk語(yǔ)言。 由Xerox Learning Research Group所研制的Smalltalk-80系統(tǒng),則是較全面地體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的特征,標(biāo)志面向?qū)ο蟪绦蛟O(shè)計(jì)方法得到比較完善實(shí)現(xiàn),從而興起了面向?qū)ο笱芯康母叱?。面向?qū)ο蟮幕靖拍顚?duì)象 Object 對(duì)象是客觀實(shí)體的抽象表示,是由描述對(duì)象屬性的數(shù)據(jù)和對(duì)這些數(shù)據(jù)進(jìn)行的操作行為兩部分組成。 屬性是用來(lái)描述對(duì)象靜態(tài)特征的數(shù)據(jù)項(xiàng)。 行為是用來(lái)描述對(duì)象動(dòng)態(tài)特征的操作方法或算法。 消息 Message 對(duì)象通過(guò)對(duì)外提供服務(wù)發(fā)揮自身作用,對(duì)象之間的相互服務(wù)是

29、通過(guò)消息來(lái)連接實(shí)現(xiàn)的。 消息是為了實(shí)現(xiàn)某一功能而要求某個(gè)對(duì)象執(zhí)行其中某個(gè)功能操作的規(guī)格說(shuō)明。它一般含有下述信息:提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和響應(yīng)信息。對(duì)象接收消息,根據(jù)消息及消息參數(shù)調(diào)用自己的服務(wù),處理并予以響應(yīng),從而實(shí)現(xiàn)系統(tǒng)功能。 消息是對(duì)象之間相互作用和相互協(xié)作的一種機(jī)制,更通俗地講,OOP中的術(shù)語(yǔ)“消息”只不過(guò)是現(xiàn)實(shí)世界中的“請(qǐng)求”、“命令”等日常生活用語(yǔ)的同義詞。面向?qū)ο蟮幕靖拍钕?Message 消息就是請(qǐng)求某個(gè)對(duì)象執(zhí)行它所包含的某項(xiàng)處理操作的指令信息。實(shí)質(zhì)是對(duì)某個(gè)類對(duì)象的操作函數(shù)的調(diào)用。例如, student S1; S1.display()是一個(gè)消息。 一個(gè)消息一

30、般由三部分組成:接收消息的對(duì)象名、操作函數(shù)名、函數(shù)的參數(shù)。 消息是對(duì)象之間的通信機(jī)制。一個(gè)對(duì)象可以同時(shí)向多個(gè)對(duì)象發(fā)送消息,也可以接受多個(gè)對(duì)象發(fā)來(lái)的消息。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍罘椒?Method “方法”對(duì)應(yīng)于對(duì)象的能力,它是實(shí)現(xiàn)對(duì)象所具有的功能操作代碼段,是響應(yīng)消息的“方法”。在C+中,方法即是類中定義的成員函數(shù),它只不過(guò)是該類對(duì)象所能執(zhí)行的操作的算法實(shí)現(xiàn)。 方法與消息是一一對(duì)應(yīng)的,每當(dāng)對(duì)象收到一個(gè)消息,它除了能用其“智能化”的選擇機(jī)制知道和決定應(yīng)該去做什么(what to do)外,還要知道和決定該怎樣做(how to do)。而方法正是與對(duì)象相連決定怎么做的操作執(zhí)行代碼。 方

31、法是實(shí)現(xiàn)每條消息具體功能的手段。類 Class 在面向?qū)ο蟮能浖夹g(shù)中,類可以定義為由數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作所形成的集合,或所有相似對(duì)象的狀態(tài)變量和行為構(gòu)成的模板。 類是對(duì)一組對(duì)象的抽象歸納與概括,更確切地說(shuō),類是對(duì)一組具有相同數(shù)據(jù)成員和相同操作成員的對(duì)象的定義或說(shuō)明。而每個(gè)對(duì)象都是某個(gè)類的一個(gè)具體實(shí)例。 在OOP中,每個(gè)對(duì)象由一個(gè)類來(lái)定義或說(shuō)明,類可以看作生產(chǎn)具有相同屬性和行為方式對(duì)象的模板。在面向?qū)ο笙到y(tǒng)中,我們一般就是根據(jù)對(duì)象的相似性(包括相似的存儲(chǔ)特征和相似的操作特征)來(lái)組織類的。簡(jiǎn)而言之,按照對(duì)象的相似性,我們把對(duì)象分成一些類和子類,將相似對(duì)象的集合即稱為“類”。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)?/p>

32、象的基本概念類 Class 在面向?qū)ο笙到y(tǒng)中,人們一般不會(huì)逐個(gè)描述具體對(duì)象,而是將注意力集中于具有相同特性的一類對(duì)象,抽象出這類對(duì)象的共同結(jié)構(gòu)和行為,用“類”進(jìn)行一般性描述。 類是具有相同屬性和行為的對(duì)象集合的抽象描述; 類的內(nèi)部包括屬性和行為兩個(gè)主要部分。面向?qū)ο蟮幕靖拍顚?shí)例 Instance 類是對(duì)具有相同屬性和行為的一組對(duì)象的抽象描述。因此,它可作為一種用戶自定義類型和創(chuàng)建對(duì)象的樣板,而按照這種樣板所創(chuàng)建的一個(gè)個(gè)具體對(duì)象就是類的實(shí)際例子,通常稱為實(shí)例。 例如,student S1(051001,李明,男,90)繼承 Inheritance 繼承是對(duì)象類間的一種相關(guān)關(guān)系,指對(duì)象繼承它所在

33、類的結(jié)構(gòu)、操作和約束,也指一個(gè)類繼承另外一個(gè)類的結(jié)構(gòu)、操作和約束。繼承體現(xiàn)了一種共享機(jī)制。 繼承機(jī)制既是一個(gè)對(duì)象類獲得另一對(duì)象類特征的過(guò)程,也是一個(gè)以分層分級(jí)結(jié)構(gòu)組織、構(gòu)造和重用類的工具。它是解決客觀對(duì)象“相似但又不同”的妙法。 繼承機(jī)制具有能清晰體現(xiàn)相似類間的層次結(jié)構(gòu)關(guān)系;能減小代碼和數(shù)據(jù)的重復(fù)冗余度,大大增強(qiáng)程序的重用性;能通過(guò)增強(qiáng)一致性來(lái)減少模塊間的接口和界面,大大增強(qiáng)程序的易維護(hù)性等特點(diǎn)。 如果沒(méi)有繼承概念的支持,則OOP中所有的類就象一盤各自為陣、彼此獨(dú)立的散沙,每次軟件開發(fā)都要從“一無(wú)所有”開始。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍罾^承 Inheritance 父類、子類面向?qū)ο蟮?/p>

34、基本概念繼承 Inheritance 繼承關(guān)系: 一代繼承:從父類到子類只延伸一次。如圖(a)所示。 多代繼承:從父類到子類延伸多次。如圖(b)所示。 單繼承:如果在一個(gè)繼承層次結(jié)構(gòu)中,每個(gè)子類只有一個(gè)直接父類,則這種繼承稱為單繼承。如圖(a)和(b)所示。 多繼承:如果在一個(gè)繼承層次結(jié)構(gòu)中,每個(gè)子類可有不止一個(gè)直接父類,則這種繼承稱為多繼承。如圖(c)所示。封裝 Encapsulation 即信息隱藏。它保證軟件部件具有較好的模塊性,可以說(shuō)封裝是所有主流信息系統(tǒng)方法學(xué)中的共同特征,它對(duì)于提高軟件清晰度和可維護(hù)性,以及軟件的分工有重要的意義。我們從兩個(gè)方面來(lái)理解封裝的含義。 (1)當(dāng)設(shè)計(jì)一個(gè)程

35、序的總體結(jié)構(gòu)時(shí),程序的每個(gè)成分應(yīng)該封裝或隱藏為一個(gè)獨(dú)立的模塊,定義每一模塊時(shí)應(yīng)主要考慮其實(shí)現(xiàn)的功能,而盡可能少地顯露其內(nèi)部處理邏輯。 (2)封裝表現(xiàn)在對(duì)象概念上。對(duì)象是一個(gè)很好的封裝體,它把數(shù)據(jù)和服務(wù)封裝于一個(gè)內(nèi)在的整體。對(duì)象向外提供某種界面(接口),可能包括一組數(shù)據(jù)(屬性)和一組操作(服務(wù)),而把內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)(如函數(shù)體)隱藏起來(lái),外部需要該對(duì)象時(shí),只需要了解它的界面就可以,即只能通過(guò)特定方式才能使用對(duì)象的屬性或?qū)ο蟆_@樣既提供了服務(wù),又保護(hù)自己不輕易受外界的影響。面向?qū)ο蟮幕靖拍罘庋b Encapsulation 所謂封裝就是把對(duì)象的屬性和行為結(jié)合成一個(gè)獨(dú)立的單位,使外界不能直接訪問(wèn)或修改

36、這些數(shù)據(jù)和代碼,外界只能通過(guò)對(duì)象提供的接口函數(shù)來(lái)改變或獲取對(duì)象的屬性數(shù)據(jù),這就實(shí)現(xiàn)了消息隱蔽。 封裝是面向?qū)ο蠹夹g(shù)的一個(gè)基本特征。 封裝的目的實(shí)現(xiàn)信息的有效隱蔽。面向?qū)ο蟮幕靖拍罾?,Class Student private: char* id; /學(xué)號(hào) char* name; /姓名 int age; /年齡 public: student(char* x,char* y,int z) void modify() age=age+1; Void print() 封裝 Encapsulation優(yōu)點(diǎn):(a) 封裝起了信息隱蔽作用,增強(qiáng)了對(duì)象的獨(dú)立性,使外界只關(guān)心它對(duì)外所提供的接口,忽略其內(nèi)

37、部細(xì)節(jié)。(b) 封裝使外界不能隨意存取對(duì)象的內(nèi)部屬性,從而有效地避免外部錯(cuò)誤對(duì)它的影響,提高了系統(tǒng)的安全性和可靠性。(c) 封裝的結(jié)果隱蔽了程序的復(fù)雜性,提供了代碼的重用性,降低了軟件開發(fā)的難度。面向?qū)ο蟮幕靖拍罾?,Class Student private: char* id; /學(xué)號(hào) char* name; /姓名 int age; /年齡 public: student(char* x,char* y,int z) void modify() age=age+1; Void print() main()Student S1; S1. modify() ; 多態(tài)性 Polymorphi

38、sm 指相同的操作(或函數(shù),過(guò)程)可作用于多種類型的對(duì)象并獲得不同的結(jié)果。在面向?qū)ο蠓椒ㄖ校山o不同類型的對(duì)象發(fā)送相同的消息,而不同的對(duì)象分別做出不同的處理。例如給整數(shù)對(duì)象和復(fù)數(shù)對(duì)象定義不同的數(shù)據(jù)結(jié)構(gòu)和加法運(yùn)算,但可以給它們發(fā)送相同的消息“做加法運(yùn)算”,整數(shù)對(duì)象接收此消息后做整數(shù)加法運(yùn)算,復(fù)數(shù)對(duì)象則做復(fù)數(shù)加法運(yùn)算,產(chǎn)生不同的結(jié)果。多態(tài)性增強(qiáng)了軟件的靈活性、重用性、可理解性。面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍?多態(tài)性 Polymorphism 為了正確反映客觀世界的多態(tài)性,面向?qū)ο蟪绦蛟O(shè)計(jì)中也采用了多態(tài)性,即在不同類中,可用相同的函數(shù)名實(shí)現(xiàn)功能不同的函數(shù)。如下圖所示。 多態(tài)性的優(yōu)點(diǎn):高層代碼(

39、算法)只需寫一次,低層便可多次復(fù)用,可提高程序設(shè)計(jì)的靈活性和效率。對(duì)象模型技術(shù)OMT模型是為了在構(gòu)造事物前理解事物而對(duì)事物作出的一種抽象,它忽略事物的非本質(zhì)內(nèi)容。對(duì)象模型技術(shù)(Object Modeling Technique,OMT)是建立系統(tǒng)模型的方法學(xué),它由三種模型組成。對(duì)象模型表示系統(tǒng)的靜態(tài)的、結(jié)構(gòu)化的數(shù)據(jù),描述一個(gè)根據(jù)對(duì)象和相對(duì)實(shí)體關(guān)系的系統(tǒng)的靜態(tài)結(jié)構(gòu);動(dòng)態(tài)模型表示系統(tǒng)的動(dòng)態(tài)的、行為的控制方式,是根據(jù)事件和狀態(tài)描述系統(tǒng)的控制結(jié)構(gòu);功能模型則表示了系統(tǒng)的轉(zhuǎn)換功能,是根據(jù)屬性值和功能來(lái)描述系統(tǒng)的計(jì)算結(jié)構(gòu)。軟件過(guò)程是三方面的結(jié)合: 使用數(shù)據(jù)結(jié)構(gòu)(對(duì)象模型) 按時(shí)間調(diào)整操作順序(動(dòng)態(tài)模型)

40、轉(zhuǎn)換屬性值(功能模型)對(duì)象模型 對(duì)象模型描述了系統(tǒng)中對(duì)象結(jié)構(gòu),包括對(duì)象的標(biāo)識(shí)、與其他對(duì)象的關(guān)系、屬性和操作。對(duì)象模型提供了動(dòng)態(tài)模型和功能模型都適用的基本框架,對(duì)象是現(xiàn)實(shí)世界劃分事件的單元,是模型中的組成成分。 對(duì)象模型用包含對(duì)象類的對(duì)象圖來(lái)表示。類按層次排列,并共享公共結(jié)構(gòu)和行為特征,類與其他類相關(guān)聯(lián)。類定義了每個(gè)對(duì)象實(shí)例所取的屬性值和每個(gè)對(duì)象執(zhí)行的操作。動(dòng)態(tài)模型 動(dòng)態(tài)模型描述了系統(tǒng)中與時(shí)間和操作序列有關(guān)的內(nèi)容,即標(biāo)志改變的事件、事件序列、定義事件上下文狀態(tài)以及事件和狀態(tài)的組織。動(dòng)態(tài)模型眼于控制,即描述系統(tǒng)中發(fā)生的操作序列。 動(dòng)態(tài)模型用狀態(tài)圖表示。每個(gè)狀態(tài)圖展示了系統(tǒng)中對(duì)象類所允許的狀態(tài)和事件

41、序列。狀態(tài)圖中的動(dòng)作對(duì)應(yīng)于功能模型中的功能,狀態(tài)圖中的事件為對(duì)象模型中對(duì)對(duì)象的操作。功能模型 功能模型描述了系統(tǒng)與值轉(zhuǎn)換有關(guān)的諸方面內(nèi)容,即功能、映像、約束和功能性依賴。功能模型只著眼于系統(tǒng)做什么,而不考慮如何做、什么時(shí)候做。 功能模型用數(shù)據(jù)流圖表示。數(shù)據(jù)流圖表示根據(jù)輸入值和函數(shù)進(jìn)行的輸出值的計(jì)算與值之間的相關(guān)性,而不考慮功能是否執(zhí)行和什么時(shí)候執(zhí)行。在動(dòng)態(tài)模型中,功能作為動(dòng)作被喚醒,而在對(duì)象模型中則作為對(duì)對(duì)象的操作。三種模型的聯(lián)系 對(duì)象模型描述了動(dòng)態(tài)模型和功能模型操作的數(shù)據(jù)結(jié)構(gòu)。對(duì)象模型中的操作對(duì)應(yīng)于動(dòng)態(tài)模型中的事件和功能模型中的功能。 動(dòng)態(tài)模型描述對(duì)象的控制結(jié)構(gòu),它展示了依賴于對(duì)象值并導(dǎo)致改

42、變對(duì)象值和喚醒功能的動(dòng)作的決策。 功能模型描述由對(duì)象模型中的操作和動(dòng)態(tài)模型的動(dòng)作喚醒的功能,功能是對(duì)象模型指定的數(shù)據(jù)值上的操作,功能模型給出對(duì)象值上的約束。面向?qū)ο蟮姆治龇椒嫦驅(qū)ο蠓治?OOA)是面向?qū)ο?OO)方法的一個(gè)組成部分,它利用面向?qū)ο蟮姆椒ㄟM(jìn)行系統(tǒng)分析,即在明確的用戶需求的基礎(chǔ)上,通過(guò)對(duì)問(wèn)題空間的分析,把問(wèn)題分解成一些類或?qū)ο螅页鲞@些對(duì)象的特點(diǎn)(即屬性和服務(wù)),以及對(duì)象間的關(guān)系(一般/特殊,整體/部分關(guān)系),并由此產(chǎn)生一個(gè)規(guī)格說(shuō)明,建立以對(duì)象為單元的信息系統(tǒng)邏輯模型,為面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)提供指導(dǎo)。 到目前為止,面向?qū)ο蠓治龇椒ㄓ性S多種:有Booc

43、h方法(OOD)Coad和Yourdon方法(OOA&D)Jacobson方法(OOSE)、Rumbauph方法(OMT)Wassman-Pircher方法(OOSD)等這些方法從不同角度進(jìn)行分析,各有特色,但距問(wèn)題的全面解決還有一定的距離。OOA模型及其規(guī)約基本模型:類圖模 型 規(guī) 約需求模型:用況圖輔助模型:包圖順序圖對(duì)象層特征層關(guān)系層OOA過(guò)程確定系統(tǒng)邊界發(fā)現(xiàn)參與者定義用況發(fā)現(xiàn)對(duì)象定義類定義對(duì)象的特征定義對(duì)象間的關(guān)系原型開發(fā)建立模型規(guī)約建立需求模型建立基本模型建立包圖建立順序圖其他建立輔助模型OOA的系統(tǒng)模型OOA的主要目標(biāo)是利用面向?qū)ο蟮姆椒ǎ驹趯?duì)象的角度對(duì)所要研究的問(wèn)題空間及系統(tǒng)進(jìn)

44、行深刻的理解,正確認(rèn)識(shí)問(wèn)題空間中的事務(wù)及其事務(wù)之間的關(guān)系,識(shí)別描述問(wèn)題空間及系統(tǒng)所需的對(duì)象、類,定義對(duì)象及類的屬性與服務(wù),建立與問(wèn)題空間相映射、相對(duì)應(yīng)的系統(tǒng)對(duì)象模型。 OOA的系統(tǒng)模型包括三大部分,即基本模型、補(bǔ)充模型及系統(tǒng)的詳細(xì)說(shuō)明。OOA的系統(tǒng)模型基本模型基本模型是以類圖的形式來(lái)表達(dá)系統(tǒng)最重要的信息,而類圖則由類、屬性、服務(wù)、泛化特化結(jié)構(gòu)、整體部分結(jié)構(gòu)、實(shí)例連接和消息連接等主要成分所構(gòu)成。這些成分所表達(dá)的模型信息可分為三個(gè)層次,即對(duì)象層、特征層和關(guān)系層。 OOA的系統(tǒng)模型補(bǔ)充模型補(bǔ)充模型是基本模型之外的用于幫助理解并延伸基本模型的模型,補(bǔ)充模型由主題圖、使用實(shí)例和交互圖組成。 (1)主題圖

45、是具有較強(qiáng)聯(lián)系的類組織的集合體,它是對(duì)系統(tǒng)類圖的進(jìn)一步抽象,是較高層次上的系統(tǒng)視圖。主題圖描述了系統(tǒng)的主題構(gòu)成,它簡(jiǎn)明直觀,無(wú)論是對(duì)開發(fā)者還是對(duì)使用者都有很大幫助。 (2)使用實(shí)例(Use Case)是對(duì)系統(tǒng)功能使用情況的文字描述,每個(gè)使用實(shí)例對(duì)應(yīng)著系統(tǒng)的一個(gè)功能,它描述系統(tǒng)的外實(shí)體與系統(tǒng)之間的信息交互關(guān)系。(3)交互圖(Interaction Diagram)是一個(gè)使用實(shí)例與完成相應(yīng)功能的系統(tǒng)成分之間的對(duì)照?qǐng)D,它具體表明了使用實(shí)例中陳述的事件是由系統(tǒng)中的哪個(gè)服務(wù)來(lái)響應(yīng)和完成,以及這個(gè)服務(wù)在執(zhí)行過(guò)程中又進(jìn)一步用到哪些其它對(duì)象中的服務(wù)。OOA的系統(tǒng)模型系統(tǒng)的詳細(xì)說(shuō)明系統(tǒng)的詳細(xì)說(shuō)明詳細(xì)說(shuō)明是按照面

46、向?qū)ο蠓椒ǖ囊蟾袷綄?duì)系統(tǒng)模型作出的進(jìn)一步解釋,它主要由類描述模板構(gòu)成。對(duì)于OOA系統(tǒng)模型的每一類,一般都要建立一個(gè)類描述模板。類描述模板的構(gòu)成有:對(duì)整個(gè)類及其對(duì)象的進(jìn)一步說(shuō)明、對(duì)每個(gè)屬性和服務(wù)的進(jìn)一步說(shuō)明和其他必要的說(shuō)明。 OOA的系統(tǒng)模型給出了對(duì)OOA分析結(jié)果的完整表達(dá)和精確描述,在這3個(gè)組成部分中,基本模型是描述表達(dá)OOA的核心,補(bǔ)充模型是對(duì)基本模型的必要補(bǔ)充和輔助說(shuō)明,而詳細(xì)說(shuō)明則給出了系統(tǒng)模型中類、對(duì)象、屬性和服務(wù)的詳細(xì)定義與進(jìn)一步解釋。這三個(gè)部分組合起來(lái),構(gòu)成OOA分析文檔的主要內(nèi)容,也是OOA的主要工具,OOA就是根據(jù)這一框架來(lái)展開工作的。OOA分析過(guò)程在一個(gè)系統(tǒng)開發(fā)過(guò)程中進(jìn)行了

47、系統(tǒng)業(yè)務(wù)調(diào)查以后,就可以按照面向?qū)ο蟮乃枷雭?lái)分析問(wèn)題了。OOA所強(qiáng)調(diào)的是在系統(tǒng)調(diào)查資料的基礎(chǔ)上,針對(duì)OO方法所需要的素材進(jìn)行歸類分析和整理.OOA強(qiáng)調(diào)如下基本觀點(diǎn):分析規(guī)格說(shuō)明的總體框架貫穿結(jié)構(gòu)化方法,如整體和局部,類和成員,對(duì)象和屬性等; 用消息進(jìn)行用戶和系統(tǒng)之間以及系統(tǒng)中實(shí)例之間的相互通訊。OOA第一步:確定類對(duì)象1、找出候選的類對(duì)象有兩種方法:(1)找出問(wèn)題域中的五類事物作為候選類對(duì)象 可感知的物理實(shí)體,如書、汽車 人或組織的角色,如教師、雇員 應(yīng)該記憶的事件,如演出、訪問(wèn) 兩個(gè)或多個(gè)對(duì)象的相互作用,通常具有交易或接觸的性質(zhì),如購(gòu)買,結(jié)婚 需要說(shuō)明的概念,如政策(2)將需求分析中的名詞或

48、名詞短語(yǔ)作為候選者 例1:各劇院的演出售票預(yù)訂系統(tǒng)按第一種方法,得到候選的類-&-對(duì)象為:劇院、演出、票、預(yù)訂、系統(tǒng) 例2:企業(yè)管理信息系統(tǒng) 按第二種方法,得到候選的類-&-對(duì)象為:公司、部門、經(jīng)理、產(chǎn)品、員工、工人、項(xiàng)目OOA第一步:確定類對(duì)象2、篩選出正確的類對(duì)象 從候選的類對(duì)象中去掉不正確或不必要的類對(duì)象,主要遵循下列原則: 冗余的:兩個(gè)類名表示了相同的信息 無(wú)關(guān)的: 籠統(tǒng)的(模糊的):用精確的代替 屬性:去掉無(wú)關(guān)的屬性 操作:動(dòng)詞定義的操作是否作為類?如撥號(hào) 實(shí)現(xiàn):分析階段少或不考慮怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)OOA第二步:確定關(guān)聯(lián) 兩個(gè)或多個(gè)對(duì)象之間的相互依賴、相互作用的關(guān)系就是關(guān)聯(lián)。 關(guān)聯(lián)關(guān)系

49、的確定(1)抽取需求陳述中使用的描述性動(dòng)詞或動(dòng)詞詞組(2)找到隱含的關(guān)聯(lián)關(guān)系(3)補(bǔ)充一些必要的關(guān)聯(lián)關(guān)系(4)去掉不正確或不必要的關(guān)聯(lián)OOA第二步:確定關(guān)聯(lián) 圖形顏色中心位置筆粗細(xì)筆類型移動(dòng)(move)選擇(select)旋轉(zhuǎn)(rotate)顯示(display)0維1維定位放大2維定位填充類型放大填充點(diǎn)顯示線終點(diǎn)顯示弧半徑開始角弧角顯示多邊形邊數(shù)頂點(diǎn)顯示圓直徑顯示旋轉(zhuǎn)表示泛化關(guān)系的圖形符號(hào)OOA第二步:確定關(guān)聯(lián)例:例2得到類間的關(guān)系為: 動(dòng)詞 相關(guān)類 關(guān)系 有 公司和部門間 組合/受限關(guān)聯(lián) 管理 部門和經(jīng)理 0/1:1 生產(chǎn) 部門和產(chǎn)品 1:N 為之工作 公司和員工 1:N 分為 員工和工人

50、 ISA(泛化) 員工和經(jīng)理 ISA(泛化) 參加 工人和項(xiàng)目 M:N 主持 經(jīng)理和項(xiàng)目 1:NOOA第二步:確定關(guān)聯(lián)公司的對(duì)象模型OOA第三步:確定屬性屬性是對(duì)象的特性屬性的確定 分析:需求陳述中的名詞詞組表示屬性,形容詞作為確定屬性的線索,如畫一個(gè)紅色的圓; 選擇:刪去不正確和不必要的屬性O(shè)OA第四步:識(shí)別繼承關(guān)系一般說(shuō)來(lái),可以使用兩種方式建立繼承關(guān)系: (1)自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個(gè)過(guò)程實(shí)質(zhì)上模擬了人類歸納思維過(guò)程。 (2)自頂向下:把現(xiàn)有類細(xì)化成更具體的子類,這模似了人類的演繹思維過(guò)程。如:頭與眼、鼻、耳、嘴之間是組合關(guān)系 人、男人、男孩是繼承關(guān)系OOA第五步:

51、確定操作對(duì)象=數(shù)據(jù)+操作 在確定類中應(yīng)該有的服務(wù)時(shí),既要考慮該類實(shí)體的常規(guī)行為,又要考慮為完成本系統(tǒng)功能所需要提供的操作。注意:這里不一定要與數(shù)據(jù)庫(kù)系統(tǒng)分析和設(shè)計(jì)結(jié)合起來(lái)OOA的符號(hào)表示OOA的符號(hào)表示OOA實(shí)例1:自動(dòng)取款機(jī)(ATM)系統(tǒng)銀行ATM系統(tǒng)1.ATM系統(tǒng)的需求 某銀行擬開發(fā)一個(gè)自動(dòng)取款機(jī)系統(tǒng),它是一個(gè)由自動(dòng)取款機(jī)、中央計(jì)算機(jī)、分行計(jì)算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)。ATM和中央計(jì)算機(jī)由總行投資購(gòu)買??傂袚碛卸嗯_(tái)ATM,分別設(shè)在全市各主要街道上。分行負(fù)責(zé)提供分行計(jì)算機(jī)和柜員終端。柜員終端設(shè)在分行營(yíng)業(yè)廳及分行下屬的各個(gè)儲(chǔ)蓄所內(nèi)。該系統(tǒng)的軟件開發(fā)成本由各個(gè)分行分?jǐn)偂?銀行柜員使用柜員終端處

52、理儲(chǔ)戶提交的儲(chǔ)蓄事務(wù)。儲(chǔ)戶可以用現(xiàn)金或支票向自己擁有的某個(gè)賬戶內(nèi)存款或開新賬戶。儲(chǔ)戶也可以從自己的賬戶中取款。通常,一個(gè)儲(chǔ)戶可能擁有多個(gè)賬戶。柜員負(fù)責(zé)把儲(chǔ)戶提交的存款或取款事務(wù)輸進(jìn)柜員終端,接收儲(chǔ)戶交來(lái)的現(xiàn)金或支票,或付給儲(chǔ)戶現(xiàn)金。柜員終端與相應(yīng)的分行計(jì)算機(jī)通信,分行計(jì)算機(jī)具體處理針對(duì)某個(gè)賬戶的事務(wù)并且維護(hù)賬戶。OOA實(shí)例11.ATM系統(tǒng)的需求 擁有銀行賬戶的儲(chǔ)戶有權(quán)申請(qǐng)領(lǐng)取現(xiàn)金兌換卡。使用現(xiàn)金兌換卡可以通過(guò)ATM訪問(wèn)自己的賬戶。目前僅限于用現(xiàn)金兌換卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息(例如,某個(gè)指定賬戶上的余額)。將來(lái)可能還要求使用ATM辦理轉(zhuǎn)賬、存款等事務(wù)。 所謂現(xiàn)金兌

53、換卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號(hào)。分行代碼唯一標(biāo)識(shí)總行下屬的一個(gè)分行,卡號(hào)確定了這張卡可以訪問(wèn)哪些賬戶。通常,一張卡可以訪問(wèn)儲(chǔ)戶的若干個(gè)賬戶,但是不一定能訪問(wèn)這個(gè)儲(chǔ)戶的全部賬戶。每張現(xiàn)金兌換卡僅屬于一個(gè)儲(chǔ)戶所有,但是,同一張卡可能有多個(gè)副本,因此,必須考慮同時(shí)在若干臺(tái)ATM上使用同樣的現(xiàn)金兌換卡的可能性。也就是說(shuō),系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問(wèn)。OOA實(shí)例12. 建立對(duì)象模型1) 確定類對(duì)象 類對(duì)象是在問(wèn)題域中客觀存在的,系統(tǒng)分析員的主要任務(wù),就是通過(guò)分析找出這些類對(duì)象。首先,找出所有候選的類對(duì)象;然后,從候選的類對(duì)象中篩選掉不正確的或不必要(1)找出候選的類對(duì)象 方法:非正式分析過(guò)程

54、 從需求陳述中找出下列名詞,可以把它們作為類對(duì)象的初步的候選者。OOA實(shí)例12. 建立對(duì)象模型銀行、自動(dòng)取款機(jī)(ATM)、系統(tǒng)、中央計(jì)算機(jī)、分行計(jì)算機(jī)、柜員終端、網(wǎng)絡(luò)、總行、分行、軟件、成本、市、街道、營(yíng)業(yè)廳、儲(chǔ)蓄所、柜員、儲(chǔ)戶、現(xiàn)金、支票、賬戶、事務(wù)、現(xiàn)金兌換卡、余額、磁卡、分行代碼、卡號(hào)、用戶、副本、信息、密碼、類型、取款額、賬單以及訪問(wèn)。 通常,在需求陳述中不會(huì)一個(gè)不漏地寫出問(wèn)題域中所有有關(guān)的類對(duì)象,因此,分析員應(yīng)該根據(jù)領(lǐng)域知識(shí)或常識(shí)進(jìn)一步把隱含的類對(duì)象提取出來(lái)。例如,在ATM系統(tǒng)的需求陳述中雖然沒(méi)寫“通信鏈路”和“事務(wù)日志”,但是,根據(jù)領(lǐng)域知識(shí)和常識(shí)可以知道,在ATM系統(tǒng)中應(yīng)該包含這兩

55、個(gè)實(shí)體。OOA實(shí)例12. 建立對(duì)象模型(2)篩選出正確的類對(duì)象 顯然,僅通過(guò)一個(gè)簡(jiǎn)單、機(jī)械的過(guò)程不可能正確地完成分析工作。非正式分析僅僅幫助我們找到一些候選的類對(duì)象,接下來(lái)應(yīng)該嚴(yán)格考察每個(gè)候選對(duì)象,從中去掉不正確的或不必要的,僅保留確實(shí)應(yīng)該記錄其信息或需要其提供服務(wù)的那些對(duì)象。 篩選時(shí)主要依據(jù)下列標(biāo)準(zhǔn),刪除不正確或不必要的類對(duì)象:冗余、無(wú)關(guān)、籠統(tǒng)、屬性、操作、實(shí)現(xiàn)。 在ATM系統(tǒng)的例子中,經(jīng)過(guò)初步篩選,剩下下列類對(duì)象: ATM、中央計(jì)算機(jī)、分行計(jì)算機(jī)、柜員終端、總行、分行、柜員、儲(chǔ)戶、賬戶、事務(wù)和現(xiàn)金兌換卡。 OOA實(shí)例12. 建立對(duì)象模型2)確定關(guān)聯(lián) 兩個(gè)或多個(gè)對(duì)象之間的相互依賴、相互作用的

56、關(guān)系就是關(guān)聯(lián)。分析確定關(guān)聯(lián),能促使分析員考慮問(wèn)題域的邊緣情況,有助于發(fā)現(xiàn)那些尚未被發(fā)現(xiàn)的類對(duì)象。在分析確定關(guān)聯(lián)的過(guò)程中,不必花過(guò)多的精力去區(qū)分關(guān)聯(lián)和聚集。事實(shí)上,聚集不過(guò)是一種特殊的關(guān)聯(lián),是關(guān)聯(lián)的一個(gè)特例。 (1) 初步確定關(guān)聯(lián) 在需求陳述中使用的描述性動(dòng)詞或動(dòng)詞詞組,通常表示關(guān)聯(lián)關(guān)系。因此,在初步確定關(guān)聯(lián)時(shí),大多數(shù)關(guān)聯(lián)可以通過(guò)直接提取需求陳述中的動(dòng)詞詞組而得出。通過(guò)分析需求陳述,還能發(fā)現(xiàn)一些在陳述中隱含的關(guān)聯(lián)。最后,分析員還應(yīng)該與用戶及領(lǐng)域?qū)<矣懻搯?wèn)題域?qū)嶓w間的相互依賴、相互作用關(guān)系,根據(jù)領(lǐng)域知識(shí)再進(jìn)一步補(bǔ)充一些關(guān)聯(lián)。OOA實(shí)例12. 建立對(duì)象模型2)確定關(guān)聯(lián)(2)篩選 經(jīng)初步分析得出的關(guān)聯(lián)

57、只能作為候選的關(guān)聯(lián),還需經(jīng)過(guò)進(jìn)一步篩選,以去掉不正確的或不必要的關(guān)聯(lián)。篩選時(shí)主要根據(jù)下述標(biāo)準(zhǔn)刪除候選的關(guān)聯(lián)。已刪去的類之間的關(guān)聯(lián)與問(wèn)題無(wú)關(guān)的或應(yīng)在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)瞬時(shí)事件三元關(guān)聯(lián)派生關(guān)聯(lián)(3)進(jìn)一步完善 應(yīng)該進(jìn)一步完善經(jīng)篩選后余下的關(guān)聯(lián),通常從下述幾個(gè)方面進(jìn)行改進(jìn):正名、分解、補(bǔ)充、標(biāo)明階數(shù)OOA實(shí)例12. 建立對(duì)象模型OOA實(shí)例1ATM系統(tǒng)原始對(duì)象圖:2. 建立對(duì)象模型3)劃分主題 在開發(fā)大型、復(fù)雜系統(tǒng)的過(guò)程中,為了降低復(fù)雜程度,人們習(xí)慣于把系統(tǒng)再進(jìn)一步劃分成幾個(gè)不同的主題,也就是在概念上把系統(tǒng)包含的內(nèi)容分解成若干個(gè)范疇子系統(tǒng)。OOA實(shí)例12. 建立對(duì)象模型4)確定屬性 一般說(shuō)來(lái),確定屬性

58、的過(guò)程包括分析和選擇兩個(gè)步驟。 (1)分析: 屬性的確定既與問(wèn)題域有關(guān),也和目標(biāo)系統(tǒng)的任務(wù)有關(guān)。應(yīng)該僅考慮與具體應(yīng)用直接相關(guān)的屬性,不要考慮那些超出所要解決的問(wèn)題范圍的屬性。在分析過(guò)程中應(yīng)該首先找出最重要的屬性,以后再逐漸把其余屬性增添進(jìn)去。在分析階段不要考慮那些純粹用于實(shí)現(xiàn)的屬性。(2)選擇: 認(rèn)真考察經(jīng)初步分析而確定下來(lái)的那些屬性,從中刪掉不正確的或不必要的屬性。通常有以下幾種常見情況。 誤把對(duì)象當(dāng)作屬性; 把鏈屬性誤作為屬性; 把限定誤當(dāng)成屬性; 誤把內(nèi)部狀態(tài)當(dāng)成了屬性; 過(guò)于細(xì)化; 存在不一致的屬性O(shè)OA實(shí)例12. 建立對(duì)象模型4)確定屬性AMT對(duì)象模型的屬性O(shè)OA實(shí)例12. 建立對(duì)象

59、模型5)識(shí)別繼承關(guān)系 確定了類中應(yīng)該定義的屬性之后,就可以利用繼承機(jī)制共享公共性質(zhì),并對(duì)系統(tǒng)中眾多的類加以組織。 一般說(shuō)來(lái),可以使用兩種方式建立繼承(即歸納)關(guān)系。 自底向上:抽象出現(xiàn)有類的共同性質(zhì)泛化出父類,這個(gè)過(guò)程實(shí)質(zhì)上模擬了人類歸納思維過(guò)程。 自頂向下:把現(xiàn)有類細(xì)化成更具體的子類,這模擬了人類的演繹思維過(guò)程。 OOA實(shí)例12. 建立對(duì)象模型5)識(shí)別繼承關(guān)系 帶有繼承關(guān)系的ATM對(duì)象模型 OOA實(shí)例12. 建立對(duì)象模型5)評(píng)價(jià)、修正模型 僅僅經(jīng)過(guò)一次建模過(guò)程很難得到完全正確的對(duì)象模型。事實(shí)上,軟件開發(fā)過(guò)程就是一個(gè)多次反復(fù)修改、逐步完善的過(guò)程。在建模的任何一個(gè)步驟中,如果發(fā)現(xiàn)了模型的缺陷,都

60、必須返回到前期階段進(jìn)行修改。由于面向?qū)ο蟮母拍詈头?hào)在整個(gè)開發(fā)過(guò)程中都是一致的,因此遠(yuǎn)比使用結(jié)構(gòu)化分析和設(shè)計(jì)技術(shù)更容易實(shí)現(xiàn)反復(fù)修改及逐步完善的過(guò)程。OOA實(shí)例1修正后的對(duì)象模型3. 建立動(dòng)態(tài)模型建立動(dòng)態(tài)模型的步驟: 第一步,是編寫典型交互行為的腳本。雖然腳本中不可能包括每個(gè)偶然事件,但是,至少必須保證不遺漏常見的交互行為。 第二步,從腳本中提取出事件,確定觸發(fā)每個(gè)事件的動(dòng)作對(duì)象以及接受事件的目標(biāo)對(duì)象。 第三步,排列事件發(fā)生的次序,確定每個(gè)對(duì)象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們。 最后,比較各個(gè)對(duì)象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。OOA實(shí)例13. 建立動(dòng)態(tài)模型

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論