?? chap1_5.htm
字號(hào):
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
<title>面向?qū)ο蠛蚖indows編程</title>
</head>
<body stylesrc="chap1_4.htm" style="text-decoration: none" bgcolor="#FFFFFF" text="#000000" link="#3973DE" alink="#3973DE">
<div align="center"><center>
<table border="0" width="615" cellspacing="0" cellpadding="0">
<tr>
<td><div align="center"><center><table border="0" width="615" cellpadding="0" cellspacing="0">
<tr>
<td width="451" bgcolor="#15397D"></td>
<td width="164" bgcolor="#000000"><p align="right"><a href="../../index.htm"><strong><font color="#FFFFFF">Visual C++網(wǎng)絡(luò)教程</font></strong></a></td>
</tr>
</table>
</center></div><b><font FACE="Times New Roman" SIZE="3"><p ALIGN="center"></font><font color="#3973DE" FACE="Times New Roman" size="4">1.5 </font><font color="#3973DE" size="4">面向?qū)ο蠛?lt;/font><font color="#3973DE" FACE="Times New Roman" size="4">Windows</font><font color="#3973DE" size="4">編程</font></b><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">面向?qū)ο蠹夹g(shù)是目前流行的系統(tǒng)設(shè)計(jì)開(kāi)發(fā)技術(shù),它包括面向?qū)ο蠓治龊兔嫦驅(qū)ο蟪绦蛟O(shè)計(jì)。面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的提出,主要是為了解決傳統(tǒng)程序設(shè)計(jì)方法——結(jié)構(gòu)化程序設(shè)計(jì)所不能解決的代碼重用問(wèn)題。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">結(jié)構(gòu)化程序設(shè)計(jì)從系統(tǒng)的功能入手,按照工程的標(biāo)準(zhǔn)和嚴(yán)格的規(guī)范將系統(tǒng)分解為若干功能模塊,系統(tǒng)是實(shí)現(xiàn)模塊功能的函數(shù)和過(guò)程的集合。由于用戶的需求和軟、硬件技術(shù)的不斷發(fā)展變化,按照功能劃分設(shè)計(jì)的系統(tǒng)模塊必然是易變的和不穩(wěn)定的。這樣開(kāi)發(fā)出來(lái)的模塊可重用性不高。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">面向?qū)ο蟪绦蛟O(shè)計(jì)從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心而不是以服務(wù)(功能)為中心來(lái)描述系統(tǒng)。它把編程問(wèn)題視為一個(gè)數(shù)據(jù)集合,數(shù)據(jù)相對(duì)于功能而言,具有更強(qiáng)的穩(wěn)定性。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">面向?qū)ο蟪绦蛟O(shè)計(jì)同結(jié)構(gòu)化程序設(shè)計(jì)相比最大的區(qū)別就在于:前者首先關(guān)心的是所要處理的數(shù)據(jù),而后者首先關(guān)心的是功能。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">面向?qū)ο蟪绦蛟O(shè)計(jì)是一種圍繞真實(shí)世界的概念來(lái)組織模型的程序設(shè)計(jì)方法,它采用對(duì)象來(lái)描述問(wèn)題空間的實(shí)體。關(guān)于對(duì)象這一概念,目前還沒(méi)有統(tǒng)一的定義。一般的認(rèn)為,對(duì)象是包含現(xiàn)實(shí)世界物體特征的抽象實(shí)體,它反映了系統(tǒng)為之保存信息和(或)與它交互的能力。它是一些屬性及服務(wù)的一個(gè)封裝體,在程序設(shè)計(jì)領(lǐng)域,可以用“對(duì)象</font><font FACE="Times New Roman" SIZE="3">=</font><font SIZE="3">數(shù)據(jù)</font><font FACE="Times New Roman" SIZE="3">+</font><font SIZE="3">作用于這些數(shù)據(jù)上的操作”這一公式來(lái)表達(dá)。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">類(lèi)是具有相同操作功能和相同的數(shù)據(jù)格式(屬性)的對(duì)象的集合。類(lèi)可以看作抽象數(shù)據(jù)類(lèi)型的具體實(shí)現(xiàn)。抽象數(shù)據(jù)類(lèi)型是數(shù)據(jù)類(lèi)型抽象的表示形式。數(shù)據(jù)類(lèi)型是指數(shù)據(jù)的集合和作用于其上的操作的集合,而抽象數(shù)據(jù)類(lèi)型不關(guān)心操作實(shí)現(xiàn)的細(xì)節(jié)。從外部看,類(lèi)型的行為可以用新定義的操作加以規(guī)定。類(lèi)為對(duì)象集合的抽象,它規(guī)定了這些對(duì)象的公共屬性和方法;對(duì)象為類(lèi)的一個(gè)實(shí)例。蘋(píng)果是一個(gè)類(lèi),而放在桌上的那個(gè)蘋(píng)果則是一個(gè)對(duì)象。對(duì)象和類(lèi)的關(guān)系相當(dāng)于一般的程序設(shè)計(jì)語(yǔ)言中變量和變量類(lèi)型的關(guān)系。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">消息是向某對(duì)象請(qǐng)求服務(wù)的一種表達(dá)方式。對(duì)象內(nèi)有方法和數(shù)據(jù),外部的用戶或?qū)ο髮?duì)該對(duì)象提出的服務(wù)請(qǐng)求,可以稱為向該對(duì)象發(fā)送消息。合作是指兩個(gè)對(duì)象之間共同承擔(dān)責(zé)任和分工。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">面向?qū)ο蟮木幊谭椒ň哂兴膫€(gè)基本特征:</font><font FACE="Times New Roman" SIZE="3"></p>
<p>1.</font><font SIZE="3">抽象:</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無(wú)關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問(wèn)題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。比如,我們要設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng),考察學(xué)生這個(gè)對(duì)象時(shí),我們只關(guān)心他的班級(jí)、學(xué)號(hào)、成績(jī)等,而不用去關(guān)心他的身高、體重這些信息。抽象包括兩個(gè)方面,一是過(guò)程抽象,二是數(shù)據(jù)抽象。過(guò)程抽象是指任何一個(gè)明確定義功能的操作都可被使用者看作單個(gè)的實(shí)體看待,盡管這個(gè)操作實(shí)際上可能由一系列更低級(jí)的操作來(lái)完成。數(shù)據(jù)抽象定義了數(shù)據(jù)類(lèi)型和施加于該類(lèi)型對(duì)象上的操作,并限定了對(duì)象的值只能通過(guò)使用這些操作修改和觀察。</font><font FACE="Times New Roman" SIZE="3"></p>
<p>2.</font><font SIZE="3">繼承:</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">繼承是一種聯(lián)結(jié)類(lèi)的層次模型,并且允許和鼓勵(lì)類(lèi)的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類(lèi)可以從現(xiàn)有的類(lèi)中派生,這個(gè)過(guò)程稱為類(lèi)繼承。新類(lèi)繼承了原始類(lèi)的特性,新類(lèi)稱為原始類(lèi)的派生類(lèi)(子類(lèi)),而原始類(lèi)稱為新類(lèi)的基類(lèi)(父類(lèi))。派生類(lèi)可以從它的基類(lèi)那里繼承方法和實(shí)例變量,并且類(lèi)可以修改或增加新的方法使之更適合特殊的需要。這也體現(xiàn)了大自然中一般與特殊的關(guān)系。繼承性很好的解決了軟件的可重用性問(wèn)題。比如說(shuō),所有的</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">應(yīng)用程序都有一個(gè)窗口,它們可以看作都是從一個(gè)窗口類(lèi)派生出來(lái)的。但是有的應(yīng)用程序用于文字處理,有的應(yīng)用程序用于繪圖,這是由于派生出了不同的子類(lèi),各個(gè)子類(lèi)添加了不同的特性。</font><font FACE="Times New Roman" SIZE="3"></p>
<p>3.</font><font SIZE="3">封裝:</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">封裝是面向?qū)ο蟮奶卣髦?,是?duì)象和類(lèi)概念的主要特性。封裝是把過(guò)程和數(shù)據(jù)包圍起來(lái),對(duì)數(shù)據(jù)的訪問(wèn)只能通過(guò)已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過(guò)一個(gè)受保護(hù)的接口訪問(wèn)其他對(duì)象。一旦定義了一個(gè)對(duì)象的特性,則有必要決定這些特性的可見(jiàn)性,即哪些特性對(duì)外部世界是可見(jiàn)的,哪些特性用于表示內(nèi)部狀態(tài)。在這個(gè)階段定義對(duì)象的接口。通常,應(yīng)禁止直接訪問(wèn)一個(gè)對(duì)象的實(shí)際表示,而應(yīng)通過(guò)操作接口訪問(wèn)對(duì)象,這稱為信息隱藏。事實(shí)上,信息隱藏是用戶對(duì)封裝性的認(rèn)識(shí),封裝則為信息隱藏提供支持。封裝保證了模塊具有較好的獨(dú)立性,使得程序維護(hù)修改較為容易。對(duì)應(yīng)用程序的修改僅限于類(lèi)的內(nèi)部,因而可以將應(yīng)用程序修改帶來(lái)的影響減少到最低限度。</font><font FACE="Times New Roman" SIZE="3"></p>
<p>4. </font><font SIZE="3">多態(tài)性:</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">多態(tài)性是指允許不同類(lèi)的對(duì)象對(duì)同一消息作出響應(yīng)。比如同樣的加法,把兩個(gè)時(shí)間加在一起和把兩個(gè)整數(shù)加在一起肯定完全不同。又比如,同樣的選擇編輯</font><font FACE="Times New Roman" SIZE="3">-</font><font SIZE="3">粘貼操作,在字處理程序和繪圖程序中有不同的效果。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語(yǔ)言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問(wèn)題。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">面向?qū)ο蟪绦蛟O(shè)計(jì)具有許多優(yōu)點(diǎn):</font><font SIZE="3" FACE="Times New Roman"><ul>
<li><p ALIGN="JUSTIFY"></font><font SIZE="3">開(kāi)發(fā)時(shí)間短,效率高,可靠性高,所開(kāi)發(fā)的程序更強(qiáng)壯。由于面向?qū)ο缶幊痰目芍赜眯?,可以在?yīng)用程序中大量采用成熟的類(lèi)庫(kù),從而縮短了開(kāi)發(fā)時(shí)間。</font><font SIZE="3" FACE="Times New Roman"></p>
</li>
<li><p ALIGN="JUSTIFY"></font><font SIZE="3">應(yīng)用程序更易于維護(hù)、更新和升級(jí)。繼承和封裝使得應(yīng)用程序的修改帶來(lái)的影響更加局部化。</font><font FACE="Times New Roman" SIZE="3"></p>
</li>
</ul>
<p ALIGN="JUSTIFY">Windows</font><font SIZE="3">的最初開(kāi)發(fā)是在</font><font FACE="Times New Roman" SIZE="3">80</font><font SIZE="3">年代早期,在</font><font FACE="Times New Roman" SIZE="3">C++</font><font SIZE="3">出現(xiàn)之前,但是當(dāng)時(shí)已經(jīng)提出了面向?qū)ο笫降某绦蛟O(shè)計(jì)思想。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的開(kāi)發(fā)者們已經(jīng)意識(shí)到將界面上不同的項(xiàng)看作對(duì)象的好處,但是他們?nèi)匀槐黄炔捎脗鹘y(tǒng)的</font><font FACE="Times New Roman" SIZE="3">C</font><font SIZE="3">語(yǔ)言來(lái)處理這些對(duì)象。在</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的界面設(shè)計(jì)和軟件開(kāi)發(fā)環(huán)境中,可以說(shuō)處處貫穿著面向?qū)ο蟮乃枷搿?lt;/font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">在</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">中,程序的基本單位不是過(guò)程和函數(shù),而是窗口。一個(gè)窗口是一組數(shù)據(jù)的集合和處理這些數(shù)據(jù)的方法和窗口函數(shù)。從面向?qū)ο蟮慕嵌葋?lái)看,窗口本身就是一個(gè)對(duì)象。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">程序的執(zhí)行過(guò)程本身就是窗口和其他對(duì)象的創(chuàng)建、處理和消亡過(guò)程。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">中的消息的發(fā)送可以理解為一個(gè)窗口對(duì)象向別的窗口對(duì)象請(qǐng)求對(duì)象的服務(wù)過(guò)程。因此,用面向?qū)ο蠓椒▉?lái)進(jìn)行</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">程序的設(shè)計(jì)與開(kāi)發(fā)是極其方便的和自然的。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">采用面向?qū)ο蟮姆椒▉?lái)進(jìn)行</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">程序設(shè)計(jì)還可以簡(jiǎn)化對(duì)資源的管理。當(dāng)我們將資源映射成一個(gè)</font><font FACE="Times New Roman" SIZE="3">C++</font><font SIZE="3">對(duì)象時(shí),對(duì)資源的使用可以翻譯成以下</font><font FACE="Times New Roman" SIZE="3">C++</font><font SIZE="3">順序:</font><font FACE="Times New Roman" SIZE="3"></p>
<p>1.</font><font SIZE="3">創(chuàng)建一個(gè)對(duì)象:如定義一個(gè)畫(huà)筆對(duì)象</font><font FACE="Times New Roman" SIZE="3"></p>
<p>2.</font><font SIZE="3">使用對(duì)象:用畫(huà)筆繪圖</font><font FACE="Times New Roman" SIZE="3"></p>
<p>3.</font><font SIZE="3">撤消該對(duì)象</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">一個(gè)對(duì)象的創(chuàng)建是對(duì)一個(gè)對(duì)象的定義過(guò)程,可以由對(duì)象的構(gòu)造函數(shù)處理對(duì)資源的請(qǐng)求過(guò)程。當(dāng)某一個(gè)對(duì)象退出活動(dòng)范圍時(shí),它的撤消可以由編譯器來(lái)自動(dòng)管理。各種資源和</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">結(jié)構(gòu)都能以這種方式處理,如設(shè)備上下文、畫(huà)筆、字體、畫(huà)刷等等。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="CENTER"></font> <b><font SIZE="4"></p>
<p ALIGN="CENTER">小 結(jié)</font><font FACE="Times New Roman" SIZE="3"></p>
</b><p></font><font SIZE="3">在這一講中,我們主要向讀者介紹了:</font><font FACE="Times New Roman" SIZE="3"><ul>
<li>Windows</font><font SIZE="3">操作系統(tǒng)的特點(diǎn):面向?qū)ο蟮膱D形用戶界面,一致的用戶接口,設(shè)備無(wú)關(guān)的圖形輸出以及多任務(wù)。</font><font FACE="Times New Roman" SIZE="3"></li>
</ul>
</font><ul>
<font FACE="Times New Roman" SIZE="3">
<li>Windows</font><font SIZE="3">編程的四個(gè)特點(diǎn):事件驅(qū)動(dòng)、消息循環(huán)、圖形輸出、資源共享</font><font FACE="Times New Roman" SIZE="3"></li>
</font>
</ul>
<ul>
<font FACE="Times New Roman" SIZE="3">
<li>Windows</font><font SIZE="3">的基本用戶界面對(duì)象:包括窗口、標(biāo)題欄、圖標(biāo)、光標(biāo)、插入符號(hào)、對(duì)話框、控件等。</font><font FACE="Times New Roman" SIZE="3"></li>
</font>
</ul>
<ul>
<font FACE="Times New Roman" SIZE="3">
<li>Windows</font><font SIZE="3">應(yīng)用程序的基本組成和生成過(guò)程:</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">應(yīng)用程序包含</font><font FACE="Times New Roman" SIZE="3">C</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">CPP</font><font SIZE="3">、頭文件和資源文件;</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">應(yīng)用程序的生成要經(jīng)過(guò)編譯和連接兩個(gè)階段。</font><font FACE="Times New Roman" SIZE="3"></li>
</font>
</ul>
<ul>
<font FACE="Times New Roman" SIZE="3">
<li>Windows</font><font SIZE="3">應(yīng)用程序的開(kāi)發(fā)工具</font><font FACE="Times New Roman" SIZE="3">Visual C++</font><font FACE="Times New Roman" SIZE="3"></li>
</font>
</ul>
<ul>
<font SIZE="3" FACE="Times New Roman">
<li></font><font SIZE="3">面向?qū)ο缶幊痰幕A(chǔ)知識(shí)和運(yùn)用面向?qū)ο蠹夹g(shù)進(jìn)行</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">編程:對(duì)象、類(lèi)、消息的概念;面向?qū)ο蟮木幊烫卣鳎撼橄?,繼承,封裝和多態(tài)性。在</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">編程中,窗口本身就是一個(gè)重要的對(duì)象。</font><font FACE="Times New Roman" SIZE="3"></li>
</font>
</ul>
<p> <font FACE="Times New Roman" SIZE="3"></p>
</font><p ALIGN="right"><font FACE="Times New Roman" size="2">[</font><a href="chap1_4.htm"><font size="2">上一頁(yè)</font></a><font FACE="Times New Roman" size="2">]</font></p>
<font size="3"><hr noshade color="#3973DE" size="1">
<p align="center"></font><font size="2" color="#000000">本教程由<a href="http://vcdynasty.yeah.net">Visual C++王朝(Where programmers come together)</a>協(xié)助制作,1999<br>
未經(jīng)許可,請(qǐng)勿以任何形式復(fù)制或轉(zhuǎn)載</font><font SIZE="5"></font></td>
</tr>
</table>
</center></div>
</body>
</html>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -