計算機基礎(第2版)課件第5章 程序設計基礎_第1頁
計算機基礎(第2版)課件第5章 程序設計基礎_第2頁
計算機基礎(第2版)課件第5章 程序設計基礎_第3頁
計算機基礎(第2版)課件第5章 程序設計基礎_第4頁
計算機基礎(第2版)課件第5章 程序設計基礎_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第5章程序設計基礎5程序設計基礎5.1程序設計方法與風格5.2結構化程序設計5.3面向?qū)ο蟮某绦蛟O計5.1

程序設計方法與風格源程序文檔化數(shù)據(jù)說明的方法語句的結構輸入和輸出5.1程序設計方法與風格程序設計是一門技術,需要相應的理論、技術、方法和工具來支持。就程序設計方法和技術的發(fā)展而言,主要經(jīng)過了結構化程序設計和面向?qū)ο蟮某绦蛟O計階段。除了好的程序設計方法和技術之外,程序設計風格也是很重要的。因為程序設計風格會深刻地影響軟件的質(zhì)量和可維護性,良好的程序設計風格可以使程序結構清晰合理,使程序代碼便于維護,因此,程序設計風格對保證程序的質(zhì)量是很重要的。5.1程序設計方法與風格1.源程序文檔化源程序文檔化應考慮如下幾點。(1)符號名的命名:符號名的命名應具有……定的實際含義,以便于對程序功能的理解。(2)程序注釋:正確的注釋能夠幫助讀者理解程序。注釋…般分為序言性注釋和功能性注釋。序言性注釋通常位于每個程序的開頭部分,它給出程序的整體說明,主要描述內(nèi)容可以包括程序標題、程序功能說明、主要算法、接口說明、程序位置、開發(fā)簡歷、程序設計者、復審者、復審日期、修改日期等。功能性注釋的位置一般嵌在源程序體之中,主要描述其后的語句或程序做什么。(3)視覺組織:為使程序的結構一目了然,可以在程序中利用空格、空行、縮進等技巧使程序?qū)哟吻逦?.1程序設計方法與風格

2.數(shù)據(jù)說明的方法在編寫程序時,需要注意數(shù)據(jù)說明的風格,以便使程序中的數(shù)據(jù)說明更易于理解和維護,一般應注意如下幾點。(1)數(shù)據(jù)說明的次序規(guī)范化。鑒于程序理解、閱讀和維護的需要,使數(shù)據(jù)說明次序闊定,可以使數(shù)據(jù)的屬性容易查找,也有利于測試、排錯和維護。(2)說明語句中變量安排有序化。當一個說明語句說明多個變量時,變量按照學母順序排序為好。(3)使用注釋來說明復雜數(shù)據(jù)的結構。5.1程序設計方法與風格3.語句的結構程序應該簡單易懂,語句構造應該簡單直接,不應該為提高效率而把語句復雜化?!銘⒁馊缦?。(1)在一行內(nèi)只寫一條語句;(2)程序編寫應優(yōu)先考慮清晰性;(3)除非對效率有特殊要求,程序編寫要做到清晰第…、效率第二:(4)首先要保證程序正確,然后才要求提高速度;(5)避免使用臨時變量而使程序的可讀性下降;(6)避免不必要的轉(zhuǎn)移;(7)盡可能使用庫函數(shù);(8)避免采用復雜的條件語句;(9)盡量減少使用“否定”條件的條件語句;(10)數(shù)據(jù)結構要有利于程序的簡化;(11)要模塊化,使模塊功能盡可能單一化;(12)利用信息隱蔽,確保每一個模塊的獨立性;(13)從數(shù)據(jù)出發(fā)去構造程序;(14)不要修補不好的程序,要重新編寫。5.1程序設計方法與風格4.輸入和輸出輸入和輸出信息是用戶直接關心的,輸人和輸出方式和格式應盡可能方便用戶的使用,因為系統(tǒng)能否被用戶接受,往往取決于輸入和輸出的風格。無論是批處理的輸入和輸出方式,還是交互式的輸入和輸出方式,在設計和編程時都應該考慮如下原則。(1)對所有的輸人數(shù)據(jù)都要檢驗數(shù)據(jù)的合法性;(2)檢查輸入項的各種重要組合的合理性;(3)輸入格式要簡單,以使得輸入的步驟和操作盡可能簡單;(4)輸入數(shù)據(jù)時,應允許使用自由格式;(5)應允許缺省值;(6)輸入一批數(shù)據(jù)時,最好使用輸入結束標志;(7)在以交豆式輸人/輸出方式進行輸人時,要在屏幕上使用提示符明確提示輸人的譜求,同時在數(shù)據(jù)輸入過程中和輸人結束時,應在屏幕上給出狀態(tài)信息;(8)當程序設計語言對輸入格式有嚴格要求時,應保持輸人格式與輸人語句的一致性;給所有的輸出加注釋,并設計輸出報表格式。5.2

