?? 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ì)開發(fā)技術(shù),它包括面向?qū)ο蠓治龊兔嫦驅(qū)ο蟪绦蛟O(shè)計(jì)。面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)的提出,主要是為了解決傳統(tǒng)程序設(shè)計(jì)方法——結(jié)構(gòu)化程序設(shè)計(jì)所不能解決的代碼重用問題。</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ù)和過程的集合。由于用戶的需求和軟、硬件技術(shù)的不斷發(fā)展變化,按照功能劃分設(shè)計(jì)的系統(tǒng)模塊必然是易變的和不穩(wěn)定的。這樣開發(fā)出來的模塊可重用性不高。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">面向?qū)ο蟪绦蛟O(shè)計(jì)從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心而不是以服務(wù)(功能)為中心來描述系統(tǒng)。它把編程問題視為一個(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í)世界的概念來組織模型的程序設(shè)計(jì)方法,它采用對(duì)象來描述問題空間的實(shí)體。關(guān)于對(duì)象這一概念,目前還沒有統(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ù)上的操作”這一公式來表達(dá)。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">類是具有相同操作功能和相同的數(shù)據(jù)格式(屬性)的對(duì)象的集合。類可以看作抽象數(shù)據(jù)類型的具體實(shí)現(xiàn)。抽象數(shù)據(jù)類型是數(shù)據(jù)類型抽象的表示形式。數(shù)據(jù)類型是指數(shù)據(jù)的集合和作用于其上的操作的集合,而抽象數(shù)據(jù)類型不關(guān)心操作實(shí)現(xiàn)的細(xì)節(jié)。從外部看,類型的行為可以用新定義的操作加以規(guī)定。類為對(duì)象集合的抽象,它規(guī)定了這些對(duì)象的公共屬性和方法;對(duì)象為類的一個(gè)實(shí)例。蘋果是一個(gè)類,而放在桌上的那個(gè)蘋果則是一個(gè)對(duì)象。對(duì)象和類的關(guān)系相當(dāng)于一般的程序設(shè)計(jì)語言中變量和變量類型的關(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)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。比如,我們要設(shè)計(jì)一個(gè)學(xué)生成績管理系統(tǒng),考察學(xué)生這個(gè)對(duì)象時(shí),我們只關(guān)心他的班級(jí)、學(xué)號(hào)、成績等,而不用去關(guān)心他的身高、體重這些信息。抽象包括兩個(gè)方面,一是過程抽象,二是數(shù)據(jù)抽象。過程抽象是指任何一個(gè)明確定義功能的操作都可被使用者看作單個(gè)的實(shí)體看待,盡管這個(gè)操作實(shí)際上可能由一系列更低級(jí)的操作來完成。數(shù)據(jù)抽象定義了數(shù)據(jù)類型和施加于該類型對(duì)象上的操作,并限定了對(duì)象的值只能通過使用這些操作修改和觀察。</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ì)類的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。這也體現(xiàn)了大自然中一般與特殊的關(guān)系。繼承性很好的解決了軟件的可重用性問題。比如說,所有的</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">應(yīng)用程序都有一個(gè)窗口,它們可以看作都是從一個(gè)窗口類派生出來的。但是有的應(yīng)用程序用于文字處理,有的應(yīng)用程序用于繪圖,這是由于派生出了不同的子類,各個(gè)子類添加了不同的特性。</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ì)象和類概念的主要特性。封裝是把過程和數(shù)據(jù)包圍起來,對(duì)數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過一個(gè)受保護(hù)的接口訪問其他對(duì)象。一旦定義了一個(gè)對(duì)象的特性,則有必要決定這些特性的可見性,即哪些特性對(duì)外部世界是可見的,哪些特性用于表示內(nèi)部狀態(tài)。在這個(gè)階段定義對(duì)象的接口。通常,應(yīng)禁止直接訪問一個(gè)對(duì)象的實(shí)際表示,而應(yīng)通過操作接口訪問對(duì)象,這稱為信息隱藏。事實(shí)上,信息隱藏是用戶對(duì)封裝性的認(rèn)識(shí),封裝則為信息隱藏提供支持。封裝保證了模塊具有較好的獨(dú)立性,使得程序維護(hù)修改較為容易。對(duì)應(yīng)用程序的修改僅限于類的內(nèi)部,因而可以將應(yīng)用程序修改帶來的影響減少到最低限度。</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)性是指允許不同類的對(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ōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問題。</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">開發(fā)時(shí)間短,效率高,可靠性高,所開發(fā)的程序更強(qiáng)壯。由于面向?qū)ο缶幊痰目芍赜眯裕梢栽趹?yīng)用程序中大量采用成熟的類庫,從而縮短了開發(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)用程序的修改帶來的影響更加局部化。</font><font FACE="Times New Roman" SIZE="3"></p>
</li>
</ul>
<p ALIGN="JUSTIFY">Windows</font><font SIZE="3">的最初開發(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">的開發(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">語言來處理這些對(duì)象。在</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">的界面設(shè)計(jì)和軟件開發(fā)環(huán)境中,可以說處處貫穿著面向?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">中,程序的基本單位不是過程和函數(shù),而是窗口。一個(gè)窗口是一組數(shù)據(jù)的集合和處理這些數(shù)據(jù)的方法和窗口函數(shù)。從面向?qū)ο蟮慕嵌葋砜矗翱诒旧砭褪且粋€(gè)對(duì)象。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">程序的執(zhí)行過程本身就是窗口和其他對(duì)象的創(chuàng)建、處理和消亡過程。</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">中的消息的發(fā)送可以理解為一個(gè)窗口對(duì)象向別的窗口對(duì)象請(qǐng)求對(duì)象的服務(wù)過程。因此,用面向?qū)ο蠓椒▉磉M(jìn)行</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">程序的設(shè)計(jì)與開發(fā)是極其方便的和自然的。</font><font FACE="Times New Roman" SIZE="3"></p>
<p></font><font SIZE="3">采用面向?qū)ο蟮姆椒▉磉M(jìn)行</font><font FACE="Times New Roman" SIZE="3">Windows</font><font SIZE="3">程序設(shè)計(jì)還可以簡化對(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è)畫筆對(duì)象</font><font FACE="Times New Roman" SIZE="3"></p>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -