国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

過渡或滲透式程序設(shè)計(jì)教學(xué)法

2014-06-18 05:19:39湯谷云王修信
電腦知識(shí)與技術(shù) 2014年11期
關(guān)鍵詞:面向?qū)ο?/a>模塊化函數(shù)

湯谷云 王修信

摘要:面向過程模塊化的理念是基于復(fù)雜程序設(shè)計(jì)的,面向?qū)ο缶幊桃彩菓?yīng)用于復(fù)雜軟件的開發(fā)設(shè)計(jì)與維護(hù),它們的出發(fā)點(diǎn)是一致的?;诿嫦蜻^程模塊化后的函數(shù)設(shè)計(jì)的思路,再借助抽象、封裝、繼承、多態(tài)技術(shù)的滲透及面向?qū)ο笳Z言的支持,形成面向?qū)ο罂梢韵蛎嫦蜻^程滲透,面向過程也可以向面向?qū)ο筮^渡的教學(xué)模式。

關(guān)鍵詞:模塊化;函數(shù);類;面向?qū)ο?/p>

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)11-2584-04

Abstract: The idea of the modularity in process-oriented is based on complex programming, object-oriented programming is also used in the development and maintenance of complex software designs, their starting point is the same. by the process-oriented modular design idea based on function, and then by means of technology penetration of abstraction, encapsulation, inheritance, polymorphism and the supports of object-oriented language. Formation the object-oriented form can penetrate to the process-oriented, the process-oriented can also transition to object-oriented teaching pattern.

Key words: modularity;function;class;object-oriented

1 過程式模塊理念的建立

C語言做為計(jì)算專業(yè)高級(jí)語言的入門課程,它的面向過程的程序設(shè)計(jì)方法對(duì)學(xué)生的影響深刻,在教學(xué)過程中充分感受到如果放棄過程式的思路,重新建立對(duì)象式的思路,學(xué)生在思維方式的轉(zhuǎn)變上的困難。不推翻、不放棄原來的過程式思維,尋求一種在此基礎(chǔ)上進(jìn)行知識(shí)遞進(jìn)、技術(shù)擴(kuò)充,從而平穩(wěn)過渡到對(duì)象式編程是一種好的解決方案。

面向過程的程序設(shè)計(jì)主要是設(shè)計(jì)函數(shù)或過程,順序、條件、選擇三種控制結(jié)構(gòu)的學(xué)習(xí)比較容易,在學(xué)習(xí)C語言時(shí),給出一個(gè)程序設(shè)計(jì)問題,比如說求1+2+3+…。+n,在教學(xué)過程中每當(dāng)提到類似問題,學(xué)生最初想到的就是設(shè)計(jì)主方法來完成任務(wù),理由是方便設(shè)計(jì)、簡(jiǎn)單久而久之,學(xué)生就養(yǎng)成了習(xí)慣于只用主函數(shù)來完成程序設(shè)計(jì)任務(wù)。和現(xiàn)實(shí)生活做類比,就相當(dāng)于在現(xiàn)實(shí)生活中解決問題不會(huì)尋求他人的幫助,一切事物都必須親力親為,這不但做不好,而且效率不高??梢姡仨毜谝徊綇?qiáng)化過程式模塊設(shè)計(jì)的理念。

要學(xué)好面向?qū)ο蟮木幊淌紫纫龑?dǎo)學(xué)生養(yǎng)成解決問題時(shí)進(jìn)行分析研究,劃分出不同的功能塊,尋求擅長(zhǎng)解決不同問題的人的幫助,共同完成任務(wù)。由此得到,在程序設(shè)計(jì)過程中也應(yīng)該如此,把程序分成若干模塊,每個(gè)模塊用來實(shí)現(xiàn)一個(gè)特定的功能,再重新思考在C語言程序設(shè)計(jì)中用主函數(shù)之外的函數(shù)或過程的理由,加強(qiáng)C語言用函數(shù)或過程的方式來思考和解決問題,由主函數(shù)統(tǒng)一部署不同的函數(shù),函數(shù)間也可以互相調(diào)用,同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次,利用函數(shù),減少重復(fù)編寫程序段的工作量等等,這些在學(xué)習(xí)C語言時(shí)所強(qiáng)調(diào)的問題的理解。如同在現(xiàn)實(shí)生活中所具有的合理分工,團(tuán)結(jié)協(xié)作的做事理念和風(fēng)格。有了這種風(fēng)格和理念,在面向過程程序設(shè)計(jì)時(shí)應(yīng)該首先想到尋找他人的幫助,也就是函數(shù)過程的設(shè)計(jì),而不是主函數(shù)的凡事親力親為這個(gè)模塊化理念是基礎(chǔ),就是要學(xué)會(huì)將原來只有一個(gè)主函數(shù)的程序轉(zhuǎn)換成主函數(shù)對(duì)其他函數(shù)的調(diào)用,設(shè)計(jì)的關(guān)鍵是設(shè)計(jì)主函數(shù)之外的其他功能函數(shù)。

