鐘原 劉忠慧



摘? 要:針對計算機專業基礎核心課程《面向對象程序設計》的教學過程中,學生普遍存在從面向過程的程序設計思維方式向面向對象的思維方式轉變的困難,本文結合理論與實踐教學環節,提出一種以“面向對象程序設計思維”為導向,以CDIO理念為基礎的互動教學模式,通過構建“案例+項目”式的教學內容,實施層次化、階段性、遞進式的教學過程,使學生逐步理解并掌握了面向對象的思維方式,取得了較好的教學效果。
關鍵詞:面向對象思維;案例+項目驅動;互動式教學;實踐教學體系
中圖分類號:TP399? ? ?文獻標識碼:A
Teaching Research and Practice of Object-Oriented Programming
Thinking Based on CDIO
ZHONG Yuan,LIU Zhonghui
(College of Computer Science,Southwest Petroleum University,Chendu 610500,China)
Abstract:In view of the difficulty of changing from the process-oriented thinking to the object-oriented thinking that the students majoring in computer science have in the teaching process of the basic course Object-Oriented Programming Design,by combining theory with practice,this paper proposes an interactive teaching mode based on CDIO concept and guided by Object-Oriented Programming thinking.By constructing the teaching content of Case + Project,the teaching process has become hierarchical,phased and progressive so that students can gradually understand and master the object-oriented programming thinking,which has achieved good teaching results.
Keywords:object-oriented thinking;Case+Project driven;interactive teaching;practical teaching system
1? ?引言(Introduction)
根據計算機專業的人才培養方案,《面向對象程序設計》是計算機專業的一門專業核心課程,在程序設計思維培養和編碼能力訓練中具有極其重要的位置。該課程開設在《C語言程序設計》之后,共有64學時(理論40,實驗24),課程大綱涵蓋了基礎語法,重點要求掌握面向對象的特性:封裝、繼承、多態等知識模塊。課程內容的理論性較強,如以知識點的講解為主,學生無法深刻理解面向對象(Object Oriented,OO)的思維模式,導致其程序設計思維方式依然停留在面向過程(Procedure Oriented,PO)中。本研究在CDIO[1-3](Conceive-構思、Design-設計、Implement-實現和Operate-運作)理念指導下,改變以往從孤立知識點出發,強灌式的理論課堂模式[4],提出以面向對象設計思維為導向的教學過程,將理論和實踐教學緊密結合,運用“案例+項目”的互動教學模式,不斷引導學生從面向過程的思維過渡到面向對象的思維,從而更全面掌握面向對象程序設計的方法,激發創新型思維,培養具有自主創新和創造的計算機專業人才。
2? ?面向對象思維方式(Object-oriented thinking)
《面向對象程序設計》課程以Java語言作為講授對象,傳授面向對象的概念特性,其中重要的教學目標是掌握面向對象的編程方法,引導學生從面向過程思維方式轉向面向對象的思維方式。但是,面向對象與前序課程學習的面向過程的程序思維方式有著截然不同的邏輯,如圖1所示。要轉變已形成的定向思維模式必然面臨較大的挑戰。
圖1 面向過程與面向對象
Fig.1 Process-oriented and object-oriented
面向過程強調解決問題所需要的步驟,并通過調用函數(過程)將步驟逐一實現;而面向對象則把構成問題的事物分解成各個對象,使用對象封裝事物的屬性,并通過調用對象的方法來解決問題。因此面向對象思維方式轉換的關鍵在于建立“一切皆對象”的思維模式[5],將面向對象思維中的三個重要特性:封裝,繼承和多態貫穿于整個教學活動中。因此,在理論和實踐教學過程中,教學內容,教學方法,教學過程都應以面向對象思維為導向[6],摸索學生的認知規律,激發學生興趣,引導學生去思考、去設計、去實現、去應用,從而掌握這種程序設計思想和方法。
3? 以面向對象為導向的理論教學改革(Object-oriented theory teaching reform)
3.1? ?建立“案例式”的課程教學內容
根據課程教學目標和內容要求,梳理教學內容,主要包括以下兩個方面:(1)提煉面向對象程序設計的理論模塊:①語言概述+開發環境(JDK、Eclipse);②基礎語法(數據類型、控制流程、數組等)和基礎算法(最值、排序等);③面向對象語法特性(類、對象、繼承、抽象、接口、多態、異常等)以及延伸的;④開發平臺功能(網絡、圖形)等模塊。(2)制作案例式的教學內容:針對不同理論模塊以及相關知識點設計案例,編寫代碼,制作演示文稿。重點針對面向對象的特性,設計與面向過程的對比案例,形成對比的設計思路,并進行代碼級的比較。將面向過程的設計方法與面向對象的設計方法進行多維度的比較,從而引導學生轉變設計思維。
如案例A:編寫一個計算三角形面積的程序,分別用C語言和Java語言實現。首先要求學生以C語言的函數方式計算面積,并通過函數調用實現程序,如圖2所示;再引導學生設計三角形類,并通過對象調用方法實現程序功能,如圖3所示。在此過程中,學生會潛移默化的對比兩種思維方式的差異,從而掌握面向對象中類的封裝功能,理解對象的含義,并學會應用對象調用方法實現功能。
圖2 面向過程方式
Fig.2 Process-oriented approach
圖3 面向對象方式
Fig.3 Object-oriented approach
3.2? ?基于CDIO的“互動式”教學方法
教學過程中改變傳統課堂授課方式,開展基于CDIO(Conceive-構思、Design-設計、Implement-實現和Operate-運作)的互動式教學方法,通過“提出問題/需求引導學生討論→設計→編碼→演示”的五大環節,將理論與實踐進行交叉,使學生在做中完成知識理論學習[5],提高學習興趣,激發學生自主學習潛能。
(1)提出問題:某公司有若干雇員,需設計程序進行員工信息的管理,思考如何表示員工的信息,并實現對于員工信息的操作。
(2)引導討論:分析員工的靜態屬性,如:name,sex,age,
salary,hireDay;分析員工行為,如:getName(),setName(),
getHireDay(),setHireDay(),raiseSalary(),…引導學生進行小組討論。
(3)進行設計:引導學生利用UML進行類的設計,如圖4所示,理解屬性和方法的含義。
圖4 雇員UML類圖
Fig.4 Employee UML class graphic
(4)編碼與演示:課堂上設計編碼與演示的實踐環節,充分與學生進行互動,老師演示編碼與學生編碼演示交叉進行,同時提升學生的動手實踐能力。如首先創建員工類,再通過類實例化對象,最后通過對象調用方法實現案例要求的功能。
3.3? ?實施層次化、階段性、遞進性的教學過程
針對不同的模塊實施教學過程管理,主要包含兩個層次:①對于基礎語法模塊采用“點+線”的教學過程:“點”即零碎的知識點,如數據類型(整形、浮點型)、運算符(關系運算符、邏輯運算符)等;“線”即由知識點串起的基礎語法。②對于面向對象特性模塊采用“面+塊”的教學過程:“面”即面向對象的特征語法,如類和對象;由“面”可以組合成“塊”,如“類+對象”表示面向對象中的封裝思想,“父類+子類”表示繼承特性,“抽象+接口”表達多態特性。通過層次化、階段性、遞進性的教學過程,逐步加深學生理解,從而構建面向對象程序設計的思維方式。
4? 以面向對象為導向的實踐教學改革(Object-oriented practical teaching reform)
CDIO理念的核心是在“做—中—學”,將實踐貫穿到面向對象的思維訓練中,不斷訓練學生的動手實踐能力[7]。本項目提出“3+1”層次實踐體系,如圖5所示。3代表按照“分級遞進、逐步提高、綜合運用”的基本思路設計的三個實踐階段,1代表一個實踐教學資源庫。
圖5 實踐教學體系
Fig.5 Practical teaching system
(1)面向對象特性實踐教學:在課堂環節融入面向對象特性的驗證與體驗的實踐環節,引導學生思考與對比兩種不同的編程思路,通過即時的動手實踐消化知識點。
(2)案例式實驗教學:在實驗環節中,設計“案例式”的實驗內容,引導學生進一步驗證理論知識點,通過分析、設計和編碼,將面向對象的特性融入設計中,融會貫通。
(3)項目式實戰教學:在綜合性實驗中,以實戰項目的方式進行分組管理、跟蹤和驗收。以用戶需求為導向,分組進行完整的項目開發流程。在實戰訓練中,引導學生主動思考、以面向對象的程序設計模式進行項目設計、編碼、測試和發布,不斷激發其創新和創造的能力。
(4)建立實踐教學資源庫:包含三個實踐環節所需要的示例、案例、項目資源。其中包含三條線索:①以面向對象的特性為線索建設示例分析和對應代碼;②以特定功能為線索建設案例庫,綜合面向對象的多個特性;③以特定用戶需求為線索建立項目庫,包含項目的需求分析、功能設計、代碼等資源。
5? 教學改革成果分析(Analysis of teaching reform achievements)
通過以上教學改革的研究和實踐,目前取得了一定的成果。課題組按知識模塊構建了實踐教學資源庫,圍繞案例制作了教學課件,充分融合到互動式教學方式和漸進式過程中;并基于網絡構建了實驗平臺,學生可以針對案例進行有效練習,及時獲得練習成績。以本校網絡工程專業2016級,2017級為例,教學評價良好,以面向對象思維為導向的教學內容以及“案例+項目”的互動教學方式得到了學生的積極反饋與肯定。
6? ?結論(Conclusion)
通過以面向對象思維為導向進行教學組織,使學生通過案例方式理清基礎概念,逐漸理解了面向對象的思維方式;并在案例加項目訓練的動手實踐的過程中,深入體會面向對象的設計理念,逐步掌握面向對象的程序設計方法。對計算機專業的學生繼續學習后續課程打下良好的理論基礎和實踐基礎具有深遠的影響。為了更好跟蹤教學效果和進行教學質量監督,下一步將更充分利用網絡教學平臺,通過對教學平臺和考試系統的數據分析,在教學過程中分析學生的實際情況,了解學生的學習狀態,通過優化案例,調整互動方式,以及加強考核校驗進一步提升教學質量。
參考文獻(References)
[1] 顧佩華,沈民奮,李升平,等.從CDIO到EIP-CDIO——汕頭大學工程教育與人才培養模式探索[J].高等工程教育研究,2008(1):12-20.
[2] 顧佩華,胡文龍,陸小華,等.從CDIO在中國到中國的CDIO:發展路徑、產生的影響及其原因研究[J].高等工程教育研究,2017(1):30-49.
[3] 李竹林,張根耀,王文發,等.基于CDIO的計算機專業課程教學改革與效果分析[J].計算機教育,2014(16):64-66.
[4] 姜大志,孫浩軍.基于CDIO的主動式項目驅動學習方法研究——以Java類課程教學改革為例[J].高等工程教育研究,2012(4):159-164.
[5] 朱立平,林志英.從面向過程到面向對象思維方式的教學引導[J].計算機教育,2014(5):59-63.
[6] 畢忠勤,周平.基于CDIO理念的面向對象分析與設計課程教學改革探索[J]. 計算機教育,2018(2):51-53.
[7] 姚敦紅.案例引導多項目實施的面向對象的分析與設計課程[J].計算機教育,2018(10):166-169.
作者簡介:
鐘? 原(1982-),女,碩士,講師.研究領域:機器學習,圖形圖像處理.
劉忠慧(1980-),女,碩士,副教授.研究領域:深度學習,人工智能.
基金項目:2018年四川省高等教育人才培養質量和教學改革項目“多學科融合的項目引導式雙創人才培養研究與實踐”(編號:JG2018-447);2018年西南石油大學本科課程教學改革研究項目“基于MSF模式的Java程序設計課程改革與實踐”(編號:X2018KZ029);2018年西南石油大學計算機科學學院教育教學改革研究項目“基于CDIO以面向對象程序設計思維為導向的教學研究與實踐”.