結構化程序設計結構化程序設計的原則結構化程序的基本結構與特點結構化程序設計原則和方法的應用5.2

結構化程序設計由于軟件危機的出現(xiàn),人們開始研究程序設計方法,其中最受關注的是結構化程序設計方法。20世紀70年代提出了“結構化程序設計(StructuredProgramming)”的思想和方法。結構化程序設計方法引人了工程思想和結構化思想,使大型軟件的開發(fā)和編程都得到了極大的改善。5.2.1結構化程序設計的原則結構化程序設計方法的主要原則可以概括為自頂向下,逐步求精,模塊化,限制使用COTO語句。1.自頂向下程序設計時,應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。不要開始就過多追求眾多的細節(jié),先從最上層總目標開始設計,逐步使問題具體化。2.逐步求精對復雜問題,應設計一些子目標作過渡,逐步細化。3.模塊化一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為分日標,再進一步分解為具體的小日標,把每個小日標稱為一個模塊。5.2.1結構化程序設計的原則4.限制使用COTO語句實際上,結構化程序設計方法的起源來自對GOTO語句的認識和爭論??隙ǖ慕Y論是,在塊和進程的非正常出口處往往需要用GOTO語句,使用GOTO語句會使程序執(zhí)行效率較高;在合成程序目標時,COTO語句往往是有用的,如返回語句用COTO。否定的結論是,GOTO語句是有害的,是造成程序混亂的禍根,程序的質(zhì)量與G0T0語句的數(shù)量成反比,應該在所有高級程序設計語育中取消GOTO語句。取消GOTO語句后,程序易理解、易排錯、易維護,程序容易進行正確性證明。作為爭論的結論,1974年Knulh發(fā)表了令人信服的總結。(1)濫用GOTO語句確實有害,應盡量避免。(2)完全避免使用GOTO語句也并非是一個明智的方法,有些地方使用GOTO語句,會使程序流程更清楚、效率更高。(3)爭論的焦點不應該放在是否取消GOTO語句,而應該放在用在什么樣的程序結構上。其中最關鍵的是肯定以提高程序清晰性為目標的結構化方法。5.2.2結構化程序的基本結構與特點結構化程序設計方法是程序設計的先進方法和工具。采用結構化程序設計方法編寫程序,可使程序結構良好、易讀、易理解、易維護。1966年,Boehm和Jacopini證明了程序設計語言僅使用順序、選擇和循環(huán)三種基本控制結構就足以表達出各種其他形式結構的程序設計方法。5.2.2結構化程序的基本結構與特點1.順序結構順序結構是…種簡單的程序設計,它是最基本、最常用的結構。順序結構是順序執(zhí)行結構,所諧順序執(zhí)行,就是按照程序語句行的自然順序,從上到下逐條語句地執(zhí)行程序。2.選擇結構選擇結構又稱為分支結構,它包括簡單選擇和多分支選擇結構,這種結構可以根據(jù)設定的條件,判斷應該選擇哪條分支來執(zhí)行相應的語句序列。3.循環(huán)結構循環(huán)結構根據(jù)給定的條件,判斷是杏需要重復執(zhí)行某相同的或類似的程序段,利用循環(huán)結構可簡化大量的程序行。在程序設計語言中,循環(huán)結構對應兩類循環(huán)語句,對先判斷后執(zhí)行循環(huán)體的稱為當型循環(huán)結構。對先執(zhí)行循環(huán)體后判斷的稱為直到型循環(huán)結構。5.2.2結構化程序的基本結構與特點總之,遵循結構化程序的設計原則,按結構化程序設計方法設計出的程序具有明顯的優(yōu)點,其一,程序易于理解、使用和維護。程序員采用結構化編程方法,便于控制、降低程序的復雜性,因此,容易編寫程序。使于驗證程序的正確性,結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試,以確保程序的正確性,程序容易閱讀并被人理解,便于用戶使用和維護。其二,提高了編程工作的效率,降低了軟件開發(fā)成本。由于結構化編程方法能夠把錯誤控制到最低限度,因此,能夠減少調(diào)試和查錯時間。結構化程序是由……些為數(shù)不多的基本結構模塊組成,這些模塊甚至可以由機器自動生成,從而極大地減輕了編程工作量。5.2.3結構化程序設計原則和方法的應用基于對結構化程序設計原則、方法以及結構化程序基本構成結構的掌握和了解,在結構化程序設計的具體實施中,要注意把握如下要素。1.使用程序設計語言中的順序、選擇、循環(huán)等有限的控制結構表示程序的控制邏輯。2.選用的控制結構只準許有一個人口和一個出口。3.程序語甸組成容易識別的塊,每塊只有一個入口和一個出口。4.復雜結構應該用嵌套的基本控制結構進行組合嵌套來實現(xiàn)。5.語言中所沒有的控制結構,應該采用前后一致的方法來模擬并嚴格控制GOTO語句的使用。其意思如下。(1)用一個非結構化的程序設計語言去實現(xiàn)一個結構化的構造。(2)若不使用GOTO語句會使功能模糊。(3)在某種可以改善而不是損害程序可談性的情況下。5.3面向?qū)ο蟮某绦蛟O計關于面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ǖ幕靖拍罱Y構化程序設計原則和方法的應用5.3.1關于面向?qū)ο蠓椒ㄗ?0世紀80年代中期開始,面向?qū)ο螅∣bjectOriented)方法已經(jīng)發(fā)展成為主流的軟件開發(fā)方法。面向?qū)ο蠓椒ǖ男纬赏Y構化方法一樣,起源于實現(xiàn)語言,首先對面向?qū)ο蟮某绦蛟O計語言開展研究,隨之逐漸形成面向?qū)ο蠓治龊驮O計方法。面向?qū)ο蠓椒ê图夹g歷經(jīng)40多年的研究和發(fā)展,已經(jīng)越來越成熟和完善,應用也越來越深入和廣泛。面向?qū)ο蟮能浖_發(fā)方法在20世紀60年代后期首次提出,以60年代末挪威奧斯陸大學和挪威計算中心共同研制的SIMULA語言為標志,面向?qū)ο蠓椒ǖ幕疽c首次在SIMULA語言中得到了表達和實現(xiàn)。后來一些著名的面向?qū)ο笳Z言(如Smalltalk、C++、Java、Eiffel)的設計者都曾從SIMULA得到啟發(fā)。隨著20世紀80年代美國加州的Xerox研究中心推出Smalltalk語言和環(huán)境,使面向?qū)ο蟪绦蛟O計方法得到比較完善的實現(xiàn)。Smallalk-80等一系列描述能力較強、執(zhí)行效率較高的面向?qū)ο缶幊陶Z言的出現(xiàn),標志著面向?qū)ο蟮姆椒ㄅc技術開始走向?qū)嵱?。而向?qū)ο蠓椒ǖ谋举|(zhì),就是主張從客觀世界固有的事物出發(fā)來構造系統(tǒng),提倡用入類在現(xiàn)實生活中常用的思維方法來認識、理解和描述客觀事物,強調(diào)最終建立的系統(tǒng)能夠映射問題域,也就是說,系統(tǒng)中的對象以及對象之間的關系能夠如實地反映問題域中國有事物及其關系。5.3.1關于面向?qū)ο蠓椒?/p>