2 函數(shù)到類的過渡

面向?qū)ο蠹夹g(shù)的產(chǎn)生主要應(yīng)用于復(fù)雜軟件的開發(fā)設(shè)計(jì),因此首先必須有面向過程模塊化的理念,因?yàn)檫@一理念也是基于復(fù)雜程序設(shè)計(jì)的,所以它們的出發(fā)點(diǎn)是一致的。面向過程的三種控制結(jié)構(gòu):順序、條件、循環(huán),解決了模塊化后的函數(shù)設(shè)計(jì)問題。而面向?qū)ο缶哂谐橄笮浴⒎庋b性、繼承性、多態(tài)性的特點(diǎn),反過來說,就是利用抽象、封裝、繼承、多態(tài)技術(shù)加上面向?qū)ο笳Z言的支持,設(shè)計(jì)出面向?qū)ο蟮某绦?。Java是一種純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,C語言到Java語言的使用來體現(xiàn)過程式到對(duì)象式的平滑過渡,也可以說對(duì)象式技術(shù)向過程式的滲透。

2.1 抽象封裝的滲透

面向?qū)ο笾?,以類為基本的程序設(shè)計(jì)單位,程序由一個(gè)或多個(gè)類來構(gòu)成,類的形成的就是由抽象技術(shù)產(chǎn)生的,類中有屬性、有方法。方法就是在原來C語言的模塊化理念的基礎(chǔ)上函數(shù),只不過在面向?qū)ο笾泻瘮?shù)(方法)必須要存在于一個(gè)類中的,也就是說要為方法找到一個(gè)“家”,一個(gè)歸宿。抽象技術(shù)還允許在類中增加屬性,封裝技術(shù)是指類中的屬性和方法是不可分割的整體,屬性實(shí)際上就是用來提供給方法操作的數(shù)據(jù)。如果一個(gè)類中沒有屬性,方法的初始操作數(shù)據(jù)可以由自身的參數(shù)中來獲取,如果類中有屬性2.2 多態(tài)——重載的滲透

抽象封裝的技術(shù)的使用,屬性的增加,方法的操作數(shù)據(jù)可以由類中的屬性獲取。多態(tài)的重載是指類中出現(xiàn)方法重名的現(xiàn)象,就是一個(gè)類中具有同名的方法,參數(shù)不同的情況,由于操作數(shù)據(jù)來源由一個(gè)變成了兩個(gè),就可以形成重載的情況,這樣可以提高程序的抽象程度和簡(jiǎn)潔程度。

2.3 繼承與多態(tài)——覆蓋的滲透

當(dāng)一個(gè)類需要另一個(gè)類的所有數(shù)據(jù)和方法時(shí),就可以使用繼承,繼承體現(xiàn)了兩個(gè)類之間的一種關(guān)系,提高軟件的可重用性;當(dāng)父類的方法在子類中重新獲得了定義,方法名,參數(shù)、返回值都不變時(shí),子類就覆蓋了父類的方法,這也是一種多態(tài),同時(shí)子類還可以增加新的功能。

3 封裝的另一面

屬性和方法有機(jī)地結(jié)合在一起,使得類中的方法可以對(duì)其屬性操作,這只是封裝特性對(duì)內(nèi)的一面。另一方面是對(duì)外的一面,也就是說一個(gè)類的對(duì)象在和其他他類建立關(guān)系時(shí),要做到即可以與外界聯(lián)系,又能夠保護(hù)自己的隱私。這主要是通過控制屬性的私有性,但提供對(duì)外統(tǒng)一的訪問屬性的方法(set、get)來實(shí)現(xiàn)。如果要控制屬性只讀,或者是可讀可寫就變得很容易,實(shí)現(xiàn)針對(duì)不同用戶的訪問需求,例如下列中屬性n為可讀可寫4 子類的問題的出現(xiàn)

