摘 要: 對(duì)C++程序設(shè)計(jì)課程教學(xué)現(xiàn)狀進(jìn)行分析,闡述了案例教學(xué)法中案例的選取。分別選擇了“簡(jiǎn)單圖書(shū)管理系統(tǒng)”作為講解“類(lèi)和對(duì)象”的案例、“簡(jiǎn)單復(fù)數(shù)計(jì)算器”作為講解“運(yùn)算符重載”的案例和“簡(jiǎn)單公司員工管理系統(tǒng)”作為講解“繼承派生和多態(tài)性”的案例;闡述了案例教學(xué)法在課堂教學(xué)中的應(yīng)用。通過(guò)案例教學(xué)法的實(shí)施推動(dòng)“C++程序設(shè)計(jì)”課程教學(xué)改革。
關(guān)鍵詞: 案例教學(xué)法; 教學(xué)改革; C++程序設(shè)計(jì); 教學(xué)效果
中圖分類(lèi)號(hào):G424 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2015)11-68-03
Abstract: This paper analyzes the present situation of the teaching of "C++ programming" course, expounds the selection of cases in the case teaching. The "simple library management system" is chosen as a case to explain the class and object, "a simple complex number calculator" as a case to explain the operator overloading, and "simple company employee management system" as a case to explain the inheritance and derivation and polymorphism. Through the case teaching, the teaching reform for the course of "C++ programming" is promoted.
Key words: case teaching method; teaching reform; c++ programming; teaching effect
0 引言
“C++程序設(shè)計(jì)”課程是計(jì)算機(jī)和軟件工程專(zhuān)業(yè)的一門(mén)專(zhuān)業(yè)基礎(chǔ)課程,是后繼程序開(kāi)發(fā)、數(shù)據(jù)庫(kù)等專(zhuān)業(yè)課的前導(dǎo)課程。該課程的教學(xué)目標(biāo)是使學(xué)生理解面向?qū)ο蟪绦蛟O(shè)計(jì)的有關(guān)概念,通過(guò)編程掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的方法,但是該課程不是一門(mén)面向?qū)ο蟪绦蛟O(shè)計(jì)的理論課程,而是應(yīng)用過(guò)程中引出面向?qū)ο蟪绦蛟O(shè)計(jì)的概念,通過(guò)編程過(guò)程理解面向?qū)ο蟪绦蛟O(shè)計(jì)方法,所以該課程對(duì)理論知識(shí)及實(shí)踐環(huán)節(jié)的要求都很高[1]。筆者根據(jù)C++程序設(shè)計(jì)課程的特點(diǎn),結(jié)合教學(xué)過(guò)程中遇到的實(shí)際情況,改變傳統(tǒng)的教學(xué)方式,采用案例教學(xué)法開(kāi)展教學(xué),進(jìn)而探索該課程的教學(xué)改革,與大家共勉,以求集思廣益,共同提高本課程的教學(xué)效果[2]。
1 教學(xué)現(xiàn)狀分析
傳統(tǒng)的課堂教學(xué),學(xué)生只能聆聽(tīng)主講教師授課,學(xué)習(xí)主動(dòng)性不足,不能激發(fā)學(xué)生學(xué)習(xí)興趣[3];傳統(tǒng)的教學(xué)方法基本上是首先講解知識(shí)點(diǎn),然后圍繞知識(shí)點(diǎn)舉一些關(guān)于知識(shí)點(diǎn)應(yīng)用的例子,這樣學(xué)生掌握的知識(shí)點(diǎn)比較零散,沒(méi)有全局觀念[4]。“C++程序設(shè)計(jì)”課程不僅要求學(xué)生掌握C++語(yǔ)言的語(yǔ)法和面向?qū)ο蟪绦蛟O(shè)計(jì)的思想,而且還要能夠讓學(xué)生進(jìn)一步掌握理解軟件設(shè)計(jì)中非常重要的思想“模塊化設(shè)計(jì)”和“自頂向下,逐步細(xì)化”設(shè)計(jì)方法[5]。
2 教學(xué)改革實(shí)施
2.1 案例選取
2014-2015學(xué)年第二學(xué)期,對(duì)軟件工程專(zhuān)業(yè)實(shí)施了“C++程序設(shè)計(jì)”課程教學(xué)改革,本次課程改革主要采用 “案例教學(xué)法”對(duì)教學(xué)方法進(jìn)行改革,“案例教學(xué)法”首先就要選取案例,將案例應(yīng)用到教學(xué)過(guò)程中。在課程改革中選擇了“簡(jiǎn)單圖書(shū)管理系統(tǒng)”作為講解“類(lèi)和對(duì)象”的案例、“簡(jiǎn)單復(fù)數(shù)計(jì)算器”作為講解“運(yùn)算符重載”的案例和“簡(jiǎn)單公司員工管理系統(tǒng)”作為講解“繼承派生和多態(tài)性”的案例,如表1所示。
表1 案例與對(duì)應(yīng)的知識(shí)點(diǎn)表
[案例\&知識(shí)點(diǎn)\&簡(jiǎn)單圖書(shū)管理系統(tǒng)\&類(lèi)和對(duì)象\&簡(jiǎn)單復(fù)數(shù)計(jì)算器\&運(yùn)算符重載\&簡(jiǎn)單公司員工管理系統(tǒng)\&繼承派生和多態(tài)性\&]
⑴ 簡(jiǎn)單圖書(shū)管理系統(tǒng):通過(guò)該案例讓學(xué)生理解類(lèi)和對(duì)象的含義,掌握類(lèi)聲明和對(duì)象定義的方法。在該案例中涉及到三個(gè)類(lèi),即圖書(shū)類(lèi)、讀者類(lèi)和管理員類(lèi)。圖書(shū)類(lèi)能夠描述圖書(shū)的相關(guān)信息同時(shí)能夠?qū)崿F(xiàn)圖書(shū)的顯示、圖書(shū)的狀態(tài)、配合圖書(shū)借還等功能;讀者類(lèi)描述了讀者的相關(guān)信息同時(shí)能夠?qū)崿F(xiàn)讀者信息的顯示、配合圖書(shū)借還等功能;圖書(shū)管理員類(lèi)描述了圖書(shū)管理員的相關(guān)信息同時(shí)能夠?qū)崿F(xiàn)圖書(shū)和讀者的增加、刪除、修改和查詢(xún)功能以及圖書(shū)的借還功能。
⑵ 簡(jiǎn)單復(fù)數(shù)計(jì)算器:通過(guò)該案例主要讓學(xué)生理解運(yùn)算符重載的含義和類(lèi)型的含義,以及掌握運(yùn)算符重載的方法和類(lèi)型轉(zhuǎn)換的方法。在該案例中,通過(guò)友元函數(shù)和成員函數(shù)的實(shí)現(xiàn)運(yùn)算符的重載,實(shí)現(xiàn)復(fù)數(shù)的四則運(yùn)算;通過(guò)轉(zhuǎn)換構(gòu)造函數(shù)實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)類(lèi)型向用戶(hù)自定義類(lèi)型的轉(zhuǎn)換;通過(guò)類(lèi)型轉(zhuǎn)換函數(shù)實(shí)現(xiàn)用戶(hù)自定義類(lèi)型向標(biāo)準(zhǔn)類(lèi)型的轉(zhuǎn)換。
⑶ 簡(jiǎn)單公司員工管理系統(tǒng):通過(guò)該案例讓學(xué)生理解繼承派生、多態(tài)性的含義和掌握派生類(lèi)的特性和通過(guò)虛函數(shù)實(shí)現(xiàn)動(dòng)態(tài)多態(tài)。在案例中首先聲明員工類(lèi),員工類(lèi)作為基類(lèi)派生出管理人員類(lèi)和程序開(kāi)發(fā)人員類(lèi),實(shí)現(xiàn)簡(jiǎn)單的繼承派生關(guān)系,再由案例功能需求引出實(shí)現(xiàn)動(dòng)態(tài)多態(tài)的虛函數(shù),通過(guò)虛函數(shù)與指針的配合使用實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)中的一個(gè)非常重要特性即多態(tài)性。
2.2 課堂教學(xué)
“案例教學(xué)法”不僅能夠激發(fā)學(xué)生的學(xué)習(xí)興趣,而且能讓學(xué)生體會(huì)軟件設(shè)計(jì)中非常重要的“模塊化設(shè)計(jì)”和“自頂向下,逐步細(xì)化”的設(shè)計(jì)思想和方法。教學(xué)過(guò)程按照“案例展示→任務(wù)描述→任務(wù)分析→知識(shí)點(diǎn)講解→實(shí)現(xiàn)案例→疑難解析→歸納總結(jié)”等環(huán)節(jié)實(shí)施教學(xué)。以“簡(jiǎn)單公司員工管理系統(tǒng)”為例來(lái)展示教學(xué)過(guò)程。
⑴ 案例展示:課前準(zhǔn)備好案例,課上將案例運(yùn)行的結(jié)果展示給學(xué)生。圖1所示為“簡(jiǎn)單公司員工管理系統(tǒng)”運(yùn)行結(jié)果。
⑵ 任務(wù)描述:根據(jù)案例運(yùn)行的結(jié)果,描述案例的任務(wù)。圖1案例主要是計(jì)算三類(lèi)員工的工資即行政管理類(lèi)員工、開(kāi)發(fā)類(lèi)員工和項(xiàng)目管理類(lèi)員工的工資,每類(lèi)員工根據(jù)級(jí)別的不同都有自已的工資、獎(jiǎng)金和加班費(fèi)的計(jì)算公式。
⑶ 任務(wù)分析:圖1案例中涉及到三個(gè)類(lèi):行政管理員工類(lèi)、開(kāi)發(fā)型員工類(lèi)和項(xiàng)目管理員工類(lèi)。這三個(gè)類(lèi)有共同的特性,都是該公司的員工,所以可以先定義一個(gè)員工類(lèi)作為基類(lèi),再由員工類(lèi)派生出行政管理員工類(lèi)和開(kāi)發(fā)型員工類(lèi)兩個(gè)派生類(lèi),而項(xiàng)目管理類(lèi)員工既具有行政管理類(lèi)員工的特性又具有開(kāi)發(fā)人員員工的特性,所以把行政管理類(lèi)員工和開(kāi)發(fā)人員類(lèi)員工作為項(xiàng)目管理類(lèi)員工的共同基類(lèi)。因?yàn)槿?lèi)員工都要計(jì)算月薪,所以要把計(jì)算月薪的函數(shù)定義為虛函數(shù)。
⑷ 知識(shí)點(diǎn)講解:根據(jù)前面的任務(wù)分析,完成該案例要用到繼承派生以及虛函數(shù)和多態(tài)性,在這一環(huán)節(jié)中主要向?qū)W生講解繼承和派生的含義,以及派生類(lèi)的聲明和派生類(lèi)的特征,另外還有虛函數(shù)的定義和虛函數(shù)與指針結(jié)合實(shí)現(xiàn)動(dòng)態(tài)多態(tài)性。
⑸ 實(shí)現(xiàn)案例:聲明公司員工類(lèi)Company_Employee作為基類(lèi),以此類(lèi)為基類(lèi)派生出行政管理員工類(lèi)Employee_Manager和開(kāi)發(fā)人員類(lèi)Employee_Developer,再以Employee_Manager和Employee_Developer為基類(lèi)派生出項(xiàng)目管理員工類(lèi)Employee_Branch,同時(shí)定義各類(lèi)的成員函數(shù)和主函數(shù)。
⑹ 疑難解析:在這一環(huán)節(jié)中主要是解答學(xué)生在學(xué)習(xí)過(guò)程中存在的問(wèn)題,該案例中主要的問(wèn)題是多重繼承即項(xiàng)目管理員工類(lèi)Employee_Branch的特性和多態(tài)性,前一個(gè)問(wèn)題是該的案例中難點(diǎn)但不是重點(diǎn),而后一個(gè)問(wèn)題既是該案例中的重點(diǎn)也是該案例中的難點(diǎn)。
⑺ 歸納總結(jié):根據(jù)前面各環(huán)節(jié),總結(jié)歸納該案例中難點(diǎn)、重點(diǎn)、編寫(xiě)程序中的注意點(diǎn)以及體會(huì)面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和特征。
2.3 教學(xué)總結(jié)
此次課程改革雖然取得了一定的效果,但仍然存在不少問(wèn)題,現(xiàn)將存在的問(wèn)題和改進(jìn)措施總結(jié)如下。
⑴ 案例選取,本次課程改革選取的“簡(jiǎn)單圖書(shū)管理系統(tǒng)”和“公司員工管理系統(tǒng)”功能有點(diǎn)復(fù)雜,有些學(xué)生不能夠完全理解,下學(xué)年再上這門(mén)課時(shí),要選擇相對(duì)比較簡(jiǎn)單的案例。
⑵ 團(tuán)隊(duì)合作精神,本次課程改革只是讓學(xué)生單獨(dú)完成一個(gè)程序,下學(xué)年再上這課時(shí),先讓學(xué)生單獨(dú)完成一個(gè)作業(yè),然后再團(tuán)隊(duì)合作完成一個(gè)功能相對(duì)復(fù)雜的系統(tǒng)。
3 結(jié)束語(yǔ)
本文對(duì)“C++程序設(shè)計(jì)”課程目前現(xiàn)狀作了簡(jiǎn)要分析,在此基礎(chǔ)上從案例選取、案例教學(xué)法的實(shí)施過(guò)程等方面提出了一些改革措施,在實(shí)際教學(xué)過(guò)程中能夠在一定程度上激發(fā)學(xué)生學(xué)習(xí)興趣,從學(xué)生考試的結(jié)果來(lái)看,學(xué)生編程動(dòng)手能力得到一定的提高。教學(xué)改革是一個(gè)不斷完善的過(guò)程,程序設(shè)計(jì)課程涉及到軟件工程、數(shù)據(jù)結(jié)構(gòu)、算法分析等多門(mén)課程,因此還需要引導(dǎo)學(xué)生拓展到多個(gè)相關(guān)課程進(jìn)行深入學(xué)習(xí)。課程教學(xué)改革,是一項(xiàng)常做常新工作,要在教學(xué)過(guò)程中進(jìn)一步加大“C++程序設(shè)計(jì)”課程教學(xué)改革的力度,不斷努力,提高教學(xué)質(zhì)量,真正落實(shí)“C++程序設(shè)計(jì)”課程在軟件技術(shù)專(zhuān)業(yè)技能型人才培養(yǎng)中的作用。
參考文獻(xiàn)(References):
[1] 姚利民,段文彧.高校教學(xué)方法改革探討[J].中國(guó)大學(xué)教學(xué),
2013.8:60-64
[2] 梁鳳蘭.基于CDIO的《數(shù)據(jù)庫(kù)原理及應(yīng)用》實(shí)踐課程教學(xué)改
革探究[J].軟件導(dǎo)刊,2013.12:187-188
[3] 李寒梅.案例教學(xué)在教師教育課堂教學(xué)中的觀察與啟示[J].
中國(guó)大學(xué)教學(xué),2013.6:70-72
[4] 于啟紅.案例教學(xué)法在編程語(yǔ)言課程中的作用探討[J].計(jì)算
機(jī)時(shí)代,2014.11:62-64
[5] 逮燕玲.基于CDIO教育理念的數(shù)據(jù)庫(kù)課程實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)
技術(shù)與管理,2013.1:22