面向?qū)ο蟪绦蛟O(shè)計_第1頁
面向?qū)ο蟪绦蛟O(shè)計_第2頁
面向?qū)ο蟪绦蛟O(shè)計_第3頁
面向?qū)ο蟪绦蛟O(shè)計_第4頁
面向?qū)ο蟪绦蛟O(shè)計_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第一章 面向?qū)ο蟮姆椒▽W(xué) 學(xué)習(xí)目標(biāo) 了解面向?qū)ο蠹夹g(shù)的發(fā)展歷程。了解面向?qū)ο筌浖_發(fā)的過程。掌握面向?qū)ο蟪绦蛟O(shè)計的特點。掌握面向?qū)ο蟪绦蛟O(shè)計的相關(guān)術(shù)語。了解面向?qū)ο蟮木幊田L(fēng)格。了解目前常用的面向?qū)ο蟪绦蛟O(shè)計語言。 面向?qū)ο蟮陌l(fā)展 OO方法(Object-Oriented Method,面向?qū)ο蠓椒?是一種把面向?qū)ο笏枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO方法 。20世紀(jì)60年代中后期,Simula提出了對象的概念,并使用了類,也支持類繼承。 20世紀(jì)70年代,Smalltalk語言誕生。 1980年推出商品化的Smalltalk 80,它在系統(tǒng)設(shè)計中強調(diào)對象概念的統(tǒng)一,引入對

2、象、對象類、方法、實例等概念和術(shù)語,采用動態(tài)聯(lián)編和單繼承機制。C+是美國貝爾實驗室的Bjarne Stroustrup 博士在C語言的基礎(chǔ)上,于1980年開發(fā)出的一種過程性與對象性相結(jié)合的程序設(shè)計語言。到1983年取名為C+。1990年,美國國家標(biāo)準(zhǔn)學(xué)會(American National Standards Institute, ANSI)設(shè)立了委員會專門負(fù)責(zé)制定C+標(biāo)準(zhǔn)。 面向?qū)ο蠓椒▽W(xué)概述 傳統(tǒng)的軟件開發(fā)方法采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù),強調(diào)的是將一個較為復(fù)雜的任務(wù)分解成許多易于控制和處理的子任務(wù),自頂向下順序地完成軟件開發(fā)各階段的任務(wù)。面

3、向?qū)ο蠓椒▽W(xué)就是盡量模擬人類習(xí)慣的思維方式,使軟件開發(fā)的方法與過程盡可能接近人類認(rèn)識世界、解決問題的方法與過程,從而使描述問題的問題空間(即問題域)與實現(xiàn)解法的解空間(即求解域)在結(jié)構(gòu)上盡可能一致。 面向?qū)ο蠓椒▽W(xué)概述面向過程是將要處理的問題轉(zhuǎn)變?yōu)閿?shù)據(jù)和過程兩個相互獨立的實體來對待,強調(diào)的是過程。 例如,學(xué)生信息管理系統(tǒng),該系統(tǒng)所處理的學(xué)生類型是研究生,允許用戶進行輸入學(xué)生信息、輸出學(xué)生信息、插入(學(xué)生)、刪除(學(xué)生)、查找(學(xué)生)等操作。 面向過程的程序可重用性差,維護代價高。 面向?qū)ο笫菍⒖陀^事物看做具有屬性和行為的對象,通過對客觀事物的抽象找出同一類對象的共同屬性(靜態(tài)屬性)和行為(動態(tài)

4、特征),形成類。 例如,挪開凳子,人類處理問題的過程是拿起凳子,移到一邊。 面向過程的思想是將凳子和挪開作為兩個實體來對待(描述凳子的數(shù)據(jù)和移動凳子的動作); 面向?qū)ο蟮乃枷胧沁x擇一個對象凳子,然后向這個對象施加一個動作挪開。 面向?qū)ο筌浖こ堂嫦驅(qū)ο筌浖こ淌敲嫦驅(qū)ο筌浖椒ㄔ谲浖こ填I(lǐng)域的全面應(yīng)用,包括面向?qū)ο蠓治?OOA)、面向?qū)ο笤O(shè)計(OOD)、面向?qū)ο髮崿F(xiàn)等重要內(nèi)容。 面向?qū)ο蠓治?分析是問題抽象(即做什么)。 結(jié)構(gòu)化方法采用面向過程的方法對問題進行分解 面向?qū)ο蠓治鍪侵冈谏钊?、全面理解問題本質(zhì)需求的基礎(chǔ)上,準(zhǔn)確地抽象出系統(tǒng)必須做什么。面向?qū)ο笤O(shè)計 分析是提取和整理用戶需求,建立問題