1.與人類習慣的思維方法一致傳統(tǒng)的程序設計技術是面向過程的,其核心思想是以算法為核心,把數(shù)據(jù)和過程作為相互獨立的部分,數(shù)據(jù)代表問題空間中的客體,程序則用于處理這些數(shù)據(jù),在計算機內(nèi)部數(shù)據(jù)和程序是分開仔放的,這樣的做法往往會發(fā)生使用錯誤的數(shù)據(jù)調(diào)用正確的程序模塊的情況。其原因是,傳統(tǒng)的程序設計方法忽略了數(shù)據(jù)和操作之間的內(nèi)在聯(lián)系,用這種方法設計出來的軟件系統(tǒng)其解空間與問題空間不一致。使人感到難于理解。實際上,用汁算機解決的問題都是現(xiàn)實世界中的問題,這些問題無非是由一些相互間存在一定聯(lián)系的事物所組成,每個具體的事物都具有行為和屬性兩方面的特征。因此,把播述事物靜態(tài)屬性的數(shù)據(jù)結構和表示事物動態(tài)行為的操作放在一起構成一個整體。才能完整,自然地表示客觀世界中的實體。面向?qū)ο蠓椒ê图夹g以對象為核心。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接的對應關系。對象之間通過傳通消息互相聯(lián)系,以模擬現(xiàn)實世界中不同事物彼此之間的聯(lián)系。面向?qū)ο蟮脑O計方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,這種方法的基本原理是,使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。它強調(diào)模擬現(xiàn)實世界中的概念而不強調(diào)算法,它歧勵開發(fā)者在軟件開發(fā)的絕大部分過程中都用應用領域的概念去思考.5.3.1關于面向?qū)ο蠓椒?/p>