當(dāng)對(duì)父類屬性的訪問控制為private后,原來定義的ExampleChild就會(huì)有問題5 總結(jié)

在學(xué)習(xí)面向?qū)ο髸r(shí)應(yīng)該不推翻、不放棄原來的面向過程,因?yàn)槊嫦驅(qū)ο箢愔械姆椒▽?shí)現(xiàn)時(shí)還是一個(gè)函數(shù)或過程的設(shè)計(jì)。不能將過程式與對(duì)象式對(duì)立起來,應(yīng)該理解成在面向過程的基礎(chǔ)上又增加了一些新的手段,從而形成了面向?qū)ο蟮募夹g(shù),這樣一來,程序設(shè)計(jì)的學(xué)習(xí)是一個(gè)逐步遞進(jìn)的過程。可以看出面向?qū)ο笥辛烁嗟能浖O(shè)計(jì)和實(shí)現(xiàn)的手段,以類為單位,各個(gè)類可以獨(dú)立存在,這在軟件的可復(fù)用性、可維護(hù)性方面得到了很大的提升。能夠完成面向過程函數(shù)到面向?qū)ο箢惖钠交^渡,當(dāng)系統(tǒng)復(fù)雜時(shí),多個(gè)類之間按照關(guān)聯(lián)、依賴、繼承、實(shí)現(xiàn)的關(guān)系組織起來,就完全過渡到了面向?qū)ο蟆?/p>

實(shí)踐證明這種滲透式的教學(xué)方法對(duì)于掌握面向過程編程方式后,迅速掌握面向?qū)ο蟮脑O(shè)計(jì)理念和技術(shù),建立面向?qū)ο蟮乃季S方式起到了非常重要的作用。面向?qū)ο罂梢韵蛎嫦蜻^程滲透,面向過程也可以向面向?qū)ο筮^渡,使得兩者不對(duì)立,但可以同一。當(dāng)然,如果要采用面向?qū)ο蟮姆绞骄幊蹋蛻?yīng)該盡快走過這種過渡期。過渡期之后再解決問題時(shí),還是要直接用面向?qū)ο蟮乃季S方式,以抽象、封裝、繼承、多態(tài)技術(shù)為出發(fā)點(diǎn)來進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。

參考文獻(xiàn):

[1] 譚浩強(qiáng).C程序設(shè)計(jì)語言[M].北京:清華大學(xué)出版社,2009.

[2] 劉慧寧.Java程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2011.

[3] 耿祥義.Java2實(shí)用教程[M].北京:清華大學(xué)出版社,2012.endprint

摘要:面向過程模塊化的理念是基于復(fù)雜程序設(shè)計(jì)的,面向?qū)ο缶幊桃彩菓?yīng)用于復(fù)雜軟件的開發(fā)設(shè)計(jì)與維護(hù),它們的出發(fā)點(diǎn)是一致的?;诿嫦蜻^程模塊化后的函數(shù)設(shè)計(jì)的思路,再借助抽象、封裝、繼承、多態(tài)技術(shù)的滲透及面向?qū)ο笳Z言的支持,形成面向?qū)ο罂梢韵蛎嫦蜻^程滲透,面向過程也可以向面向?qū)ο筮^渡的教學(xué)模式。

關(guān)鍵詞:模塊化;函數(shù);類;面向?qū)ο?/p>

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)11-2584-04

Abstract: The idea of the modularity in process-oriented is based on complex programming, object-oriented programming is also used in the development and maintenance of complex software designs, their starting point is the same. by the process-oriented modular design idea based on function, and then by means of technology penetration of abstraction, encapsulation, inheritance, polymorphism and the supports of object-oriented language. Formation the object-oriented form can penetrate to the process-oriented, the process-oriented can also transition to object-oriented teaching pattern.

Key words: modularity;function;class;object-oriented

1 過程式模塊理念的建立

C語言做為計(jì)算專業(yè)高級(jí)語言的入門課程,它的面向過程的程序設(shè)計(jì)方法對(duì)學(xué)生的影響深刻,在教學(xué)過程中充分感受到如果放棄過程式的思路,重新建立對(duì)象式的思路,學(xué)生在思維方式的轉(zhuǎn)變上的困難。不推翻、不放棄原來的過程式思維,尋求一種在此基礎(chǔ)上進(jìn)行知識(shí)遞進(jìn)、技術(shù)擴(kuò)充,從而平穩(wěn)過渡到對(duì)象式編程是一種好的解決方案。

