官术网_书友最值得收藏!

1.4 面向?qū)ο蟮幕靖拍?/h3>

面向?qū)ο蟪绦蛟O(shè)計(jì)是模擬現(xiàn)實(shí)世界而產(chǎn)生的一種編程方法,是對(duì)事物的功能抽象與數(shù)據(jù)抽象,并將解決問(wèn)題的過(guò)程看成一個(gè)分類演繹的過(guò)程。其中,對(duì)象與類是面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念。

1.4.1 對(duì)象與類

在現(xiàn)實(shí)世界中,隨處可見(jiàn)的一種事物就是對(duì)象,對(duì)象是事物存在的實(shí)體,如學(xué)生、汽車等。人類解決問(wèn)題的方式總是將復(fù)雜的事物簡(jiǎn)單化,于是就會(huì)思考這些對(duì)象都是由哪些部分組成的。通常都會(huì)將對(duì)象劃分為兩個(gè)部分,即靜態(tài)部分與動(dòng)態(tài)部分。顧名思義,靜態(tài)部分就是不能動(dòng)的部分,這個(gè)部分被稱為“屬性”,任何對(duì)象都會(huì)具備其自身屬性,如一個(gè)人,其屬性包括高矮、胖瘦、年齡、性別等。然而具有這些屬性的人會(huì)執(zhí)行哪些動(dòng)作也是一個(gè)值得探討的部分,這個(gè)人可以轉(zhuǎn)身、微笑、說(shuō)話、奔跑,這些是這個(gè)人具備的行為(動(dòng)態(tài)部分),人類通過(guò)探討對(duì)象的屬性和觀察對(duì)象的行為了解對(duì)象。

在計(jì)算機(jī)世界中,面向?qū)ο蟪绦蛟O(shè)計(jì)的思想要以對(duì)象來(lái)思考問(wèn)題,首先要將現(xiàn)實(shí)世界的實(shí)體抽象為對(duì)象,然后考慮這個(gè)對(duì)象具備的屬性和行為。例如,現(xiàn)在面臨一名足球運(yùn)動(dòng)員想要將球射進(jìn)對(duì)方球門這個(gè)實(shí)際問(wèn)題,試著以面向?qū)ο蟮乃枷雭?lái)解決這一實(shí)際問(wèn)題。步驟如下:

首先可以從這一問(wèn)題中抽象出對(duì)象,這里抽象出的對(duì)象為一名足球運(yùn)動(dòng)員。

然后識(shí)別這個(gè)對(duì)象的屬性。對(duì)象具備的屬性都是靜態(tài)屬性,如足球運(yùn)動(dòng)員有一個(gè)鼻子、兩條腿等,這些屬性如圖1.5所示。

接著識(shí)別這個(gè)對(duì)象的動(dòng)態(tài)行為,即足球運(yùn)動(dòng)員的動(dòng)作,如跳躍、轉(zhuǎn)身等,這些行為都是這個(gè)對(duì)象基于其屬性而具有的動(dòng)作,這些行為如圖1.6所示。

圖1.5 識(shí)別對(duì)象的屬性

識(shí)別出這個(gè)對(duì)象的屬性和行為后,這個(gè)對(duì)象就被定義完成了,然后根據(jù)足球運(yùn)動(dòng)員具有的特性制定要射進(jìn)對(duì)方球門的具體方案以解決問(wèn)題。

究其本質(zhì),所有的足球運(yùn)動(dòng)員都具有以上的屬性和行為,可以將這些屬性和行為封裝起來(lái)以描述足球運(yùn)動(dòng)員這類人。由此可見(jiàn),類實(shí)質(zhì)上就是封裝對(duì)象屬性和行為的載體,而對(duì)象則是類抽象出來(lái)的一個(gè)實(shí)例。這也是進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的核心思想,即把具體事物的共同特征抽象成實(shí)體概念,有了這些抽象出來(lái)的實(shí)體概念,就可以在編程語(yǔ)言的支持下創(chuàng)建類,因此說(shuō)類是那些實(shí)體的一種模型,具體如圖1.7所示。

圖1.6 識(shí)別對(duì)象具有的行為

圖1.7 現(xiàn)實(shí)世界與編程語(yǔ)言的對(duì)應(yīng)關(guān)系

在圖1.7中,通過(guò)面向?qū)ο蟪绦蛟O(shè)計(jì)的思想可以建立現(xiàn)實(shí)世界中具體事物、實(shí)體概念與編程語(yǔ)言中類、對(duì)象之間的一一對(duì)應(yīng)關(guān)系。