2.穩(wěn)定性好面向?qū)ο蠓椒ɑ跇嬙靻栴}領域的對象模型,以對象為中心構造軟作系統(tǒng)。它的基本做法是用對象模擬問題領域中的實體,以對象間的聯(lián)系刻畫實體間的聯(lián)系。因為面向?qū)ο蟮能浖到y(tǒng)的結構是根據(jù)問題領域的模型建立起來的,而不是基于對系統(tǒng)應完成的功能的分解,所以,當對系統(tǒng)的功能需求變化時并不會引起軟件結構的整體變化,往往僅需要做一些局部性的修改。由于現(xiàn)實世界中的實體是相對穩(wěn)定的,因此,以對象為中心構造的軟件系統(tǒng)也是比較穩(wěn)定的。而傳統(tǒng)的軟件開發(fā)方法以算法為核心,開發(fā)過程基于功能分析和功能分解。用傳統(tǒng)方法所建立起來的軟件系統(tǒng)的結構緊密地依賴于系統(tǒng)所要完成的功能,當功能需求發(fā)生變化時將引起軟件結構的監(jiān)體修改。事實上,用戶需求變化大部分是針對功能的,因此。這樣的軟件系統(tǒng)是不穩(wěn)定的。5.3.1關于面向?qū)ο蠓椒?/p>

