郭燕莎+郭燕妮
摘 要:在“Java程序設計”課程教學過程中,拓展和實踐了案例教學法。以熟悉的學生和不同形狀的特征(屬性)、行為(方法)作為連貫性案例引入面向對象新概念的理論教學和鞏固性練習中,讓學生在循序漸進掌握新理論的同時,達到知識間的融會貫通。整個課堂過程融教、學、練于一體,獲得了良好的教學效果。
關鍵詞關鍵詞:案例教學法;Java程序設計;面向對象;連貫性設計;任務驅動;對比分析
DOIDOI:10.11907/rjdk.161603
中圖分類號:G433
文獻標識碼:A 文章編號:1672-7800(2016)008-0192-03
0 引言
作為“技本”生源(技校特招學生,五年制本科)的計算機專業(yè)學生,雖在技校期間已學過C語言,但基礎并不扎實,且課堂理解力不強?!癑ava程序設計”是“技本”學生入學后接觸的一門面向對象語言,與C語言相比,新增了抽象的面向對象概念??v觀當前的Java語言教材,通常都是針對每個新概念先列出語法,再用小程序片段解釋每部分含義,雖淺顯易懂,但并不具有連續(xù)性,且忽略了新舊概念間的過渡與聯(lián)系。而且學生即使在課堂教學中理解了課程內(nèi)容,仍無法獨立完成解題任務[1]。
如何讓“技本”學生自然地從面向過程的編程思路過渡到面向對象的編程思維,不僅關系到對于本門課程的理解和掌握,而且將影響后續(xù)相關知識和技能的學習[2]?;诖?,筆者在“Java程序設計”課程的理論教學中,擴展性地應用和實踐了案例教學法,使學生在連貫性的案例教學中逐漸了解、熟悉和掌握面向對象編程的核心思想。
1 案例教學法
案例教學法指在教學過程中,根據(jù)教學目標,教師設計具體的情境或事件,引導學生進行思考、分析和討論,在解決問題的同時,進一步加深對理論知識的理解與掌握的一種教學方法。其實施過程包括3個基本環(huán)節(jié):①案例設計。學生熟悉的案例素材是課堂教學的關鍵,既便于理解,又有助于學生深入分析與進行信息挖掘;②教學過程設計與管理。不再是傳統(tǒng)的教師“滿堂灌”和學生“被動接受”,而是采用“以學生為主導”和“教師適當引導”的教學模式,鼓勵學生獨立思考、分析和解決問題,強調(diào)師生間的雙向交流與互動;③案例總結?;诎咐闹R點講授后,教師要有針對性地進行歸納總結,以延續(xù)當前案例并擴展到下一個知識點[3,4]。
當前,案例教學法是實踐性課程的教學方法之一,但教師在課堂教學中主要是根據(jù)教材提供的案例程序講授知識點[5,6],并未進行適當?shù)陌咐O計和拓展。雖相比于枯燥的純理論授課,案例程序有助于學生形象地理解相關定義和語法,但面對每個知識點的孤立程序片段,學生仍是見點(知識點)不見面(知識點間的聯(lián)系)。因此,筆者在“Java程序設計”課程的理論教學(以“類、對象、繼承、多態(tài)和抽象類”為例)中,搜集了學生熟悉的素材,精心設計了連貫性案例,并循序漸進地導入、講授和練習,使學生在掌握知識點的同時,也能理解知識點間的聯(lián)系。
2 案例教學法連貫性設計
(1)連貫性案例導入。
對于抽象的面向對象概念,熟悉的案例分析勝過單純的概念解釋,而漸進式的連貫性案例則強化了不同概念間的聯(lián)系。同時,在連貫性的例程中又分別采用前后一致的對比顏色來標注不同的類別成員,這些都有助于學生由淺入深、循序漸進地理解和掌握面向對象的編程思想。
(2)師生互動與啟發(fā)式的課堂教學。
課堂中,教師不再唱“獨角戲”,而是轉變?yōu)橐龑д?。教學過程如下:導入案例—分析特征和解決方案—討論結果和分析原因—總結過程并進行啟發(fā)—引出新概念—講授知識點—鞏固練習。盡可能地讓學生參與到每個環(huán)節(jié)中,一方面可充分調(diào)動學生積極性,另一方面也遵循了學生的認知規(guī)律。感性分析更有利于學生對知識點的理解和掌握。
(3)輔以任務驅動的連貫性練習。
根據(jù)德國心理學家艾賓浩斯提出的記憶遺忘曲線可知,剛學習完的東西可保存100%的記憶量,如不抓緊復習,一天之后只剩下25%的記憶量,故及時加以鞏固練習對于延緩遺忘至關重要。同時,結合“眼過千遍不如手動一遍”的原則,每個新概念講授后,要讓學生進行連貫性的鞏固練習。
整個教學過程以漸進式的連貫性案例為主線,將教、學、練融于一體。在教師的引導下,學生積極參與討論分析,進而自然地過渡到新概念學習;隨后,教師講授和總結知識點;最后,學生進行連貫性的案例練習以鞏固所學內(nèi)容。期間,將教師的“滿堂灌”講授轉換為師生共同分析討論,將學生的被動接受轉換為任務驅動下的主動思考和積極實踐[7,8]。
3 案例教學法應用
在教學過程中,分別以統(tǒng)計學生情況和求解不同形狀的面積與周長為例進行理論教學和鞏固練習,讓學生在潛移默化中學習新知識、掌握新技能。
3.1 理論教學
(1)類和對象
導入案例:統(tǒng)計一個班級中每個學生的姓名、年齡、性別、班級、學院、各科成績、總成績、最高分和最低分。
討論解決方案:每個學生必須調(diào)用已經(jīng)定義好的求解總成績、最高分和最低分的函數(shù),傳參之后進行計算(C語言的求解方式)。
分析結果:每個學生的特征(姓名、年齡、性別、班級、學院、科目)和行為(總成績、最高分和最低分)一樣,差別在于針對不同“行為”傳遞的參數(shù)不同,其計算結果也不同。
啟發(fā):既然“學生”具有相同的特征和行為,是否可以定義成一個“學生”模版?那每個具體的“學生”又將如何表示?
引出新概念——類和對象:類是一組具有相同特性(屬性)和相同行為(方法)事物的概括,對象則是每個存在的事物(如具體學生:張三)[9]。
講授知識點:類、屬性、方法和對象的定義與應用,并分別用不同顏色標注(紅色:類或對象名稱,綠色:屬性,藍色:方法)。對照表1,用相應顏色給出“學生”和“張三”的定義與測試語句。醒目一致的對比標識有助于學生分類理解和掌握。
(2)繼承
導入案例:“班委”作為班級的管理層“學生”,具有哪些特征和行為?這些特征和行為融合為“類”應該如何定義?
討論解決方案:班委的特征和行為包括姓名、年齡、性別、班級、學院、職務、各科成績、班委成績、總成績、最高分和最低分。
分析結果:“班委”與“學生”的大部分特征一致,只是“班委”增加了“職務”和“班委成績”,兩者的大部分行為也一致,只是在計算“總成績”時需加上“班委成績”。
啟發(fā):“班委”是否應根據(jù)這些特征和行為重新定義類呢?既然與“學生”類差別不大,是否可以引用“學生”類中定義的屬性和方法?
引出新概念——繼承:一種由已存在的類(“學生”——父類)創(chuàng)建一個或幾個子類(“班委”——子類)的機制[9]。
講授知識點:繼承的定義與實現(xiàn),通過不同顏色的類別標識對比性地講授“可利用(綠色未加粗的屬性和藍色未加粗的方法)”、“可添加(綠色加粗的屬性:sJ(職務),sC(班委成績))”和“可修改(藍色加粗的方法)”父類中定義的屬性和方法,如表1所示。
(3)多態(tài)
“多態(tài)”是面向對象編程技術中最為靈活的特性,體現(xiàn)在對象變量多態(tài)、多態(tài)方法和多態(tài)參數(shù)3個方面[9]。本次課的理論教學以“學生(父類)”、“班委(子類)”和“學院”(以“學生”和“班委”為參數(shù)新增類)為例進行導入、分析和講授。表2展示了具體過程。
(4)抽象類
導入案例:一個班的“學生”可分為“普通學生”和“班委”兩類,由“繼承”的學習可知,統(tǒng)計總成績時,“班委”相比于“學生”增加了“班委成績”,故定義“班委”類時重寫了父類“學生”中計算總成績的方法?,F(xiàn)需構建“學生(父類)”、“普通學生(子類)”和“班委(子類)”3個類,要求完成“普通學生”和“班委”的成績統(tǒng)計。
討論解決方案:按照“類”的定義語法構建這三個類,發(fā)現(xiàn)“學生”和“普通學生”類一樣,但“班委”相比于“普通學生”增加了“職務”和“班委成績”兩個屬性,且統(tǒng)計總成績的方式不同。
啟發(fā):既然“普通學生”和“班委”計算總成績的方式不同,那是否只需在這兩個子類中分別統(tǒng)計總成績,而在“學生”類中可省去具體計算方法?
引出新概念——抽象類:具有一個或多個抽象方法(只定義未實現(xiàn),子類繼承時根據(jù)實際情況實現(xiàn)該抽象方法)的類[9]。
講授知識點:抽象類的定義、子類的實現(xiàn)及應用。
3.2 鞏固練習
為了加深對面向對象新概念的理解和掌握,理論教學之后,以計算“不同形狀”的周長與面積為例,同樣設計了連貫性的題目,讓學生循序漸進地進行鞏固練習。圖1展示了具體過程。
4 結語
根據(jù)對“Java程序設計”課程的教學探索,筆者在面向對象新概念的理論教學中設計了連貫性案例,并以此為主線進行循序漸進地講授和鞏固性練習。此外,整個過程還融入了師生互動、啟發(fā)式教學、對比分析(不同顏色標注不同類別成員)和任務驅動等教學方法,在加深學生對新知識的理解和掌握的同時,也促進了新舊知識間的融會貫通。其中,學生熟悉的案例是課堂教學的首選,筆者在教學過程中以“學生”、計算“不同形狀”的周長與面積為例,將其遞增式地引入,這既遵循了學生“循序漸進、由淺入深、從感性到理性”的認知規(guī)律,又強化了學生對面向對象思想的理解和領悟,為后續(xù)實踐操作奠定了良好的理論基礎。
參考文獻:
[1] 尤垂桔,孫麗麗,惠苗.案例增量式教學法的程序設計課程教學探索[J].課程教育研究,2015(30):145-146.
[2] 趙曉峰.高職院校Java程序設計教學模式研究[J].軟件導刊,2007(1):114-115.
[3] 陳媛媛.案例教學法在教學中的運用[J].無錫南洋學院學報,2008,7(4):30-33.
[4] 賀桂嬌.淺談“案例”教學法在vb教學中的應用[J].科技經(jīng)濟市場,2006(9):221-222.
[5] 程建軍,陳曉云,馬志新.程序設計語言課程的增量式教學法改革與實踐[J].吉林大學學報:信息科學版,2005(23):36-40.
[6] 王剛.增量式教學在高職Java Me游戲設計課程中的實踐[J].軟件導刊,2011(10):182-183.
[7] 廖荻.連貫性項目教學法在《統(tǒng)計基礎知識》課程中的應用[J].職業(yè)教育研究,2012(10):84-86.
[8] 范銀平.任務驅動教學法在高校計算機教學中的應用[J].統(tǒng)計與管理,2013(6):160-161.
[9] 邱加永.Java程序開發(fā)實用教程[M].北京:清華大學出版社,2014.
(責任編輯:黃 ?。?