面向過程的程序設(shè)計(jì)主要是設(shè)計(jì)函數(shù)或過程,順序、條件、選擇三種控制結(jié)構(gòu)的學(xué)習(xí)比較容易,在學(xué)習(xí)C語言時(shí),給出一個(gè)程序設(shè)計(jì)問題,比如說求1+2+3+…。+n,在教學(xué)過程中每當(dāng)提到類似問題,學(xué)生最初想到的就是設(shè)計(jì)主方法來完成任務(wù),理由是方便設(shè)計(jì)、簡(jiǎn)單久而久之,學(xué)生就養(yǎng)成了習(xí)慣于只用主函數(shù)來完成程序設(shè)計(jì)任務(wù)。和現(xiàn)實(shí)生活做類比,就相當(dāng)于在現(xiàn)實(shí)生活中解決問題不會(huì)尋求他人的幫助,一切事物都必須親力親為,這不但做不好,而且效率不高??梢姡仨毜谝徊綇?qiáng)化過程式模塊設(shè)計(jì)的理念。

要學(xué)好面向?qū)ο蟮木幊淌紫纫龑?dǎo)學(xué)生養(yǎng)成解決問題時(shí)進(jìn)行分析研究,劃分出不同的功能塊,尋求擅長(zhǎng)解決不同問題的人的幫助,共同完成任務(wù)。由此得到,在程序設(shè)計(jì)過程中也應(yīng)該如此,把程序分成若干模塊,每個(gè)模塊用來實(shí)現(xiàn)一個(gè)特定的功能,再重新思考在C語言程序設(shè)計(jì)中用主函數(shù)之外的函數(shù)或過程的理由,加強(qiáng)C語言用函數(shù)或過程的方式來思考和解決問題,由主函數(shù)統(tǒng)一部署不同的函數(shù),函數(shù)間也可以互相調(diào)用,同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次,利用函數(shù),減少重復(fù)編寫程序段的工作量等等,這些在學(xué)習(xí)C語言時(shí)所強(qiáng)調(diào)的問題的理解。如同在現(xiàn)實(shí)生活中所具有的合理分工,團(tuán)結(jié)協(xié)作的做事理念和風(fēng)格。有了這種風(fēng)格和理念,在面向過程程序設(shè)計(jì)時(shí)應(yīng)該首先想到尋找他人的幫助,也就是函數(shù)過程的設(shè)計(jì),而不是主函數(shù)的凡事親力親為這個(gè)模塊化理念是基礎(chǔ),就是要學(xué)會(huì)將原來只有一個(gè)主函數(shù)的程序轉(zhuǎn)換成主函數(shù)對(duì)其他函數(shù)的調(diào)用,設(shè)計(jì)的關(guān)鍵是設(shè)計(jì)主函數(shù)之外的其他功能函數(shù)。

2 函數(shù)到類的過渡

面向?qū)ο蠹夹g(shù)的產(chǎn)生主要應(yīng)用于復(fù)雜軟件的開發(fā)設(shè)計(jì),因此首先必須有面向過程模塊化的理念,因?yàn)檫@一理念也是基于復(fù)雜程序設(shè)計(jì)的,所以它們的出發(fā)點(diǎn)是一致的。面向過程的三種控制結(jié)構(gòu):順序、條件、循環(huán),解決了模塊化后的函數(shù)設(shè)計(jì)問題。而面向?qū)ο缶哂谐橄笮?、封裝性、繼承性、多態(tài)性的特點(diǎn),反過來說,就是利用抽象、封裝、繼承、多態(tài)技術(shù)加上面向?qū)ο笳Z言的支持,設(shè)計(jì)出面向?qū)ο蟮某绦?。Java是一種純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,C語言到Java語言的使用來體現(xiàn)過程式到對(duì)象式的平滑過渡,也可以說對(duì)象式技術(shù)向過程式的滲透。

2.1 抽象封裝的滲透

