第一篇:教学目标了解面向对象程序设计方法的基本原理及主要特点——抽解析
呼伦贝尔学院—— 计算机科学与技术学院
教学目标:了解面向对象程序设计方法的基本原理及主要特点——抽象性、封装性、继承性、多态性。掌握类和对象的概念以及如何用类来解决具体问题并在类的基础上如何派生出新类,以及重载的概念和作用。
教学类型:在多媒体教室直观讲授,引导学生进行类的操作。教学内容:
复习上次课
5.5类的继承
Visual Basic.NET支持类的继承,允许用户定义一个类,作为其他类继承的依据,继承类能够继承,扩充基本类的属性和方法,继承类也可以重载基本类的一些方法。
例如,把窗体看成一个类,在Vissal Basic.NET中用户可以根据现有的窗体继承出一个新的窗体。其中已有类叫做基类(父类),继承的新类叫做派生类(子类)。
1、实现基本的继承
下面通过例子进一步说明为什么要使用继承。
要描述人和雇员,对于每一个人来说都有姓名、年龄、性别等信息,对于公司雇员有以上内容以外还有雇员的工作部门及薪水等信息。当分开来实现这两个类的时候,就会发现其实它们有许多相同之处。如果分开编写这两个类的代码,不仅编写效率低,而且程序代码也难以维护,所以最好的方法就是让它们使用一些相同的代码,此时继承就可以发挥作用了。使用继承,可以创建一个Person类(基类),它包含了name(姓名)、age(年龄)、sex(性别)等属性所有的共享代码。然后再创建employee派生类,这个类是由person类继承而来的,这样它们就可以自动地获得所有的公用代码了。
【例5.3】建立person类及它的派生类employee类。Public Class person
Public sname, Iage, ssex
Public Property name()As String
Get
Return sname
End Get
Set(ByVal value As String)
sname = value
End Set
End Property
Public Property age()As Integer
Get
Return Iage
End Get
Set(ByVal value As Integer)
Iage = value
End Set
呼伦贝尔学院—— 计算机科学与技术学院
End Property
Public Property sex()As String
Get
Return ssex
End Get
Set(ByVal value As String)
ssex = value
End Set
End Property End Class Public Class employee
Inherits person
Dim Ssalary As Single
Public Property salary()As Single
Get
Return Ssalary
End Get
Set(ByVal value As Single)
Ssalary = value
End Set
End Property
Sub Displayemployee()
Debug.WriteLine(“雇员的姓名:” & name)
Debug.WriteLine(“雇员的性别:” & sex)
Debug.WriteLine(“雇员的年龄:” & age)
Debug.WriteLine(“雇员的薪水:” & salary)
End Sub End Class Module Module1
Sub Main()
Dim aemployee As New employee()
aemployee.name = “王强”
aemployee.sex = “男”
aemployee.age = 25
aemployee.salary = 3600.0
aemployee.Displayemployee()
End Sub End Module
2、禁止继承
在默认状态下,创建的任何类都是可以用作基类,可由这个基类创建其他的类。但有时需要创建一个不被继承的类,这时可以在类的声明中使用NotInheritable关键字。
Public NotInheritable Class Class_name …… End Class
呼伦贝尔学院—— 计算机科学与技术学院
使用这个关键字后,其他代码都不能使用Inherits关键字来创建一个由这个基类继承二来的子类。
3、基类成员在派生类中的作用域
通过继承性创建子类时,新类将从父类获得所有Public 和 Friend方法、属性及变量。但在父类中声明的Private的任何内容都不能直接应用于新子类的代码中。
例如:可以在上例的person类中重写age方法,代码如下: Private Property age()As Integer
Get
Return Iage
End Get
Set(ByVal value As Integer)
Iage = value
End Set
End Property Age方法声明为private,所以employee类和其他代码都不能使用它。当然也有一个列外,就是New方法,构造函数方法必须在每一个子类中重新定义。
有时public和private并不够用,需要创建一个可以用于子类而不能用于客户代码的方法,此时就可以使用protected作用域。当某些内容声明为protected时,该元素就不能应用于类以外的代码,但可以应用于通过继承派生出的子类。
例如:若将person类当中的name、age、sex属性都声明为 Protected Property name()As String Protected Property age()As Integer Protected Property sex()As string 那么测试程序中的下列代码将不再有效: aemployee.name = “王强” aemployee.sex = “男” aemployee.age = 25 但示例中的name、age、sex属性可以应用于employee中的所有代码,因为它继承了父类。为设置属性,可以在employee中增加一个方法setperson():
Public Class employee
Inherits person
Dim Ssalary As Single Public Property salary()As Single
Get
Return Ssalary
End Get
Set(ByVal value As Single)
Ssalary = value
End Set End Property Sub setperson(ByVal n As String, ByVal a As Integer, ByVal s As String, ByVal c As Single)
name = n
age = a
sex = s
呼伦贝尔学院—— 计算机科学与技术学院
salary = c End Sub
Sub Displayemployee()
Debug.WriteLine(“雇员的姓名:” & name)
Debug.WriteLine(“雇员的性别:” & sex)
Debug.WriteLine(“雇员的年龄:” & age)
Debug.WriteLine(“雇员的薪水:” & salary)
End Sub End Class Module Module1
Sub Main()
Dim aemployee As New employee()
aemployee.setperson(“王强”, 25, “男”, 3600.0)
aemployee.Displayemployee()
End Sub End Module 5.6重载方法
VB.NET具有重载方法的功能,可以利用重载来实现多态性。重载是可以在一个类中可多次声明相同名称的一种方法,只要每个声明都有不同的参数列表即可。其中参数列表不同指的是参数的数据类型不同或参数的个数不同。例如:Public Sub show(ByVal x As Integer, ByVal y As Integer)。
上面show方法的参数列表的参数的类型为(Integer, Integer)。为了重载这个方法,必须使用不同的参数列表,例如(Double,Integer)或(Integer,Double)都可以。重载不能只是通过改变函数的返回值来实现,而是要求实际参数的数据类型不同。
Public Class sum
Public Function add(ByVal a As Integer, ByVal b As Integer)As Integer
Return a + b
End Function
Public Function add(ByVal a As Double, ByVal b As Double)As Double
Return a + b
End Function End Class Module Module1
Sub main()
Dim NO1, NO2 As New sum
Debug.WriteLine(NO1.add(5, 6))
Debug.WriteLine(NO2.add(2.5, 3.6))
End Sub End Module
学生练习:声明一个Shape(形状)基类,在此基础上派生出Rectangle和Circle类,(1)根据给出的矩形的左上角和右下角的坐标计算该矩形的面积;(2)根据给出的圆心坐标计算出圆的面积。
呼伦贝尔学院—— 计算机科学与技术学院
第二篇:《面向对象程序设计方法》课程教学大纲
《面向对象程序设计方法》课程教学大纲
(计算机科学与技术本科专业使用)
一、课程的地位、教学目的和基本要求
C++语言是一种高效实用的程序设计语言,既可进行过程化的程序设计,也可进行面向对象程序设计。本课程以介绍C++语言的基本语法为基础逐步向学生渗透面向对象的程序设计思想,要求学生掌握类的封装、数据隐藏、继承及多态等特性,领会面向对象程序设计,掌握面向对象程序设计方法,培养一定的程序设计能力,为以后各专业课程的学习打下良好的程序设计基础。
二、主要教学环节
1、理论教学 学时数:60 占全部学时数:75 %
2、实验 学时数:20 占全部学时数:25 %
3、实训 学时数:二周
三、课程内容 Ⅰ.理论部分
第一章 C++入门 2学时(1)教学目的、要求
本章要求学生掌握源程序的编辑、编译、连接和执行。了解C++程序设计语言的发展过程以及支持环境。(2)重点与难点
本章的重点和难点是源程序的编辑、编译、连接和执行。
第一节 从C到C++ 第二节 程序与语言 第三节 结构化程序设计 第四节 面向对象程序设计 第五节 程序开发过程 第六节 函数
第二章 基本数据类型与输入输出 2学时(1)教学目的、要求
本章要求学生掌握C++语言数据类型,变量及常量的声明和赋值以及输入输出函数。了解I/O流及printf和scanf输入输出的作用。(2)重点与难点
本章的重点和难点是C++语言数据类型,变量及常量的声明和赋值以及输入输出函数。
第一节 字符集与保留字 第二节 基本数据类型 第三节 变量定义 第四节 常量及常量定义 第五节 I/O流控制 第六节 Printf与scanf 第三章 表达式和语句 2学时(1)教学目的、要求
本章要求学生掌握C++各运算符与常用表达式内容,及if语句的应用。(2)重点与难点
C++各运算符与常用表达式内容,及if语句的应用。
第一节 表达式 第二节 算术运算和赋值 第三节 算术类型转换 第四节 增量和减量 第五节 关系与逻辑运算 第六节 if语句 第七节 条件运算符 第八节 逗号表达式 第九节 求值次序与副作用
第四章 过程化语句 2学时(1)教学目的、要求
本章要求学生掌握switch,while, do…while, for结构的应用,了解描述算法和穷举、迭代算法。(2)重点与难点
本章的重点和难点是循环型程序设计,即switch,while, do…while, for 2 结构的应用。
第一节 while 语句 第二节 do…..while 语句 第三节 for语句 第四节 switch 语句 第五节 switch 语句 第六节 过程应用: 求兀 第七节 过程应用: 判明素数 第八节 过程应用: 求积分
第五章 函数 2学时(1)教学目的、要求
本章要求学生掌握函数的概念、定义、调用机制,和递归、内联、重载函数的概念,以及全局、局部变量。(2)重点与难点
本章的重点和难点是函数的概念、定义、调用机制,以及全局、局部变量。
第一节 函数概述 第二节 函数原型
第三节 全局变量和局部变量 第四节 函数调用机制 第五节 静态局部变量 第六节 递归函数 第七节 内联函数 第八节 重载函数 第九节 默认参数的函数
第六章 程序结构 2学时(1)教学目的、要求
本章要求学生掌握变量的存储类型,作用域,可见性,生命期等概念。(2)重点与难点
本章的重点和难点是变量的存储类型,作用域,可见性,生命期。
第一节 外部存储类型 第二节 静态存储类型 第三节 作用域 第四节 可见性 第五节 生命期 第六节 头文件 第七节 多文件结构 第八节 编译预处理
第七章 数组 2学时(1)教学目的、要求
本章要求学生掌握数组的概念、元素的访问,及数组的应用。(2)重点与难点
本章的重点和难点是数组元素的访问,及数组的应用。
第一节 数组定义 第二节 访问数组元素 第三节 初始化数组 第四节 向函数传递数组 第五节 二维数组 第六节 数组应用: 排序
第七节 数组应用: Josephus问题 第八节 数组应用: 矩阵乘法
第八章 指针 2学时(1)教学目的、要求
本章要求学生掌握指针的概念、运算,以及指针与数组和函数的应用。(2)重点与难点
本章的重点和难点是指针的运算,以及指针与数组和函数的关系及应用。
第一节 指针概念 第二节 指针运算 第三节 指针与数组 第四节 堆内存分配 第五节 const指针 第六节 指针与函数 第七节 字符指针 第八节 指针数组 第九节 命令行参数 第十节 函数指针
第九章 引用 2学时(1)教学目的、要求
本章要求学生掌握引用的概念、操作,以及引用作为函数参数的应用。(2)重点与难点
本章的重点和难点是引用的操作,以及引用作为函数参数的应用。
第一节 引用的概念 第二节 引用的操作 第三节 什么能被引用 第四节 用引用传递函数参数 第五节 返回多个值 第六节 用引用返回值 第七节 函数调用作为左值 第八节 用const限定引用 第九节 返回堆中变量的引用
第十章 结构 2学时(1)教学目的、要求
本章要求学生掌握结构体概念及其定义,结构体变量和结构体数组的引用,指向结构体变量和数组的指针。(2)重点与难点
本章的重点和难点是结构体数组的引用,指向结构体变量和数组的指针。
第一节 结构 第二节 结构与指针
第三节 结构与数组 第四节 传递结构参数 第五节 返回结构 第六节 链表结构 第七节 创建与遍历链表 第八节 删除链表结点 第九节 插入链表结点
第十节 结构应用: Josephus问题
第十一章 类 4学时(1)教学目的、要求
本章要求学生掌握类的概念、类的定义,及成员函数的调用。了解保护成员和软件方法的发展必然。(2)重点与难点
本章的重点和难点是类的概念、类的定义,及成员函数的调用。
第一节 从结构到类 第二节 软件方法的发展必然 第三节 定义成员函数 第四节 调用成员函数 第五节 保护成员 第六节 屏蔽类的内部实现 第七节 再论程序结构
第十二章 构造函数 6学时(1)教学目的、要求
本章要求学生掌握构造、析构函数的使用,以及构造类成员和构造对象的顺序。了解重载和默认构造函数的概念(2)重点与难点
本章的重点和难点是构造、析构函数的使用,以及构造类成员和构造对象的顺序。
第一节 类与对象
第二节 构造函数的需要性 第三节 构造函数的使用 第四节 析构函数
第五节 带参数的构造函数 第六节 重载构造函数 第七节 默认构造函数 第八节 类成员初始化困惑 第九节 构造类成员 第十节 构造对象的顺序
第十三章 面向对象程序设计 4学时(1)教学目的、要求
本章要求学生掌握结构化和面向对象方法的实现。了解程序效率和维护。(2)重点与难点
本章的重点和难点是结构化和面向对象方法的实现。
第一节 抽象 第二节 分类 第三节 设计和效率 第四节 讨论Josephus问题 第五节 结构化方法 第六节 结构化方法的实现 第七节 第八节 第九节
面向对象方法 面向对象方法实现 程序维护
第十四章 堆与拷贝构造函数 6学时(1)教学目的、要求
本章要求学生掌握堆的概念,堆对象,拷贝构造函数及浅拷贝与深拷贝的应用。了解临时和无名对象。(2)重点与难点
本章的重点和难点是堆的概念,堆对象,拷贝构造函数及浅拷贝与深拷贝的 7 应用。
第一节 关于堆
第二节 需要new和delete的原因 第三节 分配堆对象 第四节 拷贝构造函数 第五节 默认拷贝构造函数 第六节 浅拷贝与深拷贝 第七节 临时对象 第八节 无名对象
第九节 构造函数用于类型转换
第十五章 静态成员与友员 2学时(1)教学目的、要求
本章要求学生掌握懂得怎样声明一个静态数据成员,怎样使用静态成员函数以及静态成员函数为什么与特定对象无关。(2)重点与难点
本章的重点和难点是静态数据成员和静态成员函数的使用,以及友元的概念。
第一节 静态成员的需要性 第二节 静态成员的使用 第三节 静态数据成员 第四节 静态成员函数 第五节 需要友员的原因 第六节 友员的使用
第十六章 继承 8学时(1)教学目的、要求
本章要求学生掌握继承的概念,工作方式,以及多态性和虚函数的概念。了解抽象类和类的冗余。(2)重点与难点
本章的重点和难点是继承的概念,工作方式,以及多态性和虚函数的概念。
第一节 继承的概念 第二节 继承的工作方式 第三节 派生类的构造 第四节 继承与组合 第五节 多态性
第六节 多态的思考方式 第七节 多态性如何工作 第八节 不恰当的虚函数 第九节 虚函数的限制 第十节 类的冗余
第十一节 克服冗余带来的问题 第十二节 类的分解 第十三节 抽象类
第十四节 由抽象类派生具体类 第十五节 纯虚函数的需要性
第十七章 多重继承 6学时(1)教学目的、要求
本章要求学生掌握多继承的概念,工作方式以及多继承的构造顺序和访问控制。了解虚拟继承、保护和私有继承。(2)重点与难点
本章的重点和难点是多继承的概念,工作方式以及多继承的构造顺序和访问控制。
第一节 多继承如何工作 第二节 继承的模糊性 第三节 虚拟继承
第四节 多继承的构造顺序 第五节 继承的访问控制 第六节 保护继承与私有继承
第十八章 运算符重载 4学时(1)教学目的、要求 本章要求学生掌握运算符重载的需要性和应用。了解增量运算符的重载。(2)重点与难点
本章的重点和难点是运算符重载的需要性和应用。
第一节 运算符重载的需要性 第二节 如何重载运算符 第三节 值返回与引用返回 第四节 运算符作成员函数 第五节 重载增量运算符 第六节 转换运算符 第七节 赋值运算符
四、主要教科书和参考书
1、《C++程序设计教程》
2、《C++程序设计题解与上机指导》
3、《C++语言程序设计》
4、《C++语言与面向对象程序设计》
5、《C++语言程序设计》
钱能 钱能
潭浩强 郑莉
吕凤翥清华大学出版社
清华大学出版社 清华大学出版社 清华大学出版社
清华大学出版社
责任撰写人:陈桂芬
第三篇:《面向对象程序设计方法》实验教学大纲
《面向对象程序设计方法》实验教学大纲
(计算机科学与技术本科专业使用)
一、教学目标
通过该实验课,学生应在熟练掌握过程化程序设计方法的基础上,领会面向对象程序设计及类的封装、数据隐藏、继承及多态等特性,逐步掌握面向对象程序设计方法,培养一定的程序设计能力,为以后各专业课程的学习打下良好的程序设计基础。
二、实验教学时数
三、实验内容
实验一 图形打印
1、实验目的:练习for循环
2、实验技能培训内容:打印几种特殊图形,如菱形和Z字形
3、主要仪器:计算机
4、实验方法:上机编程
实验二 判素数
1、实验目的:练习函数
2、实验技能培训内容:判断101-200之间有多少个素数,并输出所有素数。
3、主要仪器:计算机
4、实验方法:上机编程
实验三 递归函数练习
1、实验目的:练习递归函数
2、实验技能培训内容:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....3、主要仪器:计算机
4、实验方法:上机编程
实验四 数列排序
1、实验目的:练习数组及几种基本排序方法
2、实验技能培训内容:用选择、插入、冒泡、快速等几种基本的排序方法对数列进行排序。
3、主要仪器:计算机
4、实验方法:上机编程
实验五 矩阵乘积
1、实验目的:练习数组
20学时
2、实验技能培训内容:用数组存储两个矩阵,求两个矩阵的乘积。
3、主要仪器:计算机
4、实验方法:上机编程
实验六 设计时间日期类
1、实验目的:掌握简单类的设计方法
2、实验技能培训内容:构造一个TimeDate类,类中包含一个成员函数,用来在屏幕上显示时间与日期(采用建立在标准库time.h中的标准时间与日期来寻找与显示日期)。
3、主要仪器:计算机
4、实验方法:上机编程
实验七 设计计时类
1、实验目的:掌握简单类的设计方法
2、实验技能培训内容:建立Watch类,用来仿效秒表跟踪消逝的时间。用构造函数将消逝时间的初值置为零。提供两个成员函数Start()与Stop(),分别打开与关闭计时器。
3、主要仪器:计算机
4、实验方法:上机编程
实验八 设计字符栈类
1、实验目的:掌握简单类的设计方法
2、实验技能培训内容:用Stack类,写一个函数LoadStack(),用来返回已经将字母表(a-z)入栈的堆栈。在调用函数中,将这个堆栈赋值给另一个对象,并证明它包含字母表。可以改变堆栈的尺寸,以便它大得足以支持字母表。
3、主要仪器:计算机
4、实验方法:上机编程
实验九 友元的使用方法
1、实验目的:掌握友元的使用方法
2、实验技能培训内容:求两数的平方差(友元函数说明)
3、主要仪器:计算机
4、实验方法:上机编程
实验十 访问权限
1、实验目的:掌握类成员的各种访问权限
2、实验技能培训内容:类成员的各种访问权限
3、主要仪器:计算机
4、实验方法:上机编程
实验十一 类的派生
1、实验目的: 掌握类的派生
2、实验技能培训内容:给出基类AreaClass(形状类),建立两个派生类Box(方形类)与Isosceles(等腰三角形类),让每个派生类包含一个函数Area(),分别用来返回方形与等腰三角形的面积。
3、主要仪器:计算机
4、实验方法:上机编程
实验十二 用类方法求解一元二次方程
1、实验目的: 掌握类的派生
2、实验技能培训内容:实现一个Complex类和一个Real类。将Real类定义为Complex类的子类。然后设计一个求解一元二次实系数方程的根的类Root。
3、主要仪器:计算机
4、实验方法:上机编程
实验十三 类继承中的构造
1、实验目的: 掌握类继承中的构造
2、实验技能培训内容:类继承中的构造方法
3、主要仪器:计算机
4、实验方法:上机编程
实验十四 类继承中的构造
1、实验目的: 掌握类继承中的构造
2、实验技能培训内容:类继承中的构造方法
3、主要仪器:计算机
4、实验方法:上机编程
实验十五 大学生类
1、实验目的: 掌握虚函数的使用
2、实验技能培训内容:设计一个大学的类系统,包括Student(学生),Professor(教师),Staff(职员)。另有一个类既作为学生又兼作助教的可作为派生类StudentStaff,它是由Student类和Staff类派生而来,另外定义一个父类DataRec作为上述类(子类)的基类。
3、主要仪器:计算机
4、实验方法:上机编程
责任撰写人:陈桂芬
第四篇:面向对象程序设计教学浅析的论文
摘要面向语言程序设计是计算机专业的必修基础理论课,在课程教学中,许多教师和学生都认为,计算机语言教学死板,不利于将知识转化为能力。本文结合作者的教学实践,对如何有效讲解面向对象程序设计这门课程进行了探悉,以期提高教学效率和效果。
关键词面向对象程序设计教学方法
面向对象程序设计是计算机专业的必修课程,开设此课程的目的是使学生掌握程序设计的基本方法并形成面向对象的程序设计思想,能够熟练地使用C++语言进行程序设计并具备独立调试程序的能力,为后继课程学习和应用打下坚实的基础。作者结合国内外优秀编程语言的教学方法和模式,不断地总结和积累经验并运用于教学实践之中,取得了较好的教学效果,有助于学生在有限的教学时间内,以最快最简单易懂的方式,扎实地掌握C++语言的内容。下面是作者在面向对象程序设计教学中的一些体会。
一、培养学习兴趣
为了使初学者能尽快地掌握计算机知识,进入计算机的应用领域,在课程讲授过程中,要特别注意培养学生的学习兴趣。初接触计算机时,很多学生感到新奇、好玩,这不能说是兴趣,只是一种好奇。随着课程的不断深入,大量的感念、规则、定义、要求和机械的格式出现,很容易使部分学生产生枯燥乏味的感觉。为了把学生的好奇转化为学习兴趣,授课时作者从具体问题入手,让学生先从感性上认识新知识,继而再讲授理论要点。
在首次课上,给学生找一些《高等数学》、《线性代数》等已学课程的问题,用算法语言来求解,使学生体会程序设计的用途和一种全新的解决问题的方法。在课程的进行中,引导学生学一种算法,就尝试在同行课程中应用。作者还经常介绍一些趣味性算例,如:“迷宫问题”等[1],来培养学生的学习兴趣,让大家积极主动地获取知识,打好程序设计基础。整个教学过程中应该把解题思路、方法和步骤当作授课的重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。
二、循序渐进讲解
绝大部分学生是第一次接触面向对象程序设计的概念,通俗、易懂的教学原则同样适合于这门课的教学。在课程讲授过程中,作者没有把重点放在语法规则的叙述上,而是放在算法和程序设计方法上,通常由几个例题引出一种语法规则,通过一些求解具体问题的程序来分析算法,介绍程序设计的基本方法和技巧,既注重教材的系统性、科学性,又注重易读性和启发性。从最简单的问题入手,一开始就介绍程序,要求学生编写程序,通过反复编写、运行程序来掌握语言规则和程序设计方法。同一个语法规则、同一种算法,在选择例题时也是由简到难,逐步呈现给学生。在学习上不要求学生死记语法规则,而是要求学生能把各个孤立的语句组织成一个有机的程序。注意培养学生良好的编程风格,让学生在编制程序过程中不断总结、巩固,达到学会方法、记住语法规则,提高设计技巧的目的。
三、改进教学方法
作者要求学生事先预习,实际上就是要求他们课前自学,讲课时以学生预习过为起点,只讲难点、重点,这样既给了学生思维分析的余地,又节省课时。这就要求必须精选教学内容,注意详略安排。如在讲到“类与对象”,“继承与派生”[2]这些关键性章节时就讲的特别精,使学生能够熟练掌握、理解透彻,而讲到“输入输出流”时,让学生做到一般了解即可。课堂上找一些程序设计较好、解题思路清晰的例题让学生自己读,找出精妙之处和不理解之处,对普遍性的问题共同讲解,个别问题课后解答。
作者特意地设置一些不同深浅的笔误和口误,马上让学生肯定对与错,以考查学生注意力集中的程度,提高他们的敏锐性和判别力。对有些问题,给出一种程序设计方法后,让学生讨论,还有没有其它的程序设计方法和思路,让他们发表意见,提出自己的解题思路和编程方法,给学生交流不同思路和观点的机会。这就要求老师既能引导又能放开,既有事先的精心备课,又有课堂上的因势利导,同时也可以从学生讨论中提出的问题来丰富教材内容,使得教与学相得益彰,共同进步。
四、习题与上机实践
做习题是复习所学内同的过程,也是深入学习的过程。作者每次课后给学生布置一些有代表性的习题,以巩固课堂上所学的内容。也通过学生的作业情况来了解学生对课程内容的掌握程度。对作业中比较普遍出现的错误,在下次课上当堂讲解,使得学生能对学过的东西理解透、掌握牢。作业中新颖的程序设计方法和思路,也当堂宣讲或作业批注,以鼓励创新型的学习方法。
每次实际上机操作前,都根据实验教学计划,有系统地布置上机实习作业,让学生明确上机任务,编写好上机调试的程序,使学生在每次上机实践中都有收获。作者让学生按照自己的姓名、学号命名自己的程序文件,调试成功后存入磁盘,并撰写实验报告,课程结束后结合学生的程序和实验报告来评定实验成绩。课程结束前作者坚持进行总结,把所学的内容作一个概要分析,前后联系起来,使学生对所学课程内容能够融汇贯通。
参考文献
1.刘璟,周玉龙.高级语言C++程序设计.第二版[M].北京:高等教育出版社,2006
2.GradyBooch著,冯博琴,冯岚,薛涛,等译.面向对象分析与设计[M].北京:机械工业出版社,2003
第五篇:“面向对象程序设计”课程教学设计探索
摘要:“面向对象程序设计”是大多数高等院校计算机专业的一门专业基础课,课程的教学效果直接影响学生对专业后续课程的学习。通过良好的教学设计可以将面向对象的思想和技术转化为学生的知识和能力,而课堂教学上的师生互动和实验环节的能力培养很好地支持了这一目标。
关键词:面向对象程序设计 教学设计 能力引言
“面向对象程序设计”是大多数高等院校计算机专业的一门专业基础课,该课程是为“以面向对象技术为核心思想”的后继专业课程奠定一个扎实的专业基础。但对面向对象思想方法的抽象性和复杂性以及载体语言的高难度,使之成为一门比较难以学习和掌握的课程,学生学习效果不佳,应用能力不强。因此在教学过程中应注重知识体系规划和教学过程设计,提高教学效果,促进学生面向对象技术应用能力的形成。
明确教学目标和教学内容
2.1教学目标
“面向对象程序设计”课程是计算机科学与技术专业教学计划中的专业必修课,也是人才培养计划中的专业基础课程。按照学科根本特征的要求,课程中对学生进行基础理论教育,强化学生“计算思维能力”和“面向对象思维能力”的培养;通过选择适当的知识载体,循序渐进地向学生传授包括基本问题求解过程和基本思路在内的学科方法论的内容,将流行的开发系统作为学生学习过程中的实践环境和学生自我扩展的内容来处理,使得学生既有基础,又有必要的实践经验,完成对后续课程教学的铺垫和引导作用。
2.2教学内容
根据专业的培养目标和课程在专业中的地位,将教学内容规范为三个部分。
①基础部分。主要讲授面向对象分析和设计的基础理论,课程用到的语言工具中的必要技术。
②核心部分。阐述面向对象技术的抽象性、封装性、继承性和多态性四个特征的设计规范,以及采用支持面向对象技术的语言实现这些特征的设计技术。
③提高部分。讲授面向对象核心技术的一些实际应用领域。
注重教学设计,培养学生分析、解决问题的能力
3.1激发学生兴趣
“面向对象程序设计”课程难度大,被学生列为最难学的课程之一。建立学生的学习信心很重要。法国教育家卢梭曾说:“教育的艺术是使学生喜欢你所教授的东西”,学生对教师教授的知识产生了兴趣,就有学习的积极性和主动性。为此,将学生的学习兴趣越早地融合到课程之中,就越会对他们能力的形成产生积极的促进作用。
要使学生感觉不太难,树立他们的学习信心,讲课时一定要抓重点,教学上有重点与没有重点是大不相同的,平均使用学生的精力和学时是绝对不可取的。本课程的重点是面向对象程序设计的关键技术,包括完善的封装、派生、多态、模板、异常处理机制和在构造函数中动态分配资源以及在析构函数中释放资源,这是面向对象程序设计的精髓。因此在教学中不是泛泛介绍描述工具的语法和框架,而是突出关键技术“精讲多练”,学生可花较少的精力获得较强的编程能力。另外,处理编程大局与编程细节的关系,教学中要给学生一个明确的设计规范,即采用什么样的准则和思路及运用怎样的工具去解决问题,采用业界普遍采用的三步方法:面向对象分析、面向对象设计、面向对象编程,来确定宏观思维,重点讲解程序的整体构造。此前提下,再讲解怎样用描述工具阐述算法,需要注意的是,课程的前几次课要讲清编程的细节,以后随着教学的推进而逐步淡化,防止学生陷入描述工具的语法现象之中不能自拔。通过这样的处理方式,一方面引发了学习兴趣,提高了学生的宏观思维能力和自学能力,另一方面也达到了将学生快速融入课程的目的。
3.2注重学生能力培养
“面向对象程序设计”课程应采用多媒体课堂授课的方式进行教学,在采用这种教学方式的教学过程中,教与学的矛盾在一段时间内也出现过。一方面,作为主讲教师在有限的学时内将知识体系传授给学生,必须借助一定的工具,投影仪器是首选工具,它能够很好的宏观展示程序整体结构,又能够很好地微观剖析局部算法,这对课堂教学中发挥教师的主导作用是非常有利的。另一方面,这种方式学生的反映是幻灯片切换快,笔记记不清楚,影响听课效果。经过摸索,较好做法是:
①优化多媒体资源
多媒体课件做的一定要简洁,不要用一些非必要元素干扰了主题,程序代码要采用链接的方式去完成,用记事本打开即可。这样就保证了幻灯片页数少,讲课时切换少,减少学生对堂课的主题的理解偏差,提高课堂效率和效果。
②以问题驱动课堂
课堂中,案例教学不好运作,案例太小,学生认为是教师自己编的假案例而没有兴趣思考和完成,案例太大,一次课的时间又讲不清楚,分几次课讲解又涉及到教学安排,牵扯太多的事情。问题驱动相比案例驱动,具有灵活的优点。因此,在教学中将问题有目的、有组织地提出,启发、引导学生的思维方向,迫使学生动脑思考解决办法,使他们逐渐习惯以专业的思维思考问题和解决问题。应当注意的是,问题的提出不仅仅在于正面,有时教师也会故意误导学生思维,当然要留有破绽,让学生去发现老师讲错了,这时学生一般马上会指出教师的错误,对学生的自信心和判断力培养有很好的帮助,当然这种氛围并不是在所有班级都能够达到良好效果,相比之下,集体素养较为活跃的班级更适合这种方式。
③作业内容要慎重
让学生去完成作业不是目的,也不是完成教学环节的任务。作业内容要考究,一定要留那种教材能够看到影子,可又看不到全部面目的题材,要迫使学生去图书馆或者到互联网上查阅资料,要求必须在作业上体现出查阅资料的特征。这样可以减少作业的抄袭,促进学生学习能力的提高。
④掌控实验进程,实现因材施教
面向对象程序设计中的理论需要语言工具将其在机器上实现出来。如果学生少做练习或是少上机实践,就只能算是学过知识,有经历,并不能形成能力。只有多阅读程序、多编写程序、多上机调试,才能将知识掌握并完成能力转化。实验教学中应逐步提高设计类和综合类实验的比例,以“任务”和“课题”的形式提出实验要求和具体的实验成果,事先没有参考答案可供借鉴,要求学生通过阅读教材和相关资料,掌握实验所涉及到的知识,通过综合利用这些知识来设计、开发并最终完成实验项目。实验项目的布置时间为实验课开始前的理论课,以便学生能够有充足的时间查阅资料,使学生通过这个查阅过程,提高针对问题域选材的能力。考虑到学生的层次,在每次实验课结束前的20分钟,教师都将本次实验项目的设计思路和设计方法进行快速讲解。让完成项目的学生对比一下自己的程序和教师的程序有没有差别,如果有,那么差别在那里,是优于教师的还是不如教师的;让没有完成任务(不论所做工作离项目的解决差多远)的学生听听解决问题的思路,看看完成任务的技法。这样能够兼顾不同层次的学生需求。真正地提高学生对理论知识的理解能力和应用能力。
课堂教学只能满足大部分处于中间段的同学,处于上游和下游的学生对课堂知识的理解会表现出饥饿和剩余现象。针对于这种情况,最好的解决方法就是充分利用实验课时间。针对学生调试程序过程中出现的问题答疑解惑,对尖子学生点拨即可,并可以追加选做题目,让他更进一步。一方面起榜样作用,刺激同学、引领同学;另一方面,要尽可能地发掘和培养尖子学生,保证专业竞赛人才的选拔。
3.3教师与学生的互动
教师与学生的互动体现在两个方面:
一方面,教师与学生间心灵和人格的沟通。教师们常说“教书育人”,可是学生不愿意听大道理,他们更愿意看教师的言行。学生会从任课教师对他们的课堂考勤是否严格、教学准备是否充分和教师对课堂的主导作用等方面观察教师。大学生一般都是上进的,如果教师做的好,那么学生会跟老师学.“教书育人”要从细节做起。
另一方面,师生互动的形式要体现出趣味性和鼓励性。由于知识含量和生活背景的不同,学生回答问题时肯定会对同一个问题有着不同的判断,应由教师来主导课堂的舆论倾向,找持有不同意见的代表来阐述自己的观点和理由,让学生知道每种判断的根据是什么,然后大家表决,自己支持哪一种观点,这时会发现有些同学对哪一种观点都没有支持。教师采取的做法应该是鼓励表达观点的,而不论你支持那种观点,施压于无观点的学生。促使学生思考问题,培养学生求真到底的科学精神。通过这样的方式,师生之间确立了良好的学术关系,也会使学生相信这个老师有着严肃的做人做事原则,学生就会对老师逐渐地建立信任感,进而愿意学习老师教授的知识。科学设置课程设计,提高应用能力
课程设计为学生提供一个既动手又动脑的独立实践机会,使学生将课本上的理论知识和实际有机地结合起来。
由于课程设计实践性比较强,而且还需要按照软件工程的标准去做,因此设计的时间就相对短些。考虑这些因素,“面向对象程序设计”的课程设计应注意以下几个方面。
4.1任务早布置
授课内容超过三分之二时,布置设计题目和要求,也可让学生自选题目。将学生分成小组,选出负责人,由负责人进行分工和协调。学生在后面的学习中,边学习,边完成分配的设计任务,逐渐实现课程设计的功能。从而在课程设计的时间内节省出大量的查阅资料时间,为程序整体设计和调试及撰写设计说明书赢得时间,为高质量地完成设计奠定基础。
4.2题目难度适中
由于教学目标和设计时间的限制,题目规模要保持在300―500行手工代码能够解决的范围内,难度要稍偏低,使学生能够有思路解决问题,能够在规定的时间内完成代码编制、输入、调试和形成相关文档,树立学生独立开发项目的信心。
4.3开发工具任选
可以使用实验课上使用的开发工具进行课程设计的项目开发,也可使用其它开发工具完成课程设计。在项目完成情况相同或接近的条件下,使用其它或免费开发工具完成课程设计的学生要酌情加分,以鼓励学生的创新精神。
结束语
具有合理知识架构和较强应用能力的计算机专业应用人才为培养的最终目标,“面向对象程序设计”课程的教学效果在很大程度上决定了这一目标的实现。
将课程内容融入到理论课、实验课和课程设计三个教学环节的设计给出了提高和保证 “面向对象程序设计”课程教学效果的方法,同时也为其它计算机专业课程的教学提供了一定的借鉴。在面向对象程序设计课程的教学中,还有许多具体的环节需要分析和解决,如教学过程中科研成果的引入对学生的影响,学生成绩的科学评定,课程教学与国际先进认证培训体系的结合等都是值得研究的问题。这也是教学设计中需要进一步研究和实践的问题
参考文献:
[1] 李秉璋,罗 烨,景征骏,黄海军,“面向对象程序设计”课程实践教学改革探索[j].计算机教育, 2009年18期,p12~13
[2] 葛建芳,在面向对象程序设计教学过程中培养学生面向对象编程思想[j].电脑知识与技术,2008年17期, p1493-1495
作者简介:
(方修丰,1974年生,吉林省白山市人,吉林农业科技学院,讲师。研究方向:计算机应用;黄海鸥,1980年生,吉林省通化人,吉林农业科技学院,助教。