3.可重用性好軟件重用是指在不同的軟件開發(fā)過程中重復使用相同或相似軟件元素的過程。重用是提高軟件生產(chǎn)率的最主要的方法。傳統(tǒng)的軟件重用技術是利用標準函數(shù)庫,也就是試圖用標準函數(shù)庫中的函數(shù)作為“預制件”水建造新的軟件系統(tǒng)。但是,標準函數(shù)缺乏必要的“柔性”,不能適應不同應用場合的不同需要,并不是理想的可重用的軟件成分。實際的庫函數(shù)往往僅提供最基本、最常用的功能,在開發(fā)一個新的軟件系統(tǒng)時,通常多數(shù)函數(shù)是開發(fā)者自己編寫的、甚至絕大多數(shù)函數(shù)都是新編的。使用傳統(tǒng)方法學開發(fā)軟件時,人們強調(diào)的是功能抽象,認為具有功能內(nèi)聚性的模塊是理想的模塊,也就是說,如果一個模塊完成一個且只完成一個相對獨立的子功能,那么這個模塊就是理想的可重用模塊,而且這樣的模塊也更容易維護。基于這種認識,通常盡量把標準函數(shù)庫中的函數(shù)做成功能內(nèi)聚的。但是,事實上具有功能內(nèi)聚性的模塊并不是自含的和獨立的,相反,它必須在數(shù)據(jù)上運行。如果要重用這樣的模塊,則相應的數(shù)據(jù)也必須重用。如果新產(chǎn)品中的數(shù)據(jù)與最初產(chǎn)品中的數(shù)據(jù)不同、則要么修改數(shù)據(jù)要么修改這個模塊。5.3.1關于面向?qū)ο蠓椒ㄊ聦嵣?,離開了操作數(shù)據(jù)便無法處理。而脫離了數(shù)據(jù)的操作也是毫無意義的,我們應該對數(shù)據(jù)和操作同樣重視。在面向?qū)ο蠓椒ㄖ兴褂玫膶ο螅鋽?shù)據(jù)和操作是作為平等伙伴出現(xiàn)的。因此,對象具有很強的自含性。此外,對象所固有的封裝性,使得對象的內(nèi)部實現(xiàn)與外界隔離,具有較強的獨立性。由此可見,對象提供了比較理想的模塊化機制和比較理想的可重用的軟件成分。而向?qū)ο蟮能浖_發(fā)技術在利用可重用的軟件成分構造新的軟件系統(tǒng)時,有很大的靈活性。有兩種方法可以重復使用一個對象類:一種方法是創(chuàng)建該類的實例,從而直接使用它;另一種方法是從它派生出一個滿足當前需要的新類。繼承性機制使得子類不僅可以重用其父類的數(shù)據(jù)結構和程序代碼,而且可以在父類代碼的基礎上方便地修改和擴充,這種修改并不影響對原有類的使用??梢姡?qū)ο蟮能浖_發(fā)技術所實現(xiàn)的可重用性是自然的和準確的。5.3.1關于面向?qū)ο蠓椒?/p>