面向?qū)ο笾?,以類為基本的程序設(shè)計(jì)單位,程序由一個(gè)或多個(gè)類來構(gòu)成,類的形成的就是由抽象技術(shù)產(chǎn)生的,類中有屬性、有方法。方法就是在原來C語言的模塊化理念的基礎(chǔ)上函數(shù),只不過在面向?qū)ο笾泻瘮?shù)(方法)必須要存在于一個(gè)類中的,也就是說要為方法找到一個(gè)“家”,一個(gè)歸宿。抽象技術(shù)還允許在類中增加屬性,封裝技術(shù)是指類中的屬性和方法是不可分割的整體,屬性實(shí)際上就是用來提供給方法操作的數(shù)據(jù)。如果一個(gè)類中沒有屬性,方法的初始操作數(shù)據(jù)可以由自身的參數(shù)中來獲取,如果類中有屬性2.2 多態(tài)——重載的滲透

抽象封裝的技術(shù)的使用,屬性的增加,方法的操作數(shù)據(jù)可以由類中的屬性獲取。多態(tài)的重載是指類中出現(xiàn)方法重名的現(xiàn)象,就是一個(gè)類中具有同名的方法,參數(shù)不同的情況,由于操作數(shù)據(jù)來源由一個(gè)變成了兩個(gè),就可以形成重載的情況,這樣可以提高程序的抽象程度和簡(jiǎn)潔程度。

2.3 繼承與多態(tài)——覆蓋的滲透

當(dāng)一個(gè)類需要另一個(gè)類的所有數(shù)據(jù)和方法時(shí),就可以使用繼承,繼承體現(xiàn)了兩個(gè)類之間的一種關(guān)系,提高軟件的可重用性;當(dāng)父類的方法在子類中重新獲得了定義,方法名,參數(shù)、返回值都不變時(shí),子類就覆蓋了父類的方法,這也是一種多態(tài),同時(shí)子類還可以增加新的功能。

3 封裝的另一面

屬性和方法有機(jī)地結(jié)合在一起,使得類中的方法可以對(duì)其屬性操作,這只是封裝特性對(duì)內(nèi)的一面。另一方面是對(duì)外的一面,也就是說一個(gè)類的對(duì)象在和其他他類建立關(guān)系時(shí),要做到即可以與外界聯(lián)系,又能夠保護(hù)自己的隱私。這主要是通過控制屬性的私有性,但提供對(duì)外統(tǒng)一的訪問屬性的方法(set、get)來實(shí)現(xiàn)。如果要控制屬性只讀,或者是可讀可寫就變得很容易,實(shí)現(xiàn)針對(duì)不同用戶的訪問需求,例如下列中屬性n為可讀可寫4 子類的問題的出現(xiàn)

當(dāng)對(duì)父類屬性的訪問控制為private后,原來定義的ExampleChild就會(huì)有問題5 總結(jié)

在學(xué)習(xí)面向?qū)ο髸r(shí)應(yīng)該不推翻、不放棄原來的面向過程,因?yàn)槊嫦驅(qū)ο箢愔械姆椒▽?shí)現(xiàn)時(shí)還是一個(gè)函數(shù)或過程的設(shè)計(jì)。不能將過程式與對(duì)象式對(duì)立起來,應(yīng)該理解成在面向過程的基礎(chǔ)上又增加了一些新的手段,從而形成了面向?qū)ο蟮募夹g(shù),這樣一來,程序設(shè)計(jì)的學(xué)習(xí)是一個(gè)逐步遞進(jìn)的過程。可以看出面向?qū)ο笥辛烁嗟能浖O(shè)計(jì)和實(shí)現(xiàn)的手段,以類為單位,各個(gè)類可以獨(dú)立存在,這在軟件的可復(fù)用性、可維護(hù)性方面得到了很大的提升。能夠完成面向過程函數(shù)到面向?qū)ο箢惖钠交^渡,當(dāng)系統(tǒng)復(fù)雜時(shí),多個(gè)類之間按照關(guān)聯(lián)、依賴、繼承、實(shí)現(xiàn)的關(guān)系組織起來,就完全過渡到了面向?qū)ο蟆?/p>

實(shí)踐證明這種滲透式的教學(xué)方法對(duì)于掌握面向過程編程方式后,迅速掌握面向?qū)ο蟮脑O(shè)計(jì)理念和技術(shù),建立面向?qū)ο蟮乃季S方式起到了非常重要的作用。面向?qū)ο罂梢韵蛎嫦蜻^程滲透,面向過程也可以向面向?qū)ο筮^渡,使得兩者不對(duì)立,但可以同一。當(dāng)然,如果要采用面向?qū)ο蟮姆绞骄幊蹋蛻?yīng)該盡快走過這種過渡期。過渡期之后再解決問題時(shí),還是要直接用面向?qū)ο蟮乃季S方式,以抽象、封裝、繼承、多態(tài)技術(shù)為出發(fā)點(diǎn)來進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。

參考文獻(xiàn):

[1] 譚浩強(qiáng).C程序設(shè)計(jì)語言[M].北京:清華大學(xué)出版社,2009.

[2] 劉慧寧.Java程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2011.

[3] 耿祥義.Java2實(shí)用教程[M].北京:清華大學(xué)出版社,2012.endprint

摘要:面向過程模塊化的理念是基于復(fù)雜程序設(shè)計(jì)的,面向?qū)ο缶幊桃彩菓?yīng)用于復(fù)雜軟件的開發(fā)設(shè)計(jì)與維護(hù),它們的出發(fā)點(diǎn)是一致的。基于面向過程模塊化后的函數(shù)設(shè)計(jì)的思路,再借助抽象、封裝、繼承、多態(tài)技術(shù)的滲透及面向?qū)ο笳Z言的支持,形成面向?qū)ο罂梢韵蛎嫦蜻^程滲透,面向過程也可以向面向?qū)ο筮^渡的教學(xué)模式。

關(guān)鍵詞:模塊化;函數(shù);類;面向?qū)ο?/p>

中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)11-2584-04

Abstract: The idea of the modularity in process-oriented is based on complex programming, object-oriented programming is also used in the development and maintenance of complex software designs, their starting point is the same. by the process-oriented modular design idea based on function, and then by means of technology penetration of abstraction, encapsulation, inheritance, polymorphism and the supports of object-oriented language. Formation the object-oriented form can penetrate to the process-oriented, the process-oriented can also transition to object-oriented teaching pattern.

Key words: modularity;function;class;object-oriented

1 過程式模塊理念的建立

C語言做為計(jì)算專業(yè)高級(jí)語言的入門課程,它的面向過程的程序設(shè)計(jì)方法對(duì)學(xué)生的影響深刻,在教學(xué)過程中充分感受到如果放棄過程式的思路,重新建立對(duì)象式的思路,學(xué)生在思維方式的轉(zhuǎn)變上的困難。不推翻、不放棄原來的過程式思維,尋求一種在此基礎(chǔ)上進(jìn)行知識(shí)遞進(jìn)、技術(shù)擴(kuò)充,從而平穩(wěn)過渡到對(duì)象式編程是一種好的解決方案。

面向過程的程序設(shè)計(jì)主要是設(shè)計(jì)函數(shù)或過程,順序、條件、選擇三種控制結(jié)構(gòu)的學(xué)習(xí)比較容易,在學(xué)習(xí)C語言時(shí),給出一個(gè)程序設(shè)計(jì)問題,比如說求1+2+3+…。+n,在教學(xué)過程中每當(dāng)提到類似問題,學(xué)生最初想到的就是設(shè)計(jì)主方法來完成任務(wù),理由是方便設(shè)計(jì)、簡(jiǎn)單久而久之,學(xué)生就養(yǎng)成了習(xí)慣于只用主函數(shù)來完成程序設(shè)計(jì)任務(wù)。和現(xiàn)實(shí)生活做類比,就相當(dāng)于在現(xiàn)實(shí)生活中解決問題不會(huì)尋求他人的幫助,一切事物都必須親力親為,這不但做不好,而且效率不高??梢?,必須第一步強(qiáng)化過程式模塊設(shè)計(jì)的理念。

