湯小波
[摘要]在程序設(shè)計(jì)中,方法占有重要的地位,它是構(gòu)成程序的基本模塊。無(wú)論從程序編譯原理還是從程序可讀性上看,利用方法構(gòu)造的程序具有得天獨(dú)厚的技術(shù)優(yōu)勢(shì)。但方法的書寫和應(yīng)用對(duì)于初學(xué)者是一個(gè)難點(diǎn),本文從方法的構(gòu)造入手,深入解析了方法的構(gòu)造原理及在應(yīng)用中如何實(shí)現(xiàn)書寫方法,從而完全掌握方法的設(shè)計(jì)過(guò)程。
[關(guān)鍵字]方法 構(gòu)造 原理
在c#中,方法是作為類的成員出現(xiàn)的,書寫類必然要書寫方法。在面向?qū)ο缶幊踢^(guò)程中類又是非常重要的組成部分。作為方法其構(gòu)造原理值得我們深入剖析。
1、方法的構(gòu)造原理
查閱C#專業(yè)書籍,可知方法的構(gòu)造格式如下:
方法修飾符返回類型方法名(方法參數(shù)列表)
{方法實(shí)現(xiàn)部分;}對(duì)于眾多的方法修飾符,我們暫且以Public修飾符代替,表示方法在類的外部可以訪問(wèn)。對(duì)上述格式分析可知:從宏觀上看,一個(gè)方法包含兩大部分,方法頭和方法體({}部分),在方法頭中,有表示方法訪問(wèn)權(quán)限的方法修飾符,表示方法的返回值類型的返回類型,及方法的名稱,其后的括號(hào)中的參數(shù)表示方法的形參,在大括號(hào)中的部分稱為方法體。
從上述表述中,可以得知,書寫一個(gè)方法具有三要素:要素一、已知什么;要素二、求什么;要素三、怎么求。
例如:已知圓半徑,求圓面積,按上述解決實(shí)際問(wèn)題的原則,它的三要素為:
A已知:圓半徑r
B求:圓面積s
C怎么求:s=
經(jīng)過(guò)對(duì)上述問(wèn)題的抽象得到如下構(gòu)造圖:
在書寫方法時(shí),我們可以將三要素中的A、B兩項(xiàng)作為方法頭將實(shí)現(xiàn)方法功能的“怎么求”作為方法體,如下代碼所示:
通過(guò)對(duì)上述問(wèn)題的研究得出方法的構(gòu)造原理如下:
一、方法由方法頭和方法體構(gòu)成,而方法頭又由方法訪問(wèn)權(quán)限、方法返回值類型和方法名及形式參數(shù)構(gòu)成。
二、方法構(gòu)成三要素為方法的宏觀構(gòu)成體系。要素一:已知什么;要素二:求什么;要素三:怎么求。三者為方法的基本要素。
三、針對(duì)方法人口和出口參數(shù),方法構(gòu)造類型可分為四種情況:其一、無(wú)入口參數(shù)和出口參數(shù)(無(wú)返回值),稱為無(wú)進(jìn)無(wú)出型;
其二、有入口參數(shù)無(wú)出口參數(shù)(無(wú)返回值),稱為有進(jìn)無(wú)出型;
其三、無(wú)入口參數(shù)有出口參數(shù)(有返回值),稱為無(wú)進(jìn)有出型;
其四、有入口參數(shù)有出口參數(shù)(有返回值),稱為有進(jìn)有出型。
2、方法構(gòu)造實(shí)踐
對(duì)于在面向?qū)ο缶幊踢^(guò)程中,對(duì)類中方法的實(shí)踐,首先應(yīng)分析具體問(wèn)題的三個(gè)要素,已知、得到什么樣的結(jié)果及結(jié)果的實(shí)現(xiàn)思路與過(guò)程,充分利用方法的構(gòu)造原理來(lái)指導(dǎo)解決實(shí)際問(wèn)題。
[案例]:個(gè)人所得稅計(jì)算方法如下:當(dāng)工資在2000元以下時(shí),不上稅;在2000-3000的,按5%上稅,3000-4000的按10%上稅,4000-5000的按15%上稅,5000以上的按25%上稅,試編寫方法,當(dāng)已知某人工資時(shí),返回其所上的稅錢。
構(gòu)造步驟(一):
根據(jù)方法的構(gòu)造原理二,方法構(gòu)成三要素來(lái)分析,已知什么,顯然是某人的工資,求什么應(yīng)是個(gè)人所得稅;怎么求。算法在案例中很清楚。據(jù)此分析可畫出黑盒圖如下:
構(gòu)造步驟(二):根據(jù)方法構(gòu)造原理一,寫出方法初步構(gòu)造格式。將要素一作為方法人口參數(shù),要素二作為方法返回值,其值類型由返回結(jié)果決定。根據(jù)方法構(gòu)造原理三,可知該方法屬于有進(jìn)有出型方法。構(gòu)造見(jiàn)上右代碼。
構(gòu)造步驟(三):對(duì)于方法構(gòu)造要素三,如何求的問(wèn)題,則屬于面向過(guò)程的設(shè)計(jì)思想,直接體現(xiàn)一個(gè)問(wèn)題的算法的問(wèn)題,其難易程度取決于實(shí)際問(wèn)題的難度,它由程序設(shè)計(jì)的三種基本結(jié)構(gòu)構(gòu)成,即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。在實(shí)現(xiàn)過(guò)程中可充分利用三種結(jié)構(gòu)完成設(shè)計(jì)過(guò)程??蓪⑷肟趨?shù)作為已知條件進(jìn)行算法設(shè)計(jì),其算法如下:
根據(jù)此算法,可以利用c#語(yǔ)法規(guī)則寫出實(shí)現(xiàn)代碼,如下所示:
3、結(jié)語(yǔ)
本文從方法的構(gòu)造特點(diǎn)總結(jié)出了方法的構(gòu)造原理,將類中方法的實(shí)現(xiàn)上升到了理論高度,指導(dǎo)初學(xué)者完全理解和掌握方法,從一般問(wèn)題人手將具體問(wèn)題抽象出一個(gè)個(gè)的方法,此設(shè)計(jì)體現(xiàn)了模塊化的程序設(shè)計(jì)思想,提高了代碼的可重用性及開(kāi)發(fā)效率。此一切皆緣于方法的實(shí)現(xiàn)。