999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

培養軟件工程思想的面向對象程序設計課程改革與實踐

2018-08-22 10:26:52譚火彬林廣艷
計算機教育 2018年8期
關鍵詞:思想語言課程

譚火彬,林廣艷

(北京航空航天大學 軟件學院,北京 100191)

0 前 言

程序設計課程是軟件工程專業低年級本科生的專業基礎課程,傳統的程序設計課程教學更多地關注底層程序結構的設計和實現,側重于算法和數據結構的應用。學生學習時將重點放在各個知識點的語法學習和實踐上。因此很多同學在上完程序設計課程之后,更多只是掌握了語法,而不能在實踐項目中進行有效的應用。這樣的程序設計課程與實際軟件工程思想是完全脫節的。

面向對象的程序作為目前最主流的編程范型,其程序設計課程的教學更應該體現如何解決問題的工程化思想。課程教學重點不應該關注類、繼承等語法結構的編寫,而需要為學生建立面向對象的程序設計思想,更多地關注如何封裝為類、如何應用多態建立穩定的系統結構等。通過這種在低年級程序設計課程中就逐步灌輸軟件工程化思想,從而為后續的軟件工程相關課程奠定堅實的語言基礎。

1 課程內容設計

將程序設計課程的教學核心目標從讓學生掌握一門編程語言,轉變為培養學生利用程序設計語言解決實際工程問題的能力。為此,在課程內容設計時,面向對象的程序設計課程不再是簡單地圍繞語言自身的語法展開,而是以傳授面向對象的編程思想為主線,通過系統地學習面向對象的編程思想,從而掌握面向對象軟件工程理論和實踐,這也為后續軟件工程相關課程的教學奠定基礎[1]。經過多輪的課程調研和培養方案改革,最終制定的課程體系如圖1所示。

圖1 面向對象程序設計課程體系

作為一門面向對象程序設計課程,學生首先應該具備基本的程序設計知識。本門課程以C++作為授課語言,課程開設在本科一年級第二學期,學生在第一學期已經學習了C/C++結構化編程基礎知識,因此本學期以C++作為面向對象的編程語言是非常適合的[2],不需要額外地補充結構化編程知識。課程開篇的“認識對象”并不講授語言本身,而是介紹面向對象的編程思想,介紹什么是類、什么是對象,為什么要封裝類等基本的面向對象思想。這樣讓學生從第一學期程序設計課程中轉變過來,學生不再把這門課程作為結構化程序設計課程的延續,而是作為學習軟件工程思想的開始。

后面的主體內容就是系統地介紹面向對象編程的各個核心概念,包括類的封裝、繼承、多態和異常處理等主線概念和C++編程實現;而模板的內容作為另一種封裝方法,體現了泛型編程思想,可以根據學時的多少調整相應的內容。第8章以C++中流庫的使用為背景,介紹如何高效地使用C++類庫,從而極大地提高編程效率。第9章介紹一些圖形化編程的思想和實踐,對于C++而言,以QT或MFC圖形框架為例進行簡單的講解。通過這些內容的教學,學生基本上掌握了編寫一個軟件系統所應具備的編程能力和技巧,能獨立完成一個簡單的業務系統。當然,我們根據課程學時的情況,調整課程內容,如果課時足夠,模板、GUI編程內容可以適當增加,這些都是比較實用的編程技能。

2 項目式實踐體系設計

上機實踐是程序設計課程最重要的環節,程序一定要在實踐中掌握和應用。因此如何設計好實踐內容是確保完成教學目標的重要保障。在確保覆蓋課程知識點的同時如何充分體現工程化思想,讓學生在實踐中掌握面向對象編程思想,這是課程實踐體系改革所關注的重點。