1.4.2 面向?qū)ο蟮娜筇卣?/h4>

面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)際上就是對(duì)現(xiàn)實(shí)世界的對(duì)象進(jìn)行建模操作。面向?qū)ο蟪绦蛟O(shè)計(jì)的特征主要可以概括為封裝性、繼承性和多態(tài)性,接下來(lái)針對(duì)這3種特性進(jìn)行簡(jiǎn)單介紹。

1. 封裝性

封裝性是面向?qū)ο蟪绦蛟O(shè)計(jì)的核心思想。它是指將對(duì)象的屬性和行為封裝起來(lái),其載體就是類,類通常對(duì)客戶隱藏其實(shí)現(xiàn)細(xì)節(jié),這就是封裝的思想。例如,計(jì)算機(jī)的主機(jī)是由內(nèi)存條、硬盤、風(fēng)扇等部件組成,生產(chǎn)廠家把這些部件用一個(gè)外殼封裝起來(lái)組成主機(jī),用戶在使用該主機(jī)時(shí),無(wú)須關(guān)心其內(nèi)部的組成及工作原理,如圖1.8所示。

圖1.8 主機(jī)及組成部件

2. 繼承性

繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)提高重用性的重要措施。繼承性體現(xiàn)了特殊類與一般類之間的關(guān)系。當(dāng)特殊類包含了一般類的所有屬性和行為,并且特殊類還可以有自己的屬性和行為時(shí),稱作特殊類繼承了一般類。一般類又稱為父類或基類,特殊類又稱為子類或派生類。例如,已經(jīng)描述了汽車模型這個(gè)類的屬性和行為,如果需要描述一個(gè)小轎車類,只需讓小轎車類繼承汽車模型類,然后再描述小轎車類特有的屬性和行為,而不必再重復(fù)描述一些在汽車模型類中已有的屬性和行為,如圖1.9所示。

圖1.9 汽車模型與小轎車

3. 多態(tài)性

多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的重要特征。生活中也常存在多態(tài)性,例如,學(xué)校的下課鈴聲響了,這時(shí)有學(xué)生去買零食,有學(xué)生去打球,有學(xué)生在聊天。不同的人對(duì)同一事件產(chǎn)生了不同的行為,這就是多態(tài)性在日常生活中的表現(xiàn)。程序中的多態(tài)是指一種行為對(duì)應(yīng)著多種不同的實(shí)現(xiàn)。例如,在一般類中說(shuō)明了一種求幾何圖形面積的行為,這種行為不具有具體含義,因?yàn)樗](méi)有確定具體的幾何圖形。然后再定義一些特殊類,如三角形、正方形、梯形等,它們都繼承自一般類。不同的特殊類都繼承了一般類的求面積的行為,可以根據(jù)具體的不同幾何圖形使用求面積公式,重新定義求面積行為的不同實(shí)現(xiàn),使之分別實(shí)現(xiàn)求三角形、正方形、梯形等面積的功能,如圖1.10所示。

圖1.10 一般類與特殊類

綜上所述,面向?qū)ο蟮某绦蛟O(shè)計(jì)就是通過(guò)建立一些類以及它們之間的關(guān)系來(lái)解決問(wèn)題。編程者要根據(jù)對(duì)象間的關(guān)系,建立類的體系,明確它們之間是構(gòu)成關(guān)系還是類屬關(guān)系,從而確定類之間是包含、引用還是繼承。面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)很大特點(diǎn)是支持代碼的重用,這就要求可重用的類一定要抓住不同實(shí)體間的共性特征。當(dāng)類的定義初步完成后,編程者就可以根據(jù)現(xiàn)實(shí)事物中對(duì)象的行為、對(duì)象之間的協(xié)作關(guān)系對(duì)具體工作細(xì)化模塊,并對(duì)這些對(duì)象進(jìn)行有機(jī)組裝,也就是利用對(duì)象進(jìn)行模塊化編程。

主站蜘蛛池模板: 得荣县| 德令哈市| 即墨市| 格尔木市| 靖江市| 连山| 博爱县| 玛曲县| 临海市| 定边县| 桑日县| 高尔夫| 牙克石市| 邵东县| 辰溪县| 莒南县| 公安县| 健康| 买车| 加查县| 腾冲县| 上思县| 蓬溪县| 中方县| 无锡市| 五常市| 日喀则市| 临沧市| 涡阳县| 吕梁市| 三原县| 临海市| 信阳市| 乐平市| 寿阳县| 荥经县| 华安县| 剑阁县| 香河县| 南平市| 南岸区|