要學(xué)好面向?qū)ο蟮木幊淌紫纫龑?dǎo)學(xué)生養(yǎng)成解決問題時(shí)進(jìn)行分析研究,劃分出不同的功能塊,尋求擅長(zhǎng)解決不同問題的人的幫助,共同完成任務(wù)。由此得到,在程序設(shè)計(jì)過程中也應(yīng)該如此,把程序分成若干模塊,每個(gè)模塊用來實(shí)現(xiàn)一個(gè)特定的功能,再重新思考在C語言程序設(shè)計(jì)中用主函數(shù)之外的函數(shù)或過程的理由,加強(qiáng)C語言用函數(shù)或過程的方式來思考和解決問題,由主函數(shù)統(tǒng)一部署不同的函數(shù),函數(shù)間也可以互相調(diào)用,同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用任意多次,利用函數(shù),減少重復(fù)編寫程序段的工作量等等,這些在學(xué)習(xí)C語言時(shí)所強(qiáng)調(diào)的問題的理解。如同在現(xiàn)實(shí)生活中所具有的合理分工,團(tuán)結(jié)協(xié)作的做事理念和風(fēng)格。有了這種風(fēng)格和理念,在面向過程程序設(shè)計(jì)時(shí)應(yīng)該首先想到尋找他人的幫助,也就是函數(shù)過程的設(shè)計(jì),而不是主函數(shù)的凡事親力親為這個(gè)模塊化理念是基礎(chǔ),就是要學(xué)會(huì)將原來只有一個(gè)主函數(shù)的程序轉(zhuǎn)換成主函數(shù)對(duì)其他函數(shù)的調(diào)用,設(shè)計(jì)的關(guān)鍵是設(shè)計(jì)主函數(shù)之外的其他功能函數(shù)。

2 函數(shù)到類的過渡

面向?qū)ο蠹夹g(shù)的產(chǎn)生主要應(yīng)用于復(fù)雜軟件的開發(fā)設(shè)計(jì),因此首先必須有面向過程模塊化的理念,因?yàn)檫@一理念也是基于復(fù)雜程序設(shè)計(jì)的,所以它們的出發(fā)點(diǎn)是一致的。面向過程的三種控制結(jié)構(gòu):順序、條件、循環(huán),解決了模塊化后的函數(shù)設(shè)計(jì)問題。而面向?qū)ο缶哂谐橄笮?、封裝性、繼承性、多態(tài)性的特點(diǎn),反過來說,就是利用抽象、封裝、繼承、多態(tài)技術(shù)加上面向?qū)ο笳Z言的支持,設(shè)計(jì)出面向?qū)ο蟮某绦?。Java是一種純的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,C語言到Java語言的使用來體現(xiàn)過程式到對(duì)象式的平滑過渡,也可以說對(duì)象式技術(shù)向過程式的滲透。

2.1 抽象封裝的滲透

面向?qū)ο笾校灶悶榛镜某绦蛟O(shè)計(jì)單位,程序由一個(gè)或多個(gè)類來構(gòu)成,類的形成的就是由抽象技術(shù)產(chǎn)生的,類中有屬性、有方法。方法就是在原來C語言的模塊化理念的基礎(chǔ)上函數(shù),只不過在面向?qū)ο笾泻瘮?shù)(方法)必須要存在于一個(gè)類中的,也就是說要為方法找到一個(gè)“家”,一個(gè)歸宿。抽象技術(shù)還允許在類中增加屬性,封裝技術(shù)是指類中的屬性和方法是不可分割的整體,屬性實(shí)際上就是用來提供給方法操作的數(shù)據(jù)。如果一個(gè)類中沒有屬性,方法的初始操作數(shù)據(jù)可以由自身的參數(shù)中來獲取,如果類中有屬性2.2 多態(tài)——重載的滲透

抽象封裝的技術(shù)的使用,屬性的增加,方法的操作數(shù)據(jù)可以由類中的屬性獲取。多態(tài)的重載是指類中出現(xiàn)方法重名的現(xiàn)象,就是一個(gè)類中具有同名的方法,參數(shù)不同的情況,由于操作數(shù)據(jù)來源由一個(gè)變成了兩個(gè),就可以形成重載的情況,這樣可以提高程序的抽象程度和簡(jiǎn)潔程度。

2.3 繼承與多態(tài)——覆蓋的滲透

當(dāng)一個(gè)類需要另一個(gè)類的所有數(shù)據(jù)和方法時(shí),就可以使用繼承,繼承體現(xiàn)了兩個(gè)類之間的一種關(guān)系,提高軟件的可重用性;當(dāng)父類的方法在子類中重新獲得了定義,方法名,參數(shù)、返回值都不變時(shí),子類就覆蓋了父類的方法,這也是一種多態(tài),同時(shí)子類還可以增加新的功能。

3 封裝的另一面