以往的程序設計課程大多是按照每個知識點設計專門的編程練習,這可以有效地確保知識點的覆蓋,但面向對象的程序設計不僅僅是要掌握簡單的一個知識點,比如讓學生學會寫一個類,并使用類的對象,這個單一的知識點很好掌握。但更重要的是要讓學生理解為什么要封裝成為一個類,封裝這個類的好處是什么。封裝為類的目的是為了以后更方便的使用,并為后續的繼承和多態奠定基礎。為了達到這個目標,就必須讓學生在后續的實踐中繼續使用這個類,并基于這些類來搭建目標系統。因此整個實踐體系應該建立在一個完整的項目基礎之上,通過多次實踐完成一個大項目;每次實踐都是在上一次成果之上繼續封裝和擴展,最終形成一個有一定功能的軟件項目。通過這樣系統化的項目式實踐,從而讓學生充分理解軟件工程思想,達成教學目標[3,4]。

整個課程上機實踐過程由易到難,穿插在課程教學過程中,配合課程知識點,圍繞一個完整的項目,設計了多個上機實踐內容,并最終構建出目標項目。在這個過程中,每次實踐都是以前一次實踐內容為基礎,讓學生充分理解面向對象程序設計中的各類原理和機制的應用。具體的課程案例會根據使用情況定期進行更新。

以下以近幾個學年實踐課程使用的學生選課系統為例,說明具體的實踐內容安排。這個項目本身背景與學生緊密相關,對于低年級本科生來說難度合適,也不需要太多的業務知識。圖2給出了體現系統最終結構的類圖(只包含了一些重要的屬性和方法),圖中共涉及的7個類,通過8次上機實驗課程完成。具體的實踐內容如下。

(1)運用類封裝機制,設計并實現日期類(Date),包括判斷閏年、求下一天等功能實現;

(2)使用類對象,封裝新的學生類(Student),并復用日期類作為學生的生日(birthDate);

(3)封裝課程類(Course),實現基本的學生選課功能,同時為已完成的三個類實現運算符重載;

(4)運用類的繼承,為課程類添加必修課(Obligatory Course)和選修課(Elective Course)兩個子類,實現學生選必修課和選修課的功能;

(5)運用多態機制,完成學生選課、登記課程成績、查詢課程成績等功能;

(6)為選課系統添加異常處理機制(MyException);

(7)運用流技術,將學生選課信息、成績信息等存儲到文件;

(8)封裝界面類(Console),實現基本的用戶交互過程;可進一步結合圖形界面技術,實現復雜的圖形界面。

通過一個學期的課程學習和實踐,每個學生都可以自主完成這樣一個有一定規模的學生選課系統,這對學生來說就是軟件開發的第一次實踐經歷。很多學生在大四的求職簡歷上寫的自己完成的第一個軟件項目就是本課程的實踐內容,這也是對整個課程實踐內容的認可。

圖2 面向對象程序設計實踐系統設計方案

3 方案實施和效果分析

筆者自2004年開始,就為北京航空航天大學軟件學院本科一年級學生講授C++程序設計方面的課程,課程名稱從最早的“C++程序設計”,到后來的“高級語言程序設計(2)”,再到目前正式命名的“面向對象的程序設計”;經過多年的課程建設,課程體系和內容不斷改進和完善,并最終形成了現有的課程框架、主體內容和實踐體系。在多年的教學實踐中,課程內容和教學效果也得到了學生們的廣泛認可。為了客觀地評價目前課程改革的實際教學效果,自2014年開始,我們在每學期授課結束后均開展了完全匿名的教學效果問卷調查,整個問卷調查內容分為4個部分,共計14個問題,下面詳細介紹2014—2016這3年的調查結果。

3.1 面向對象概念的理解情況

首先是對面向對象概念的總體理解,包括兩個問題,調查結果如表1所示。調查表涉及3年的數據,調查對象全部為上課的學生,其中2014年81人參與調查,2015年80人,2016年71人,3年總計232人參與調查(下同)。表中詳細給出了各個問題選項的人數和百分比,并計算了3年的總體百分比情況。

