Education Research Frontier June 2015, Volume 5, Issue 2, PP.17-22
Research on Object Oriented Programming Teaching Based on KM Teaching Theory Faguo Zhou 1, Fan Zhang 1#, Bingru Yang 2
1. School of Mechanical Electronic and Information Engineering, China University of Mining and Technology, Beijing 100083, China 2. University of Science and Technology Beijing, Beijing 100083, China #
Email: zhangfansailor@sina.com
Abstract Object oriented programming is one of the compulsory courses in science or engineering major in universities, and it is also a professional basic course of computer science and technology and its relative majors. In this paper, on the basis of describing the teaching method of KM teaching theory, the course teaching of object oriented programming based on KM teaching theory is deeply discussed. The teaching mode, teaching content and teaching method based on KM teaching theory of this course are set forth in detail. And at the same time, some graphs of knowledge logic structure and learning in mind form are given in part. Thus, the teaching content based on the logic structure, theoretical framework and the internal relation of knowledge is established. Insisting on “erection first, then filling and induction” and “fewer but better” in principle, to reform teaching mechanism, teaching model, teaching content and teaching method according to the foregoing guidance. The practice has proved and will continue to prove that the KM teaching theory is a very worth popularizing teaching method. Keywords: Knowledge Logic Structure; Learning in Mind Form; KM Teaching Theory; Object Oriented Programming
基于 KM 教学论的面向对象程序设计教学研究 * 周法国 1,张帆 1,杨炳儒 2 1. 中国矿业大学(北京)机电与信息工程学院,北京 100083 2. 北京科技大学,北京 100083 摘 要:针对面向对象程序设计是大学理工科专业的必修课程之一,也是计算机科学与技术相关专业的专业基础课,本文 在对基于 KM 教学论的教学方法进行了叙述的基础上,对 KM 教学论在面向对象程序设计这门课程的教学上进行了深入 探讨,阐述了基于 KM 教学论在面向对象程序设计课程中的教学模式、教学内容与教学方法,并给出了该课程的部分知 识逻辑结构图和思维形式注记图,确立以讲授知识的逻辑结构、理论框架和内在联系为主,对思维活动加以诱导,坚持 “先搭架,后填充,再诱导”和少而精的原则对课程知识进行组织和教学,是一种非常值得大力推广的教学方法。 关键词:知识逻辑结构;思维形式注记;KM 教学论;面向对象程序设计
引言 面向对象程序设计是理工科大学生的一门基础课,尤其是计算机相关专业的专业基础课。学好本课程 可以培养学生使用面向对象技术进行分析和解决实际问题的能力,培养学生无论以后在学习、工作中使用 什么语言编程,都能灵活应用这些思想和方法的能力。 本文以 C++语言为例进行面向对象程序设计课程的教学方法进行研究,面向对象的概念本身极具抽象 性和复杂性,而 C++语言语法规则繁多、使用灵活,老师在讲授过程中既要培养学生程序设计的思想,又 *
基金资助:受中国矿业大学(北京)面向对象技术与 C++程序设计课程建设支持资助(k120406) 。 - 17 www.erfrontier.org
要让学生动手编程,熟悉 C++的语法规则,常常造成学生顾此失彼,从而出现学生普遍反应面向对象程序 设计课程学习难度大,还有不少学生出现畏难情绪,甚至放弃该课程的学习。如何让学生快速、牢固地掌 握面向对象程序设计的精华、让 C++语言成为一门程序设计的得力工具,是授课教师当前非常重要、非常 迫切的任务。 王春玲[1]提出通过强调实践的方法提高教学效果,程序设计是一门动手性很强的课程,其教学必然和上 机实践密切结合才能完全掌握这门课程的思想和方法。杨琦[2]提出将面向对象和结构化程序设计方法的思想 为贯穿,以适中的难度,通过 5 个教学关键点来展开教学。李玉梅[3]提出采用三点式教学法,案例驱动教学、 多媒体教学、研究型学习法,培养学生对面向对象 C++程序设计课程的兴趣及正确的思维模式,加强实训 和项目设计,注重教学过程的设计,从而提高学生的综合素质。白霞[4]通过阐述计算思维对人才培养的影响, 提出了基于计算思维的面向对象程序设计教学改革模式、教学内容和方法。此外还有一些通过项目教学法[5]、 案例教学法[6]等方法来促进程序设计课程的教学。但这些方法都没有从深层次、根本上解决面向对象程序设 计的教学问题。KM 教学论[7]是针对高校理工科教学特点而由北京科技大学杨炳儒教授提出的基于认知结构 的创新性教学理论,本文将 KM 教学论引入到面向对象程序设计的课程教学中。
1
KM 教学论 KM 教学论是一种新型的教学理论体系,其囊括了教学模式、教学内容结构、教学方法、学生能力培养、
教学评价、现代化教学手段等全方位、多元化的教学方法论体系,是一种新型的教学理论体系,其创新性 不仅体现在面向教学内容和课堂教学组织上,而且还体现在课程体系的建设上。本文将从课程教学的组织 来简单介绍 KM 教学论的几个主要的基本特征。
1.1 基于双图融合的教学机制 KM 教学论是将知识逻辑结构与思维形式注记相融合、将知识逻辑结构核心论的宏观思想落到实处的教 学方法论。在知识逻辑结构核心论的宏观实施过程中融入微观的针对概念、分类、推导、证明、反驳、归 纳的思维形式注记,其主要思想就是充分发挥任课教师在课程教学中的主导作用,以学生学习为主体,进 而一步步提升学生的创新能力,是一种使学生快速牢固地获取知识、掌握知识、运用知识,从而提高课程 教学质量的教学方法论。 在 KM 教学论中,两部分核心内容“知识逻辑结构”与“思维形式注记”对应的图分别称之为 K 图即 知识逻辑结构图和 M 图即思维形式注记图,本文称为双图。KM 教学论就是在宏观架构与微观演绎两个层 面上,分别形成知识逻辑结构(Knowledge Logic Structure, K)与思维形式注记(Learning in Mind Form, M)相融 合的创新性教学方法论。 在宏观层面上:知识逻辑结构是以知识逻辑结构图为主要表现形式,具有知识结构清晰、便于融会贯 通等特点,从而对知识的全貌有一个宏观的认识,同时,还要理清知识总体上所归纳出的几条线索以及课 程通篇的知识体系,各章内容知识体系及其上下文之间的关系等。 在微观层面上:思维形式注记是以思维形式注记图为主要体现形式,将每一个知识点的概念、推理、 证明以及问题求解的详细过程融入到教学的各个环节中,并揭示其形成概念、证明与问题求解的具体思路, 揭示其逐步精化的整个过程。
1.2 基于教学回路的教学模式 KM 教学论的基本教学模式可以如下过程进行描述:从搭粗框架开始,然后对粗框架展开填充,接着进 行启发诱导,从而进入章节知识逻辑结构图,再到跨章知识逻辑结构图,从而形成 KM 的教学论的基本教 学模式。一般来讲,基于 KM 教学论的基本教学模式可以诠释如下: (1)首先给出课程的总体粗架构,在这一部分会具体展现各章的分布与联系; - 18 www.erfrontier.org
(2)然后给出各章的总体粗架构,在这部分会展现各节(知识点)的分布与联系; (3)以少而精为原则,按节及知识点进行展开,并填充重点、难点、关键的内容;次要的枝节性的内 容可以由学生自学或粗讲,从而充分调动学生学习的积极性和主观能动性; (4)在具体的知识点的细节上再通过思维形式注记图等形式进行启发诱导; (5)最后将各章的知识逻辑结构图提升到全篇(整个课程)的总体精架构,从而展现丰富生动的知识 点及其复杂的内在联系; 在某些课程或相关知识之间有着内在逻辑联系的不同章之间,可以通过扩展性的跨章的知识逻辑结构 图加以实现其内在联系。
1.3 基于塔式分层结构的教学内容 塔式分层结构就是将整个教学内容按照知识点之间层次属性建立知识间的联系,其构造流程需要经过 抽点-连线-成网-扩展-嵌入-概型六步来实现。下面进行详细阐述: (1)抽点:将课程的理论体系、知识结构进行剖析,从每一个知识点的内容、每一节的内容、每一章 的内容、每篇或整个课程的内容一一剖析,将课程相关的概念、定理、准则、证明、推理等知识要点一点 点抽出来,在这个阶段可以舍弃那些次要的、细节上不重要的东西; (2)连线:在课程教学设计流程上,先从局部进行分析,然后扩大到章、最后再分析总体。在教学内 容上,主要寻求两方面的要素:一是知识间的内在联系(包括各概念、定理、法则、推理、证明等);二 是贯穿于知识间的联系,称之为“知识链”; (3)成网:是在连线的基础上,继续丰富和发展知识间的内在联系,由浅入深、由易到难、从简单到 复杂、由具体到抽象,在多层次上深化知识的逻辑结构,同时添加知识在横向和纵向上的各种联系,从而 形成知识的网络结构。 (4)扩展:在成网的基础上,沿着各个知识“脉络”进行深入发展与延伸,将各相关的知识部分加入 主要支点上,从而扩充与上升到知识的总体状态中去; (5)嵌入:将思维形式注记图嵌入到上述的各环节中,从而在剖析知识结构、分析论证问题、把握知 识点间内在联系的各个环节中充分发挥思维形式注记图的作用; (6)概型:是对课程知识的高度概括,是一种课程知识结构的精框架,已不单单是教课书知识内容的 简单分布和罗列。从而这样掌握的知识才是一串串的、一整套的,是具有“空间”层次架构的,不再是知 识结构的简单“平面”呈现。
1.4 基于薄厚薄的三段论教学方法 KM 教学论从本质上来讲是在宏观上构建知识的逻辑结构图,微观上用思维形式注记图演绎铺展相互融 合的教学过程,KM 教学论的教学方法也要与此协调一致,即形成交互式、结构化的“三段论”(薄--厚-薄)教学方法。 事实上,由上述流程可见:教学内容在结构上可分为三级,在上述教学内容的六步中(1)-(3)称为 “粗薄级”,(4)-(5)称为“厚级”,(6)称为“精薄级”;相应地,得到教学过程中交互式“薄—厚 —薄”的结构化教学方法。
2
KM 教学论在面向对象程序设计教学中的应用 本文针对面向对象程序设计课程的教学,我们抛开具体的教材,针对面向对象技术的特征及 C++程序
设计(可以有、也可以没有 C 语言基础),来探讨 KM 教学论的在此课程教学中的具体应用。
2.1 KM 教学论在课程教学中的实施过程 基于 KM 教学论的教学,在课程实施时,首先从教学内容入手,从抽点-连线-成网-扩展-嵌入-概型等步 - 19 www.erfrontier.org
骤构造教学内容,采用三段论教学方法。 (1)抽点 对面向对象程序设计课程中涉及到的面向对象技术、特征、C++程序设计进行逐节-逐单元-逐章-逐篇的 进行剖析,将每一部分涉及到的概念、语法规则、要点抽取出来,有时候还要暂时舍弃那些次要的、细枝末 节的内容,仅抽取骨干的、重点的、框架性的知识结构。以 C++语言为例讲解面向对象程序设计时,需要先 讲解 C++基础知识,再讲解面向对象程序设计的特征及 C++实现。可按如下结构对课程知识点进行抽点: 第一部分:C++基础知识,涵盖 C++基本语法知识,如常量、变量、标识符、基本数据类型、运算符、 表达式、面向过程的程序设计结构、数组、函数、指针、自定义数据类型等。 第二部分:面向对象程序设计及 C++实现,涵盖面向对象程序设计思想、相关概念、特征及其实现, 如抽象封装(类与对象)、继承、多态等。 第三部分:泛型编程基础,对类与函数的再抽象,涵盖模板与标准模板库等内容。 (2)连线与成网 针对每个知识点,分析其内在的联系,将知识串联成线,形成具有逻辑关系的知识链。然后由单一的 知识链进行纵向与横向的连线从而形成网状的知识网络。 在面向对象技术与 C++程序设计的教学中,可以按照如下方式连线与成网:如数据类型可以将相关的 知识点贯穿成线,从基本数据类型到数组类型再到结构类型到指针类型;再从数据类型到变量,从操作抽 象出函数,从变量函数封装成类,从类的继承产生派生类,最后到类的应用过程中多态性的体现,从而形 成面向对象程序设计的主题知识链;不同知识链上的知识点之间同样也有联系,再加上这些不同链之间的 连线,最终构成整个课程的知识网络。 (3)扩展与嵌入 在先前形成的粗框架的基础上,沿各个脉络进行延伸,添加细节,扩充知识,并将思维形式注记图嵌 入到各个环节中。如从结构扩展到类的过程中,嵌入如下图 1 所示的思维形式注记图。
图 1 思维形式注记图示例
(4)概型 按照上述步骤实施的面向对象程序设计的课程知识点已不再是知识的简单罗列,而是高观点的、有牢 固支架的知识概型了。
2.2 课程教学中 KM 图的制作 KM 教学论要求讲授者在对教学内容与结构有深刻认识的基础上,抓住知识逻辑结构这个核心,形成知 识的逻辑系统,按照不断深化的层次去展开教学内容。 下面我们给出面向对象程序设计(C++语言)的整体知识逻辑结构,如下图 2 所示。 我们也对每一章内容进行了归纳总结,从而得出每一章的知识逻辑结构图,如对指针涉及到的知识点 进行归纳总结,得到指针的知识逻辑结构如下图 3 所示,以整型(int)为例。 知识逻辑结构是宏观上对整体知识的把握,更关注于知识之间的联系,思维形式注记是宏观知识逻辑 结构下针对具体的概念、分类、推导、证明、归纳等的微观展现,课程的每一个知识点都可以进行总结, 如面向对象程序设计(C++)中的构造函数的思维形式注记图如下图 4 所示。 - 20 www.erfrontier.org
虚函数
类 型 转 换
整型 实型 字符型 布尔型
数组 结构 共用 枚举
基本
构造
编译时多 态性
常量 符号常量
变量 const常量
定义与 引用
数据类型 运算符
赋值 算术 关系 逻辑 条件 逗号 类型转换 位 成员 指针 () []
虚继承 单继承 继承类型
const 约束
多继承
指针 引用 函数
继承
指针与 引用
数据 成员
类的 封装
封装
C++ 面向 C++ 面向 面向对象 对象 基 基 面向对象 对象 程序设计 程序设计 特征 础 特征 础 (C++) (C++) 及实 及实 现 现 泛型编程
函数原型
函数
函数重载
类的 使用
相关概念
体现 对象 的值
成员 函数
库函数 函数定义
私有继承 保护继承
多态
new delete
优先级 结合性
运算符 运 算 符 重 载
公有继承 继承方式
数据类型 表 达 式
运行时多 态性
体现 对象 行为
对象
默认参数 函数与指针
模板
函数与引用 内联函数
模板函数
模板特化
对象 属性 行为 面向对象程序设计 类 抽象 封装 继承 基类 父类 超类 派生类 子类 多态 联编 静态联编 动态联编 编译时多态性 虚函数 运行时多态性
标准模板库 STL
类模板
函数模板
模板类
图 2 面向对象程序设计(C++)整体知识逻辑结构图 指针
定义
引用
相关说明
指针变量
int x, y; int *p = &a;
x=x+1; *p=*p+1; y=*p;
关于*、&运算符 应注意事项
指针与一维数组
int a[10];int *p = a;
p[0], p[1], *(p+1), p++
指针与二维数组
int a[5][3];int (*p)[3]; p=a;
p[0][1], *(*(p+1)+2)
指针数组
int x,y,z,*p [3];
p[0]=&x; *p[0]=y;
指针与字符串
char s[10], *p; p=s;
p[0]=’x’; p=”string”;
1.字符数组与字符 串的区别 2.指针数组与指向 一维数组的指针 的区别 3.怎样用指针表示 数组元素
指针变量做形参
void swap(int *x1, int *x2)
函数返回指针值
int *fun(……);
指向函数的指针
int (*p)(……);
int fun(int x, int y){…} int (*p)(int, int); z = p(x, y);
指向指针的指针
int **p;
int x, *p, **pp; p=&x; pp=&p;
空指针
void *p;
void *p = malloc(5*sizeof(int));
int *p;
int *p = new int; int *p = new int(5); delete p; int *p = new int[10]; delete[] p;
指针与数组
指针与函数
动态内存管理
swap(&x, &y); int *p=fun(x);
1.返回指针值的函 数与指向函数的指 针的区别 2.指向函数的指针 也称函数指针
1.主要用于 C 语言 的动态内存分配 2. C++中的 new 已 经对 malloc 进行了 进一步的封装 3. 一般和指针类型 转换结合使用
int *p; void *p2; p2=(void *)p;
指针类型转换
图 3 C++语言中指针部分的知识逻辑结构图
基于 KM 教学论的教学方法从本质上讲是在宏观上构建知识逻辑结构图和在微观上用思维形式注记图 - 21 www.erfrontier.org
演绎铺展相互融合的过程,从而提高教学效率和效果。
图 4 构造函数思维形式注记图
3
结语 面向对象程序设计是大学理工科专业的必修课程之一,也是计算机科学与技术相关专业的专业基础课,
本文对基于 KM 教学论的教学方法进行了详细阐述,并对 KM 教学论在面向对象程序设计这门课程的教学 上进行了深入探讨,阐述了基于 KM 教学论在面向对象程序设计课程中的教学模式、教学内容与教学方法, 并给出了该课程的部分知识逻辑结构图和思维形式注记图,在课堂讲授上以知识的逻辑结构、理论体系框 架和知识的内在联系为主,对思维活动加以诱导,坚持“先搭架,后填充,再诱导”和少而精的原则,对 课程教学内容进行组织和教学,是一种非常值得大力推广的教学方法。
REFERENCES [1]
Chunling Wang. “Exploration of the Course Practice Teaching Reform for C++ Programming”. Computer Education. 24(2007): 3-4
[2]
Qi Yang. “Research and Practice of the Teaching Contents of the Course for VC++ Programming”. Computer Education. 24(2007): 65-66
[3]
Yumei Li. “Research and Practice of the Course Teaching Reform for Object Oriented C++ Programming”. China Science and Technology Information. 8(2009): 249-249(251)
[4]
Xia Bai, Fei Gao, Juan Zhao. “Teaching Reform for Object Oriented C++ Programming based on Computational Thinking”. Computer Education. 11(2014): 7-9
[5]
Li Zhang, Bin Xia. “The Application of Project Teaching Method on Object-oriented Programming Teaching”. Computer Education. 10(2010): 92-94(110)
[6]
Faguo Zhou, Fan Zhang. “Application of Comprehensive Design Case in C Language Teaching”. China Education Innovation Heral. 18(2011): 78-78
[7]
Bingru Yang. “Research and Practice of KM Teaching Theory”. Journal of University of Science and Technology Beijing(Social Sciences Edition). 1(2012): 89-92(145)
【作者简介】 1
周法国(1976-),男,汉族,博士,
2
张帆(1973-),男,汉族,博士,讲师,研究方向知识工
讲师,研究方向为自然语言处理、知识
程,2007 年于北京科技大学取得博士学位。
发现与智能系统,2009 年 1 月于北京科
Email: zhangfansailor@sina.com
技大学取得计算机应用技术专业工学博
3
士学位。
研究方向知识发现与智能系统、柔性建模与集成技术,1964
Email: zhoufaguo@cumtb.edu.cn
年毕业于天津师范大学应用数学专业。
杨炳儒(1943-),男,汉族,学士,教授,博士生导师,
Email:bryang_kd@126.com
- 22 www.erfrontier.org