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