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