從表中可以看出,有將近一半(42.67%)的學生表示完全理解了面向對象的編程思想,基本理解的學生占53.88%。這表明通過課程學習,絕大部分學生(96.55%)都能夠順利掌握面向對象的編程思想。而在對面向對象封裝、繼承和多態這三個最核心概念的理解上,有一半的學生(52.59%)選擇了封裝,這是面向對象里最基礎也是最重要的一個概念,學生的選擇結果也符合預期。

3.2 核心知識點掌握情況

問卷調查的第2部分是針對面向對象各個具體知識點的調查,包括6個問題,調查結果如表2所示。包括封裝、繼承、多態、模板和異常處理5個核心知識點,以及對“封裝”這個最基礎知識點的進一步調查問題。

從表2中可以看出,超過90%的學生至少基本理解了各個知識點(不理解比例少于10%)。而相對來說,模板這個知識點掌握程度不是很好,有13.79%的學生表示沒有理解C++中的模板,這也是在預料之中,由于課時緊張,模板只有3個學時,而且沒有安排單獨的實踐學時,在課程教學大綱設計時,此部分內容只作為介紹性的章節,不作深入要求。

表1 面向對象概念的總體理解情況

表2 面向對象各知識點的掌握情況

3.3 上機實踐方式和效果

第3部分是針對上機實踐方式和效果的調查,包括3個問題,從實踐難度、遞增式實踐方式和教學效果這3個方面展開。調查結果如表3所示。

從表3中可以看出,首先從難度上來說學生們普遍認可題目的難度,實踐題目設計符合當前的學生水平。而對于這種遞增式實踐方式,得到了絕大部分學生(96.55%)的認可。從實踐效果來說,在全部調查對象中,只有1個學生不認可這種遞增式的項目實踐方式有助于加深理解面向對象編程思想,近90%的學生認為有很大的幫助。

3.4 程序設計語言應用情況

最后一部分是針對C++語言和其他語言應用情況調查,這部分是延伸的調查,主要是了解學生對于編程語言的學習情況和后續計劃,對后續的課程改革有借鑒意義。調查結果如表4所示。需要注意的是,最后兩個問題是多選題,給學生提供了多個選項,學生可以根據自己的情況選擇多項,表4中只給出了學生選擇最多的4個語言的情況。

表3 上機實踐方式和效果

表4 C++和其他程序設計語言應用情況

從表4中可以看出,大部分學生(78.45%)還是比較認可C++語言,并表示會繼續學習和使用該語言;而對于其他語言,被學生廣泛認可的語言包括Java、C#、Python和JavaScript,其中Java語言是認可度最高的,這也符合目前編程語言的實際使用情況。

3.5 文字意見和建議

除了標準的問卷調查內容外,部分學生在問卷的最后對課程的教學效果給出了高度評價,一些比較有針對性的評價如下:①OOP的好用之處、具體的設計,還是得通過一段時間的編程才能感受到,在我們都這么菜的情況下,老師的教學實在是相當棒了!②這門課讓我對C++從上學期的排斥漸漸對它感興趣,喜歡上了編程。③課講授得很好,讓我對面向對象編程有了一個較好的理解,對于我學習Java非常有幫助。

當然,也有個別學生提出了一些改進的建議,這些都為以后的課程內容改革提供了思路:①希望加強設計的程序豐富度,提高各種功能種類,或者提供其他工程的設計思路作為額外作業。②可以設計一項大作業,期末提交,代替筆試的最后一道題,我認為這樣更有利于大家從整體上對程序的設計和編寫有一個好的思考和理解。

4 結 語

程序設計語言是軟件工程師必備的基本技能,只有有效地掌握編程技能和所體現的編程思維,才能更好地理解軟件工程。為此,拋棄傳統低年級程序設計課程側重于語法教學,而將重點轉向傳授和灌輸面向對象編程思想,讓學生盡早接觸和理解軟件工程,在大一就能夠通過一門程序設計課程完成一個相對完整的項目實踐,從而為學生以后的軟件工程專業課程學習和實踐奠定了堅實的基礎。