屬性和方法有機(jī)地結(jié)合在一起,使得類中的方法可以對(duì)其屬性操作,這只是封裝特性對(duì)內(nèi)的一面。另一方面是對(duì)外的一面,也就是說一個(gè)類的對(duì)象在和其他他類建立關(guān)系時(shí),要做到即可以與外界聯(lián)系,又能夠保護(hù)自己的隱私。這主要是通過控制屬性的私有性,但提供對(duì)外統(tǒng)一的訪問屬性的方法(set、get)來實(shí)現(xiàn)。如果要控制屬性只讀,或者是可讀可寫就變得很容易,實(shí)現(xiàn)針對(duì)不同用戶的訪問需求,例如下列中屬性n為可讀可寫4 子類的問題的出現(xiàn)

當(dāng)對(duì)父類屬性的訪問控制為private后,原來定義的ExampleChild就會(huì)有問題5 總結(jié)

在學(xué)習(xí)面向?qū)ο髸r(shí)應(yīng)該不推翻、不放棄原來的面向過程,因?yàn)槊嫦驅(qū)ο箢愔械姆椒▽?shí)現(xiàn)時(shí)還是一個(gè)函數(shù)或過程的設(shè)計(jì)。不能將過程式與對(duì)象式對(duì)立起來,應(yīng)該理解成在面向過程的基礎(chǔ)上又增加了一些新的手段,從而形成了面向?qū)ο蟮募夹g(shù),這樣一來,程序設(shè)計(jì)的學(xué)習(xí)是一個(gè)逐步遞進(jìn)的過程??梢钥闯雒嫦?qū)ο笥辛烁嗟能浖O(shè)計(jì)和實(shí)現(xiàn)的手段,以類為單位,各個(gè)類可以獨(dú)立存在,這在軟件的可復(fù)用性、可維護(hù)性方面得到了很大的提升。能夠完成面向過程函數(shù)到面向?qū)ο箢惖钠交^渡,當(dāng)系統(tǒng)復(fù)雜時(shí),多個(gè)類之間按照關(guān)聯(lián)、依賴、繼承、實(shí)現(xiàn)的關(guān)系組織起來,就完全過渡到了面向?qū)ο蟆?/p>

實(shí)踐證明這種滲透式的教學(xué)方法對(duì)于掌握面向過程編程方式后,迅速掌握面向?qū)ο蟮脑O(shè)計(jì)理念和技術(shù),建立面向?qū)ο蟮乃季S方式起到了非常重要的作用。面向?qū)ο罂梢韵蛎嫦蜻^程滲透,面向過程也可以向面向?qū)ο筮^渡,使得兩者不對(duì)立,但可以同一。當(dāng)然,如果要采用面向?qū)ο蟮姆绞骄幊蹋蛻?yīng)該盡快走過這種過渡期。過渡期之后再解決問題時(shí),還是要直接用面向?qū)ο蟮乃季S方式,以抽象、封裝、繼承、多態(tài)技術(shù)為出發(fā)點(diǎn)來進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)。

參考文獻(xiàn):

[1] 譚浩強(qiáng).C程序設(shè)計(jì)語言[M].北京:清華大學(xué)出版社,2009.

[2] 劉慧寧.Java程序設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2011.

[3] 耿祥義.Java2實(shí)用教程[M].北京:清華大學(xué)出版社,2012.endprint

猜你喜歡
面向?qū)ο?/a>模塊化函數(shù)
模塊化自主水下機(jī)器人開發(fā)與應(yīng)用
二次函數(shù)
第3講 “函數(shù)”復(fù)習(xí)精講
二次函數(shù)
函數(shù)備考精講
模塊化住宅
面向?qū)ο蟮挠?jì)算機(jī)網(wǎng)絡(luò)設(shè)計(jì)軟件系統(tǒng)的開發(fā)
面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議研究與應(yīng)用
ACP100模塊化小型堆研發(fā)進(jìn)展
模塊化VS大型工廠
石狮市| 广水市| 巩留县| 涿鹿县| 高安市| 连城县| 富裕县| 剑川县| 洛南县| 平南县| 望江县| 冷水江市| 普洱| 嘉定区| 临桂县| 定边县| 秀山| 怀安县| 庄河市| 林西县| 新疆| 昭苏县| 辛集市| 万州区| 贵州省| 田东县| 大庆市| 印江| 福州市| 唐海县| 临颍县| 天镇县| 茂名市| 新乐市| 新干县| 谢通门县| 揭东县| 洛川县| 浮山县| 邢台市| 东丽区|