5、精確模型的過程,即做什么。設(shè)計是問題求解 (即怎么做),是對分析階段所建立的模型進行精雕細(xì)鑿,并逐漸擴充的一個過程。 面向?qū)ο筌浖こ誊浖こ讨嘘P(guān)于軟件設(shè)計的基本準(zhǔn)則 模塊化。面向?qū)ο笤O(shè)計中,對象就是模塊,它是把數(shù)據(jù)結(jié)構(gòu)和操作這些數(shù)據(jù)的方法緊密地結(jié)合在一起所構(gòu)成的模塊。抽象。抽象是指將現(xiàn)實世界中的事物、狀態(tài)或過程所存在的相似方面集中和概括起來,暫時忽略它們之間的差異。信息隱藏。信息隱藏是程序把函數(shù)過程或?qū)ο罂闯伞昂谙洹钡哪芰?,使用它實現(xiàn)指定的操作,而不需要知道內(nèi)部的運轉(zhuǎn)。 高內(nèi)聚與低耦合。內(nèi)聚是衡量一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。耦合是指一個軟件結(jié)構(gòu)內(nèi)不同模塊之間關(guān)聯(lián)的緊密程度。 可重用

6、性。軟件重用是提高軟件開發(fā)質(zhì)量的重要途徑。 面向?qū)ο髮崿F(xiàn)實現(xiàn)是問題的解(即結(jié)果)。面向?qū)ο蟪绦蛟O(shè)計的特點面向?qū)ο蟪绦蛟O(shè)計方法的基本特征主要有抽象性、封裝性、繼承性和多態(tài)性。 抽象性 抽象就是從眾多的事物中抽取出共同的、本質(zhì)性的特征,舍棄其非本質(zhì)的特征。例如,蘋果、香蕉、酥梨、葡萄、桃子等,它們共同的特征就是水果。 抽象包含兩個方面:一方面是過程抽象;另一方面是數(shù)據(jù)抽象。 過程抽象就是針對對象的行為特征,如鳥會飛、會跳等,這些方面可以抽象為方法,即過程,寫成類時都是鳥的方法。數(shù)據(jù)抽象就是針對對象的屬性,如建立一個鳥這樣的類,鳥會有以下特征:兩個翅膀,兩只腳,有羽毛等,寫成類時都應(yīng)是鳥的屬性。 例

7、如,用面向?qū)ο蟪绦蛟O(shè)計方法設(shè)計學(xué)生信息管理系統(tǒng)。 面向?qū)ο蟪绦蛟O(shè)計的特點封裝性 封裝是面向?qū)ο蠓椒ǖ囊粋€重要特點,即將對象的屬性和行為封裝在對象的內(nèi)部,形成一個獨立的單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。例如,一臺洗衣機 。圖1-1 抽象過程示意圖 面向?qū)ο蟪绦蛟O(shè)計的特點繼承性 繼承性是子類自動共享父類數(shù)據(jù)結(jié)構(gòu)和方法的機制,這是類之間的一種關(guān)系。圖1-2說明了人、學(xué)生、大學(xué)生之間的繼承關(guān)系,箭頭的方向指向其父類。 在類層次中,子類只繼承一個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為單重繼承或單繼承,如圖1-3所示。 子類繼承了多個父類的數(shù)據(jù)結(jié)構(gòu)和方法,則稱為多重繼承或多繼承,如圖1-4所示。 圖1-2 繼承關(guān)系

8、 圖1-3 單繼承 圖1-4 多繼承 面向?qū)ο蟪绦蛟O(shè)計的特點多態(tài)性多態(tài)性是面向?qū)ο蠓椒ǖ闹匾卣?。不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象稱為多態(tài)性。 例如,一個學(xué)生拿著象棋,對另一個學(xué)生說:“咱們玩棋吧?!?一個小朋友拿著跳棋對另一個小朋友說:“咱們玩棋吧。” C+支持兩種多態(tài)性,即編譯時的多態(tài)性和運行時的多態(tài)性。編譯時的多態(tài)性是通過重載來實現(xiàn)的,運行時的多態(tài)性是通過虛函數(shù)來實現(xiàn)的。 面向?qū)ο蟪绦蛟O(shè)計的特點圖1-5 多態(tài)性 面向?qū)ο蟮男g(shù)語 類 “類”是對一組具有共同屬性特征和行為特征的對象的抽象。例如,學(xué)生張三、學(xué)生王明。對象 對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作

9、的封裝體。 對象是我們認(rèn)識世界的基本單元,可以是人,也可以是物,還可以是一件事。 術(shù)語“對象”既可以是指一個具體的對象,也可以泛指一般的對象。 實例 實例是一個類所描述的一個具體的對象。例如,通過“大學(xué)生”類定義一個具體的對象學(xué)生王明就是大學(xué)生類的一個實例,就是一個對象。 類和對象之間的關(guān)系是抽象和具體的關(guān)系。 面向?qū)ο蟮男g(shù)語屬性 屬性,就是在類中所定義的數(shù)據(jù)。它是對客觀世界實體所具有的性質(zhì)的抽象。例如,Student類中所定義的表示學(xué)生的姓名、年齡和成績的數(shù)據(jù)成員就是Student類的屬性。 消息 消息就是要求某個對象執(zhí)行定義該對象的類中的某個操作的規(guī)格說明。消息具有三個性質(zhì): 同一個對象可

10、以接收不同形式的多個消息,做出不同的響應(yīng);相同形式的消息可以傳遞給不同的對象,所做出的響應(yīng)可以是不同的;接收對象對消息的響應(yīng)并不是必須的,對象可以響應(yīng)消息,也可以不響應(yīng)。 面向?qū)ο蟮男g(shù)語例如,MyStudent是一個Student類的對象,當(dāng)要求它在第2個位置上插入一個學(xué)生信息時,在C+中應(yīng)該向它發(fā)下列消息: MyStudent.Insert_Student(2, x); 其中MyStudent是接收消息的對象的名字,Insert_Student是消息選擇符(即消息名),括號內(nèi)2和x是消息的變元。當(dāng)MyStudent接收到這個消息后,將執(zhí)行在Student類中所定義的Insert_Studen

11、t操作。 方法 方法是對象所執(zhí)行的操作,也是類中所定義的服務(wù)。 重載 C+提供了重載機制,即允許具有相同或相似功能的函數(shù)使用同一函數(shù)名,從而減少了程序員記憶多個函數(shù)名字的負(fù)擔(dān)。 其他面向?qū)ο蟪绦蛟O(shè)計語言 Java語言 Java語言是一種通用、并發(fā)、基于類的面向?qū)ο蟪绦蛟O(shè)計語言。Java語言的名字來源于印度尼西亞的一個島名“爪哇”(印度尼西亞盛產(chǎn)咖啡的一個島嶼)。 Java是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺的總稱。 Java平臺由Java虛擬機(Java Virtual Machine)和Java 應(yīng)用編程接口(Application

12、 Programming Interface, API)構(gòu)成。 Java分為三個體系JavaSE(Java 2 Platform Standard Edition, Java平臺標(biāo)準(zhǔn)版),JavaEE(Java 2 Platform Enterprise Edition, Java平臺企業(yè)版),JavaME(Java 2 Platform Micro Edition, Java平臺微型版)。 其他面向?qū)ο蟪绦蛟O(shè)計語言Java的主要特性 簡捷性面向?qū)ο?分布式 健壯性 安全性 可移植性 解釋型 高性能 多線程 動態(tài)性 其他面向?qū)ο蟪绦蛟O(shè)計語言C#語言C#(讀做“C sharp”)是微軟公司發(fā)布的

13、一種面向?qū)ο蟮?、運行于.NET Framework之上的高級程序設(shè)計語言。C#集C語言的簡潔強大、C+的面向?qū)ο?、VB的圖形化設(shè)計方法、Java的編譯與執(zhí)行機制等優(yōu)點于一身。 C# 1.0純粹的面向?qū)ο?C# 2.0泛型編程新概念 C# 3.0(研發(fā)代號“Orcas”魔鬼) 從C到C+ 例1-1 從C到C+的實例學(xué)生成績管理。 使用數(shù)組 使用結(jié)構(gòu)體 類 struct Student long lNum; /學(xué)號 char cName12; /姓名 float fGrade; /成績;class OurClass/聲明一個班級類 Student sN;/定義N個學(xué)生 void Input();/輸入學(xué)生信息 void Print();/輸出學(xué)生信息 void Sort(); /按學(xué)生成績進行排序; Microsoft Visual Studio 2008開發(fā)環(huán)境 例1-2 創(chuàng)建一個控制臺應(yīng)用程序,當(dāng)其運行時在屏幕上顯示“Hello, World!”。 步驟:建立一個項目(Project)。 在圖1-7中選擇項目類型(P)為“Win32”,模板(T)為“Win32控制臺應(yīng)用程序”,然后在“名稱”字段中輸入“MyProject1”,在“位置”字段輸入要保存項目的位置,單擊“確定” 。創(chuàng)建類Demo。 在Demo.h的空白區(qū)域(編輯區(qū))

溫馨提示

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

評論

0/150

提交評論