4.易于開發(fā)大型軟件產(chǎn)品當開發(fā)大型軟件產(chǎn)品時,組織開發(fā)人員的方法不恰當往往是出現(xiàn)問題的主要原因。用面向?qū)ο蠓缎烷_發(fā)軟件時,可以把一個大型產(chǎn)品看作是一系列本質(zhì)上相互獨立的小產(chǎn)品來處理、這就不僅降低了開發(fā)的技術難度,而且也使得對開發(fā)工作的管理變得容易。這就是為什么對于大型軟件產(chǎn)品來說,而向?qū)ο蠓缎蛢?yōu)于結構化范型的原因之一。許多軟件開發(fā)公司的經(jīng)驗都表明,當把面向?qū)ο蠹夹g用于大型軟件開發(fā)時,軟件成本明顯地降低了,軟件的整體質(zhì)也提高了。5.3.1關于面向?qū)ο蠓椒?.可維護性好用傳統(tǒng)的開發(fā)方法和面向過程的方法開發(fā)出來的軟件很難維護,是長期困擾人們的…個嚴重問題、是軟件危機的突出表現(xiàn).由于下述因素的存在,使得用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件可維護性好。(1)用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件穩(wěn)定性比較好如前所述、當對軟件的功能或性能的要求發(fā)生變化時,通常不會引起軟件的整體變化,往往只需對局部做一些修改。由于對軟件的改動較小且限于局部,自然比較容易實現(xiàn)。5.可維護性好5.3.1關于面向?qū)ο蠓椒ǎ?)用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件比較容易修改在面向?qū)ο蠓椒ㄖ?,核心是類(對象),它具有理想的模塊機制,獨立性好,修改一個類通常很少會牽扯到其他類。如果僅修改一個類的內(nèi)部實現(xiàn)部分(私有數(shù)據(jù)成員或成員函數(shù)的算法),而不修改該類的對外接口,則可以完全不影響軟件的其他部分。面向?qū)ο蠹夹g特有的繼承機制,使得對所開發(fā)的軟件的修改和擴充比較容易實現(xiàn),通常只需從已有類派生出一些新類,無須修改軟件原有成分。面向?qū)ο蠹夹g的多態(tài)性機制,使得當擴充軟件功能時對原有代碼的修改進一步減少。需要增加的新代碼也比較少。5.3.1關于面向?qū)ο蠓椒ǎ?)用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件比較容易理解在維護已有軟件的時候,首先需要對原有軟件與此次修改有關的部分有深人埋解,才能正確地完成維護工作。傳統(tǒng)軟件之所以難于維護,在很大程度上是因為修改所涉及的部分分散在軟件各個地方,需要了解的面很廣,內(nèi)容很多,而且傳統(tǒng)軟件的解空間與問題空間的結構很不一致,更增加了理解原有軟件的難度和工作量。面向?qū)ο蟮募夹g符合人們習慣的思維方式,用這種方法所建立的軟件系統(tǒng)的結構與間題空間的結構基本一致。因此,面向?qū)ο蟮能浖到y(tǒng)比較容易理解。對面向?qū)ο筌浖到y(tǒng)進行修改和擴充,通常是通過在原有類的基礎上派生出一些新類來實現(xiàn)。由于對象類有很強的獨立性,當派生新類的時候通常不需要詳細了解基類中操作的實現(xiàn)算法。因此,了解原有系統(tǒng)的工作量可以大幅度降低。5.3.1關于面向?qū)ο蠓椒ǎ?)易于測試和調(diào)試為了保證軟件質(zhì)量,對軟件進行維護之后必須進行必要的測試,以確保要求修改或擴充的功能已正確地實現(xiàn)了,而且沒有影響到軟件未修改的部分。如果測試過程中發(fā)現(xiàn)了錯誤,還必須通過調(diào)試改正過來。顯然,軟件是否易于測試和調(diào)試,是影響軟件可維護性的一個重要因素。對用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件進行維護,往往是通過從已有類派生出…些新類來實現(xiàn)。因此,維護后的測試和調(diào)試工作也主要圍繞這些新派生出來的類進行。類是獨立性很強的模塊,向類的實例發(fā)消息即可運行它,觀察它是否能正確地完成相應的工作,因此,對類的測試通常比較容易實現(xiàn)。5.3.2面向?qū)ο蠓椒ǖ幕靖拍铌P于面向?qū)ο蠓椒?,對其概念有許多不同的看法和定義,但是都涵蓋對象及對象滿性與方法、類、繼承、多態(tài)性幾個基本要素。下面分別介紹面向?qū)ο蠓椒ㄖ羞@幾個重要的基本概念,這些概念是理解和使用面向?qū)ο蠓椒ǖ幕A和關鍵。1.對象(Object)對象是面向?qū)ο蠓椒ㄖ凶罨镜母拍?。對象可以用來表示客觀世界中的任何實體,也就是說,應用領域中有意義的、與所要解決的問題有關系的任何事物都可以作為對象,它既可以是具體的物理實體的抽象,也可以是人為的概念、或者是任何有明確邊界和意義的東西。例如,……個人、…家公司、一個窗口、貸款和借款等,都可以作為…個對象??傊?,對象是對問題域中某個實體的抽象,設立某個對象就反映了軟件系統(tǒng)保存有美它的信息并具有與它進行交互的能力。面向?qū)ο蟮某绦蛟O計方法中涉及的對象是系統(tǒng)中用來描述客觀事物的一個實體,是構成系統(tǒng)的一個基本單位,它由一組表示其靜態(tài)特征的屬性和它可執(zhí)行的一組操作組成。5.3.2面向?qū)ο蠓椒ǖ幕靖拍顚ο笥腥缦乱恍┗咎攸c。(1)標識唯一性。指對象是可區(qū)分的,并且由對象的內(nèi)在本質(zhì)來區(qū)分,而不是通過描述來區(qū)分。(2)分類性。指可以將具有相同屬性和操作的對象抽象成類。(3)多態(tài)性。指同一個操作可以是不同對象的行為。(4)封裝性。從外面看只能看到對象的外部特性,即只需知道數(shù)據(jù)的取值范圍和可以對該數(shù)據(jù)施加的操作,根本無須知道數(shù)據(jù)的具體結構以及實現(xiàn)操作的算法。對象的內(nèi)部,即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的。從外面不能直接使用對象的處理能力。也不能直接修改其內(nèi)部狀態(tài)。對象的內(nèi)部狀態(tài)只能山其自身改變。(5)模塊獨立性好。對象是面向?qū)ο蟮能浖幕灸K,它是由數(shù)據(jù)及可以對這些數(shù)據(jù)施加的操作所組成的統(tǒng)一體,而且對象是以數(shù)據(jù)為中心的,操作圍繞對其數(shù)據(jù)所需做的處理來設置,沒有無關的操作。從模塊的獨立性考慮,對象內(nèi)部各種元素彼此結合得很緊密,內(nèi)聚性強。5.3.2面向?qū)ο蠓椒ǖ幕靖拍?.類(Class)和實例(Instance)將屬性、操作相似的對象歸為類,也就是說,類是具有共同屆性、共同方法的對象的集合。所以、類是對象的抽象,它描述了屬于該對象類型的所有對象的性質(zhì),而一個對象則是其對應類的一個實例。要注意的是,當使用“對象”這個術語時,既可以指一個具體的對象,也可以泛指一般的對象,但是,當使用“實例”這個術語時,必然是指一個具體的對象。例如,integer是一個整數(shù)類,它描述了所有整數(shù)的性質(zhì)。因此,任何整數(shù)都是整數(shù)類的對象,而一個具體的整數(shù)“123”是類Integer的一個實例。由類的定義可知,類是關于對象性質(zhì)的描述,它同對象一樣,包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。例如,一個面向?qū)ο蟮膱D形程序在屏幕左下角顯示一個半徑3cm的紅顏色的圓,在屏幕中部顯示……個半徑4cm的綠顏色的圓,在屏幕右上角顯示…個半徑1cm的黃顏色的圓。這三個圓心位置、半徑大小和顏色均不相同的圓,是三個不同的對象。但是,它們都有相同的屬性(圓心坐標、半徑、顏色)和相同的操作(顯示自己、放大縮小半徑、在屏幕上移動位置,等等)。因此,它們是同類事物,可以用“Circle類”來定義。5.3.2面向?qū)ο蠓椒ǖ幕靖拍钕ⅲ∕essage)面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協(xié)助進行,這樣的機制稱為“消息”。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某……處理或回答某…要求的信息,它統(tǒng)……了數(shù)據(jù)流和控制流。消息的使用類似于函數(shù)調(diào)用,消息中指定了某…個實例,……個操作名和…個參數(shù)表(可空)。接收消息的實例執(zhí)行消息中指定的操作,并將形式參數(shù)與參數(shù)表中相應的值結合起來。消息傳遞過程中,由發(fā)送消息的對象(發(fā)送對象)的觸發(fā)操作產(chǎn)生輸出結果、作為消息傳送至接收消息的對象(接收對象),引發(fā)接收消息的對象一系列的操作。所傳送的消息實質(zhì)上是接收對象所具有的操作/方法名稱,有時還包括相應參數(shù)。5.3.2面向?qū)ο蠓椒ǖ幕靖拍钔ǔ?,一個消息由下述三部分組成。(1)接收消息的對象的名稱;(2)消息標識符(也稱為消息名);(3)零個或多個參數(shù)。5.3.2面向?qū)ο蠓椒ǖ幕靖拍?.繼承(Inheritance)繼承是面向?qū)ο蟮姆椒ǖ囊粋€主要特征。繼承是使用已有的類定義作為基礎建立新類的定義技術。已有的類可當作基類來引用,則新類相應地可當作派生類來引用。廣義地說,繼承是指能夠直接得已有的性質(zhì)和特征,而不必重復定義它們。面向?qū)ο筌浖夹g的許多強有力的功能和突出的優(yōu)點,都來源于把類組成…個層次結構的系統(tǒng):一個類的上層可以有父類,下層可以有子類。這種層次結構系統(tǒng)的一個重要性質(zhì)是繼承性,……個類直接繼承其父類的描述(數(shù)據(jù)和操作)或特性,子類自動地共享基類中定義的數(shù)據(jù)和方法。以A、B兩個類為例,其中類B是從類A派生出來的子類,它除了具有自它定義的特性(數(shù)據(jù)和操作)之外,還從父類

溫馨提示

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

最新文檔

評論

0/150

提交評論