教學效果的好壞,最直接的評價來自于學生的認可,通過多輪的匿名問卷調查收集到學生真實的評價信息,評價結果有效地說明課程改革方案和實踐體系得到了學生普遍認可,達到了預期的效果。

猜你喜歡
思想語言課程
思想之光照耀奮進之路
華人時刊(2022年7期)2022-06-05 07:33:26
思想與“劍”
當代陜西(2021年13期)2021-08-06 09:24:34
數字圖像處理課程混合式教學改革與探索
軟件設計與開發實踐課程探索與實踐
計算機教育(2020年5期)2020-07-24 08:53:38
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
為什么要學習HAA課程?
艱苦奮斗、勤儉節約的思想永遠不能丟
人大建設(2019年4期)2019-07-13 05:43:08
“思想是什么”
當代陜西(2019年12期)2019-07-12 09:11:50
讓語言描寫搖曳多姿
累積動態分析下的同聲傳譯語言壓縮
主站蜘蛛池模板: 欧美国产在线一区| 成人永久免费A∨一级在线播放| 99re在线免费视频| 91在线播放国产| 亚洲第一福利视频导航| 巨熟乳波霸若妻中文观看免费| 91福利在线观看视频| 婷婷六月综合| 国产一级一级毛片永久| 四虎影视库国产精品一区| 久久国产精品无码hdav| 国产成人精品无码一区二| 亚洲中文无码av永久伊人| 国产日韩精品一区在线不卡 | 亚洲无码精品在线播放| 国产麻豆aⅴ精品无码| 免费一级毛片在线播放傲雪网| 亚洲品质国产精品无码| 国产91丝袜| 久久久久亚洲AV成人人电影软件| 天天综合网亚洲网站| 日本不卡在线视频| 国产精品七七在线播放| 四虎永久免费在线| 亚洲精品欧美日本中文字幕| 婷婷综合缴情亚洲五月伊| 欧美影院久久| 国产精品护士| 欧美视频免费一区二区三区 | 亚洲第一成网站| 免费高清毛片| 国产高颜值露脸在线观看| 久热re国产手机在线观看| 91亚洲精品国产自在现线| 欧美自慰一级看片免费| 午夜限制老子影院888| 国产特级毛片| 最新亚洲人成无码网站欣赏网 | 91www在线观看| 国产在线观看一区精品| 久久美女精品国产精品亚洲| 国产成熟女人性满足视频| 亚洲福利一区二区三区| 高清国产在线| 精品免费在线视频| 午夜视频日本| 亚洲国产精品不卡在线| julia中文字幕久久亚洲| 中文字幕调教一区二区视频| 99视频在线观看免费| 国产精品专区第1页| 久久不卡精品| 少妇露出福利视频| 日本道综合一本久久久88| 青青草欧美| 精品中文字幕一区在线| 国产成人精品优优av| 成人午夜久久| 香蕉eeww99国产在线观看| 亚洲国产欧洲精品路线久久| 亚洲日韩高清无码| 日韩欧美91| 呦视频在线一区二区三区| 一本无码在线观看| 日韩一区二区三免费高清 | 国产精品综合久久久| 国产免费网址| 国产剧情一区二区| 亚洲欧洲日产国码无码av喷潮| 亚洲AV人人澡人人双人| 久久久波多野结衣av一区二区| 伊人蕉久影院| 一级毛片免费不卡在线| 91色在线观看| 亚洲va欧美va国产综合下载| 中国一级特黄视频| 国产资源站| 欧美精品一二三区| 97人人做人人爽香蕉精品| 国产日韩AV高潮在线| 国产激情无码一区二区APP| 欧美午夜一区|