《面向对象程序设计语言》(含实验)
教学大纲
一、课程基本信息
课程编号:2032106
课程英文名称:Object-oriented programming language
课程类型:学科专业主干课程(必修)
学时/学分:72/3
开课学期:第二学期
考核方式:闭卷考试
先修课程:计算机导论及计算机操作基础
选用教材:《C++ 程序设计教程》. 郑莉. 机械工业出版社,2001年7月.
主要参考书:
1.《《C++面向对象程序设计》. 谭浩强. 中国铁道出版社,2006年.
2.《C++ 程序设计教程. 钱能. 清华大学出版社,1999年4月.
3.《C++ Primer》. 第三版. Stanley B Lippman JoseeLajoie著. 潘爱民张丽译. 中国电力出版社,2005年2月.
二、课程性质、目的和任务
C++程序设计语言是计算机应用类专业的一门专业必修课。面向对象软件开发方法是吸收了软件工程领域的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。
本课程主要介绍面向对象程序设计的方法和 C++ 语言的基本概念。以 C++ 语言中的面向对象机制为主。学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握 C++ 的面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。
通过本课程的学习,可以使学生熟悉面向对象 C++ 语言发展的历史、为什么要面向对象、面向对象语言分类、 C++ 中支持面向对象的特点及面向对象的软件开发环境 Microsoft Visual C++ ,理解和掌握面向对象程序设计( OOP )的基本思想及基本概念:抽象、继承、封装、多态性,掌握使用 C++ 语言进行面向对象编程的技术:函数重载、运算符重载、内联函数、虚函数、友元函数,编写实现“继承”和“多态性”的 C++ 程序,初步认识 VC++ 应用程序设计方法及过程。
三、课程学时分配
四、理论课教学内容及要求
第一章概述(1学时)
【教学目的及要求】
掌握:C++程序的开发步骤和基本的输入输出。
熟悉:VC++6.0集成开发环境各组成部分及其操作方法。
【教学重点】
C++的开发步骤,基本输入输出,VC++6.0的开发环境的使用。
【教学难点】
基本输入输出和VC++6.0的开发环境。
【讲授内容】
第一节 C++的起源
第二节 C++语言与C语言的关系
第三节 C++语言与面向对象的程序设计
第四节 C++程序的开发步骤
第五节简单C++程序
第六节基本输入输出
第七节注释
第二章 C++语言编程基础(4学时)
【教学目的及要求】
掌握:基本的数据类型、变量与常量;数组;运算符和表达式;数据类型转换和控制语句。
熟悉:基本的数据类型、表达式、控制语句。
【教学重点】
基本的数据类型、变量与常量;数组;运算符和表达式;数据类型转换和控制语句。【教学难点】
数据类型、变量与常量;数组;运算符和表达式;控制语句。
【讲授内容】
第一节字符集
第二节词法记号和空白
一、词法记号
二、空白
第三节基本数据类型
第四节变量与常量
一、变量
二、常量
第五节枚举类型
第六节数组类型
第七节关键字typedef
第八节运算符
第九节表达式
第十节数据类型转换
第十一节控制语句
第十二节选择语句
第十三节循环语句
第十四节转移语句
第三章函数(4学时)
【教学目的及要求】
掌握:函数的定义调用、参数的传递、内联函数、缺省值、作用域、重载。
熟悉:系统函数、递归调用。
【教学重点】
函数的定义调用、参数的传递、内联函数、缺省值、作用域、重载。
【教学难点】
参数的传递,作用域,重载。
【讲授内容】
第一节函数的定义及调用
一、定义函数
二、声明函数
三、函数调用
四、函数调用的执行过程
第二节函数调用时参数的传递
第三节内联函数
第四节带默认形参值的函数
第五节作用域
一、作用域
二、局部变量与全局变量
第六节递归调用
第七节函数重载
第八节系统函数
第四章类与对象(4学时)
【教学目的及要求】
了解:面向对象的程序设计的相关概念。
掌握:类的声明、对象定义、构造函数析构函数、静态成员、友元、常对象、常成员。
熟悉:组合类、类的作用域及对象的生存期。
【教学重点】
类的声明、对象定义、构造函数析构函数、静态成员、友元、常对象、常成员。
【教学难点】
构造函数析构函数、静态成员、友元、常对象、常成员、组合类、类的作用域及对象的生存期。
【讲授内容】
第一节概述
第二节类的声明
第三节声明对象
第四节构造函数与析构函数
一、构造函数
二、析构函数
第五节类的组合
第六节静态成员
一、静态数据成员
二、静态成员函数
第七节友元
一、友元函数
二、友元类
第八节常对象、常成员函数与常数据成员
一、常对象
二、常数据成员
三、常成员函数
第九节类的作用域及对象的生存期
一、类作用域
二、对象生存期
第五章指针与引用(4学时)
【教学目的及要求】
掌握:指针的定义及使用、动态分配内存、指针访问数组元素、引用、按引用方式传递参数。
熟悉:字符串处理函数、指针与引用的关系。
【教学重点】
指针的定义及使用、动态分配内存、指针访问数组元素、引用、按引用方式传递参数。【教学难点】
指针的定义及使用、动态分配内存、指针访问数组元素、引用、按引用方式传递参数。【讲授内容】
第一节指针
一、数据存储
二、指针的声明及使用
三、指针运算
四、与对象有关的指针
五、void和const指针
第二节动态内存分配
一、运算符new
二、运算符delete
第三节指针与数组
一、用指针访问数组元素
二、指针数组与数组指针
第四节指针与函数
一、指针作为函数的参数
二、返回指针的函数
三、函数指针
四、带参数的主函数main()
第五节字符串处理函数
第六节引用
第七节引用与函数
一、把引用用作函数参数
二、返回引用的函数
三、拷贝构造函数与对象的引用调用
第八节指针与引用
第六章继承(6学时)
【教学目的及要求】
了解:继承的含义,掌握派生类的定义方法和实现;公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员。
掌握:单继承、多继承中的构造函数和析构函数、二义性问题。
【教学重点】
继承的含义,掌握派生类的定义方法和实现;公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员。
【教学难点】
单继承、多继承中的构造函数和析构函数、二义性问题。
【讲授内容】
第一节继承与派生
第二节单继承
一、公有派生
二、私有派生
三、保护派生
第三节多继承
第四节派生类的构造函数与析构函数
第五节二义性问题
第六节虚基类
第七节赋值兼容原则
第七章运算符重载(6学时)
【教学目的及要求】
掌握:运算符重载的概念;几个常用运算符的重载方法。
【教学重点】
常用运算符的重载方法。
【教学难点】
常用运算符的重载方法。
【讲授内容】
第一节运算符重载的语法
第二节一元运算符
第三节二元运算符的重载
第四节特殊的运算符
一、=运算符的重载
二、++和--运算符的重载
三、new 和delete运算符的重载
四、[]的重载
第八章多态与虚函数(2学时)【教学目的及要求】
了解:抽象类的概念。
理解:多态性概念。
掌握:虚函数和纯虚函数的概念。
【教学重点】
虚函数和纯虚函数的概念。
【教学难点】
虚函数和纯虚函数的使用。
【讲授内容】
第一节多态性概述
第二节虚函数
第三节抽象类
第四节虚析构函数
第五节综合实例
第九章容器类(2学时)(选讲)【教学目的及要求】
了解:常见的排序和查找算法。
理解:容器类的概念。
掌握:栈和队列模板。
【教学重点】
容器类、栈和队列模板。
【教学难点】
栈和队列模板。
【讲授内容】
第一节数组类与链表类
一、可直接访问的线性容器——数组类
二、顺序访问容器——链表类
第二节线性表、栈与队列
一、线性表
二、栈和队列
第三节排序与查找
一、排序
二、查找
第十章模板与标准模板库(4学时)
【教学目的及要求】
了解:标准模板库。
理解:模板的概念。
掌握:函数模板和类模板。
【教学重点】
函数模板和类模板。
【教学难点】
函数模板和类模板。
【讲授内容】
第一节函数模板
第二节类模板
第三节标准模板库
第十一章I/O流(4学时)
【教学目的及要求】
了解:C++的流,包括C++的预定义流;一般I/O流和文件流的关系;了解文件与文件流的关系;文件系统的概念,包括文件指针和关于文件的操作。
掌握:文件类的定义和相关操作的定义、使用方法;利用常用函数进行文件的打开、关闭、读写、定位等操作。
【教学重点】
C++的流,一般I/O流和文件流的关系;了解文件与文件流的关系;文件系统的概念。【教学难点】
文件类的定义和相关操作的定义、使用方法;利用常用函数进行文件的打开、关闭、读写、定位等操作。
【讲授内容】
第一节输入/输出流概述
第二节标准输入/输出流
第三节输入/输出格式控制
第四节文件输入/输出
第五节用户自定义类型的输入/输出
第六节综合实例
第十二章异常处理(2学时)
【教学目的及要求】
熟悉:标准库中的异常类;
掌握:异常处理的使用。
【教学重点】
异常处理的使用。
【教学难点】
异常的处理。
【讲授内容】
第一节异常处理的基本语法
第二节异常处理的使用
第三节标准C++库中的异常类
五、实验课教学内容及目的
实验项目设置及教学安排表
注:实验类型:基本操作型、演示型、验证型、综合型、设计型等。
实验类别:基础、专业基础、专业
实验要求:必做、选做
实验一概述(1学时)
【实验目的】
1.熟悉VC++6.0的开发环境。
2.掌握C++的基本语法和输入输出。
【实验要求】
?掌握VC++6.0的开发环境和基本的输入输出。
【实验题目】
1.打开VC++6.0的开发环境。
2.编辑C++源程序
3.链接运行源程序
实验二 C++语言编程基础(2学时)
【实验目的】
1.掌握C++的基本语法和基本控制语句。
【实验要求】
1.掌握基本数据类型、变量与常量;数组;运算符和表达式;数据类型转换和控制语句。
2.熟悉基本的数据类型、表达式、控制语句。
【实验题目】
1.写一条for语句,计数条件为n从100到200,步长为2;然后用while和do…while 语句完成同样的循环。
2.已知x、y两个变量,写一条简单的if语句,把较小的的值赋给原本值较大的变量。
3.编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。
4.C++有哪几种数据类型?简述其值域。编程显示你使用的计算机中的各种数据类型的字节数。
5.打印ASCII码为32~127的字符。
6.运行下面的程序,观察其输出,体会i++与++i的差别。
#include
int main()
{
int myAge = 39; // initialize two integers
int yourAge = 39;
cout << "I am: " << myAge << " years old.\n";
cout << "You are: " << yourAge << " years old\n";
myAge++; // postfix increment
++yourAge; // prefix increment
cout << "One year passes...\n";
cout << "I am: " << myAge << " years old.\n";
cout << "You are: " << yourAge << " years old\n";
cout << "Another year passes\n";
cout << "I am: " << myAge++ << " years old.\n";
cout << "You are: " << ++yourAge << " years old\n";
cout << "Let's print it again.\n";
cout << "I am: " << myAge << " years old.\n";
cout << "You are: " << yourAge << " years old\n";
return 0;
}
7.编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0~100)",接收输入后判断其等级,显示出来。
8.1)实现一个简单的菜单程序,运行时显示"Menu: A(dd) D(elete) S(ort) Q(uit),Select one:"提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示"数据已经增加、删除、排序。"输入为Q时程序结束。要求使用if … else 语句进行判断,用break、continue控制程序流程。(switch语句实现)
9.用穷举法找出1~100间的质数,显示出来。分别使用while,do-while,for循环语句实现。
实验三函数(2学时)
【实验目的】
掌握:函数的定义调用、参数的传递、内联函数、缺省值、作用域、重载。
熟悉:系统函数、递归调用。
【实验要求】
通过编程熟练掌握函数的相关概念和使用。
【实验题目】
1.编程求两个或三个操作数之和。
2.编程实现求两个实数和两个整数以及两个字符的最大数。
3.编写函数,参数为两个unsigned short int型数,返回值为第一个参数除以第二个参数的结果,数据类型为short int;如果第二个参数为0,则返回值为-1。在主程序中实现输入输出。
4.编写函数把华氏温度转换为摄氏温度,公式为:C = (F - 32) * 5/9; 在主程序中提示用户输入一个华氏温度,转化后输出相应的摄氏温度。
5.编写函数判断一个数是否是质数,在主程序中实现输入、输出。
6.编写函数求两个整数的最大公约数和最小公倍数。
7.用递归的方法编写函数求Fibonacci 级数,公式为
fib(n) = fib(n-1) + fib(n-2),n>2;
fib(1) = fib(2) = 1;观察递归调用的过程。
实验四类与对象(4学时)
【实验目的】
1.掌握:类的声明、对象定义、构造函数析构函数、静态成员、友元、常对象、常成员。
2.熟悉:组合类、类的作用域及对象的生存期。
【实验要求】
通过习题掌握类的使用和成员的使用。
【实验题目】
1.用结构体实现计算平均成绩(结构体的成员有stuna、stuno、fscore[3])。
2.定义一个描述学生基本情况的类,数据成员包括姓名、学号、C++成绩、英语成绩和数学成绩,成员函数包括输出数据、置姓名和学号、置三门课的成绩,求总成绩和平均成绩。
3.定义一个描述坐标点的Cpoint类,x和y表示点的坐标值。编写程序实现以下功能:
利用构造函数传递参数、并设其默认参数值为60和75,利用成员函数display输出这一默认值;利用成员函数setpoint将值修改为80和150,然后输出修改后的值。
4.给出主函数void main()
{
Ctest c;
c.init(200,60);
c.print();
}
给出类的定义,构造完整的程序。使程序输出为:200-60=140。
5.定义一个Dog 类,包含的age、weight等属性,以及对这些属性操作的方法。实现并测试这个类。
6.设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。
7.设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中"出生日期"定义为一个"日期"类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、带缺省形参值的成员函数、聚集。
8.定义一个Circle类,有数据成员半径Radius,成员函数GetArea(),计算圆的面积,构造一个Circle的对象进行测试。
9.定义一个tree类,有成员ages,成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
实验五指针与引用(4学时)
【实验目的】
掌握指针的定义及使用、动态分配内存、指针访问数组元素、引用、按引用方式传递参数。
【实验要求】
独立完成一下题目,理解指针和引用的区别,掌握内存的动态分配的使用,进一步加深对类的理解。
【实验步骤】
1.定义一个学生类Student,其中包括姓名和成绩,姓名用动态分配的字符数组存放,要
求在对象被撤销时,能释放动态数组所占的空间。
2.定义两个类Boy和Girl,它们都包含两个私有数据成员:姓名和电话号码,其中姓名成员采用动态方式存储。将Boy设置为Girl的友元类,使Boy类的对象能够显示和修改Girl 类对象的全部私有数据。
3.定义一个字符串类Str,其中包括两个数据成员:指向存放字符串的动态数组首地址的指针变量ps和字符串长度len,并定义如下成员函数:
(1)默认的无参构造函数,其功能是申请一个长度为80的动态数组,串长度为0;
(2)带参数p的构造函数,其功能是申请一个动态数组存放p所指的字符串;
(3)析构函数;(构造函数)
(4)显示字符串对象成员函数print();
(5)类Str的友元函数Concat(),用于连接两个字符串。
4. 实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。
5. 设计一个字符串类MyString,具有构造函数、析构函数、拷贝构造函数,重载运算符+、=、+=、[],尽可能地完善它,使之能满足各种需要。
6.定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性,包括chage_name()和display()等函数;display()使用cout语句显示姓名、街道地址、城市和邮编等属性,函数change_name()改变对象的姓名属性,实现并测试这个类。
实验六继承(4学时)
【实验目的】
了解:继承的含义,掌握派生类的定义方法和实现;公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员。
掌握:单继承、多继承中的构造函数和析构函数、二义性问题。
【实验要求】
掌握派生类的定义方法和实现;公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员。
【实验题目】
1.定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入输出的成员函
数。在此基础上派生出学生类CStudent(增加成绩)和教师类(增加教龄),并实现对学生和教师信息的输入输出。
2.把定义平面直角坐标系上的一个点CPoint作为基类,派生出描述一条直线的类CLine,
再派生出一个矩形类CRect。要求成员函数能求出两点间的距离、矩形的周长和面积。并在主函数中实现。
3. 一个类Shape,它用于两维几何图形,定义如下:
class Shape
{
public:
Shape(double x=0,double y=0):xC(x),yC(y)
{ }
void PrintCenter()const
{
cout< } protected: double:xC,yC; }; 从Shape类派生出两个类:圆(Circle)和正方形(Square),分别求出圆的面积和正方形的面积同时把中心点的坐标和圆的半径正方形的边长输出。 实验七运算符重载(4学时) 【实验目的】 掌握运算符重载的概念;几个常用运算符的重载方法。 【实验要求】 能够实现+、+=、=、<、<=、[]等运算符的重载。 【实验题目】 1.在实验五第三题基础上增加一个拷贝构造函数。 2.定义一个复数类CComplex,并定义能进行复数的加法、减法和乘法运算的三种成员函 数,并采用指向成员函数的指针数组来调用这三个成员函数。 3.堆栈是一种先进后出的存储结构,有两个端点:一个端点是固定的,称为栈底;一个端 点是活动的称为栈顶。操作只能在栈顶进行。建立一个栈首先要开辟堆栈空间,为了指示栈顶位置还要设置一个指针,称为栈顶指针。 栈有两种操作:push入栈,pop出栈。初建栈时,栈顶指针sp指向栈底。入栈时先向栈顶写入,在执行sp++(此时的栈顶始终是用于存放下一个元素的。出栈时,先执行sp――,再返回sp所指的内容。 class Stack { buffer[StackSize]; *sp; pop() push(); } 提示:栈还可以动态分配。 class Stack { int stacksize; long *buffer; long *sp; push(); pop(); } 4.请为String类定义下列重载运算符函数: (1)赋值运算符:= (2)连接运算符(连接两个字符串):+ (3)+= (4)关系运算符。 (5)去字符运算符:[](从字符床中的某一特殊位置提取单个字符。给出的位置超出字符串的最后一个字符时,返回空字符串)。 5.联想数组: zhang 1234567 li 2345678 zhao 3456789 qian 4567890 现按照姓名建立电话号码簿,并按姓名进行检索。 teltable[zhang]:1234567 teltable[li] :2345678 teltable[zhao] :3456789 teltable[qian] :4567890 用于建立电话号码簿、统计一篇文章的单词出现的频度等方面十分方便。 下面是数组类的接口: class Assc_array{ struct item{ char *name; long tel_num; }; item *table; //结构体数组 int max; //数组大小 int items; //数组内已有数据项数 Assc_array(){} Assc_array(int); long &operator[](char *); //下标运算符重载函数 void print(); }; 根据以下实现编写出完整的程序: Assc_array tel_numtable(6); tel_numtable[“zhang”]=1234567; tel_numtable[“li”]=2345678; tel_numtable[“zhao”]=3456789; tel_numtable[“qian”]=4567890; cout<<”zhang:”< ............ 实验八多态与虚函数(2学时) 【实验目的】 理解:多态性概念。 掌握:虚函数和纯虚函数的使用 【实验要求】 掌握虚函数的应用,所有实验题目调试通过。 【实验题目】 1.有一shape类表示抽象的形状,area()为求图形面积的成员函数: class shape { public: virtual float area()=0; virtual ~shape(); }; 要求从shape类派生出三角形(triangle)和矩形类rectangle和圆形类circle,并定义一个普通的求若干个不同形状图形的面积综合函数total()。 提示: total的函数原型: double total(shape *s[],int n) 2.某高校规定,正教授的月基本工资为4000元,课时补贴为80/课时;副教授的月基本工资为3000元,课时补贴为60/课时;讲师的月基本工资为2000元,课时补贴为40/课时;助教的月基本工资为1000元,课时补贴为30/课时.编写程序计算教师的月工资。采用纯虚函数实现。 class teacher { protected: int coursecout; public: teacher(int n); double monthsalary(); } 3. 抽象类shape的声明如下: class shape { public: virtual double perimeter(); virtual double area(); virtual double volumn(); void display()=0; } 实验九模板与标准模板库(2学时) 【实验目的】 1.理解:模板概念。 2.掌握:函数模板和类模板的使用 【实验要求】 掌握模板的应用,所有实验题目调试通过。 【实验题目】 1.编写一个函数模板min,返回3个数中的最小值,并使用int、float、char类型测试函数模板。 2.编写一个函数模板bubblesort,实现冒泡法排序,并使用int、float、char类型测试函数模板。 3.编写一个实现堆栈的类模板Stack,成员函数:push()、pop(),isempty()(判断栈空),isfull()(判断栈满),size()(返回堆栈中元素的个数),top()(返回栈顶元素),使用动态数组实现栈,使用一个int类型的ntop指示栈顶位置。(或指针指示),并测试。 4. 编写一个实现队列的类模板Queue,成员函数:equeue()(队尾添加数据)、dqueue ()(删除队首元素,并返回该元素),first()(返回队首元素)last()(返回队尾元素)isempty()(判断队空),isfull()(判断队满),size()(返回堆栈中元素的个数),并测试。参考课本245页。 实验十I/O流(4学时) 【实验目的】 掌握:文件类的定义和相关操作的定义、使用方法;利用常用函数进行文件的打开、关闭、读写、定位等操作。 【实验要求】 能利用常用函数打开、读写、关闭、定位文件。 【实验题目】 1. 使用I/O流以文本方式建立一个文件test1.txt,写入字符“已成功写入文件!”,用其它字处理程序(例如windows的记事本程序Notepad)打开,看看是否正确写入。 2.使用I/O流以文本方式打开上一题建立的文件test1.txt,读出其内容显示出来。 3. 定义一个dog类,包含体重和年龄两个成员变量及相应的成员函数,声明一个实例dog1,体重为5,年龄为10,使用I/O流把dog1的状态写入磁盘文件,再声明另一个实例dog2,通过读文件把dog1的状态赋给dog2。分别使用文本方式和二进制方式操作文件,看看结果有何不同;再看看磁盘文件的ASCII码有何不同。 4.编写程序实现如下功能:打开指定的一个文本文件,在每一行前加行号。 实验十一异常处理(2学时) 【实验目的】 1.熟悉:标准库中的异常类; 2.掌握:异常处理的使用。 【实验要求】 捕捉异常,测试并调试通过。 【实验题目】 1. 设计一个异常Exception抽象类,在此基础上派生一个OutOfMemory类响应内存不足,一个RangeError类响应输入的数不在指定范围内,实现并测试这几个类。 2.使用try、catch语句,在程序中用new分配内存时,如果操作未成功,则用try语句触发一个字符型异常,用catch语句捕获此异常。 3.定义一个异常类CException,有成员函数Reason(),用来显示异常的类型,定义函数fn1()触发异常,在主函数的try模块中调用fn1(),在catch模块中捕获异常,观察程序的执行流程。 六、教学方法与手段 在具有多媒体教学设备的计算机房上课,通过大屏幕展示教学/实验课的内容、要求和编程技巧,采用“课堂讲解和课后做实验”的方式进行实验教学。 第3章面向对象程序设计基础 第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) { studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){ 第1章面向对象软件开发概述 1.简述面向过程问题求解和面向对象问题求解的异同。试列举出面向对象和面向过程的编程语言各两种。 答:面向过程问题求解,以具体的解题过程为研究和实现的主体,其思维特点更接近于计算机;面向对象的问题求解,则是以“对象”为主体,“对象”是现实世界的实体或概念在计算机逻辑中的抽象表示,更接近于人的思维特点。 面向过程的编程语言:C,Pascal,Foratn。 面向对象的编程语言:C++,Java,C#。 2.简述对象、类和实体及它们之间的相互关系。尝试从日常接触到的人或物中抽象出对象的概念。 答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。类是同种对象的集合与抽象。类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。如果类是抽象的概念,如“电视机”,那么对象就是某一个具体的电视机,如“我家那台电视机”。 3.对象有哪些属性?什么是状态?什么是行为?二者之间有何关系?设有对象“学生”,试为这个对象设计状态与行为。 答:对象都具有状态和行为。 对象的状态又称为对象的静态属性,主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。 行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。 学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等; 学生的行为:自我介绍、入学注册、选课、参加比赛等。 4.对象间有哪三种关系?对象“班级”与对象“学生”是什么关系?对象“学生”与对象“大学生”是什么关系? 答:对象间可能存在的关系有三种:包含、继承和关联。 对象“班级”与对象“学生”是包含关系。 对象“学生”与对象“大学生”是继承关系。 5.有人说“父母”和“子女”之间是继承的关系。这种说法是否正确?为什么? 答:“父母”和“子女”之间不是面向对象意义上的“继承”关系。因为这里的继承关系是“is a”的关系,“男人”与“人”之间可以说是继承关系。 6.面向对象的软件开发包括哪些过程?OOA模型包括哪三个层次?OOD模型在OOA模型的基础上引入了哪些工作? 答:面向对象的软件开发过程可以大体划分为面向对象的分析(Object Oriented analysis,OOA)、面向对象的设计(Object oriented design,OOD)、面向对象的实现(Object oriented programming,OOP)三个阶段。 面向对象的分析的主要作用是明确用户的需求,并用标准化的面向对象的模型规范地表述这一需求,最后将形成面向对象的分析模型。 面向对象的设计将在OOA模型的基础上引入界面管理、任务管理和数据管理三部分的内容。 7.面向对象的程序设计方法有哪些优点? 答:由于对象的概念能够以更接近实际问题的原貌和实质的方式来表述和处理这些问题,所以面向对象的软件开发方法比以往面向过程的方法有更好的灵活性、可重用性和可扩展性,使得上述“分析—设计—实现”的开发过程也更加高效、快捷。 《语言学概论》教学大纲 一、课程说明 1.课程代码:101012191。 2.课程中文名称:语言学概论。 3.课程英文名称:Introduction to Linguistics。 4.课程总学时数: 36 ,其中理论环节学时数: 28 ,实验实践环节学时数: 8 。 5.课程学分数: 2 。 6.授课对象:汉语言文学专业(师范类)四年制本科。 7.本课程的性质、地位和作用 《语言学概论》是汉语言文学专业(师范类)四年制本科的一门专业基础课。讲授关于人类语言的本质、结构、发展、分类以及记录语言的符号系统——文字等方面的基础理论、基本知识和基本方法,以提高学生的语言理论水平和语言分析能力,为今后从事语言教学和语言研究工作奠定必要的基础。 二、教学基本要求 学习本课程应达到的目标:通过学习,初步树立科学的语言观,掌握普通语言学的基本理论,提高分析语言现象的能力。为此,在教学中有以下几点基本要求: 1.在介绍语言学的基本理论和基础知识的基础上,着重拓宽知识面,同时进一步论证、阐述基础理论,并加以延伸、扩展。 2.要多用实例传授现代语言的分析方法,切实提高学生解决实际语言问题的能力。阐述概念和理论时要避免抽象的演绎。 3.本课程是一门理论性和实践性都很强的课程,学习中要以辩证唯物主义为指导,遵循理论联系实际的原则,紧密结合语言实际,多分析,多做思考练习题,以求透彻理解,掌握有关知识。 三、学时分配 四、课程主要内容 第一章语言与语言学 【本章教学目的、要求】: 一、了解动物的“语言”与人类的语言的区别; 二、正确认识语言的性质; 三、了解语言的社会功能和思维功能; 【本章教学重点、难点】: 一、语言和言语的区别及联系 二、语言的性质(符号性、系统性) 三、组合关系和聚合关系 【本章节主要教学要点】: 第一节语言是人类特有的 一、人类的语言和动物的“语言”的区别 1.功能开放 2.构造灵巧 3.习得 二、关于语言产生的假说 《教师口语教程》教学大纲 一、教学目的 《教师口语教程》是研究教师口语运用规律的一门应用语言学科,是师范类各专业学生教师职业技能训练的必修课。 《教师口语教程》的开设是为了贯彻国家语言文字方针政策,为了深化课程改革,加强教师职业技能的训练,在理论指导下培养师范学生在教育、教学过程中口语运用的能力,提高未来教师的口语表达能力和水平。 二、教学要求 《教师口语教程》主要分为一般口语交际及训练、教学口语训练和教育口语训练几个部分。通过教学,要让学生理解口语交际的原则、对象、环境和表达基本形式,掌握教师口语的风格和教学过程中各种教学语言的要求,掌握教育口语的要求,并在理论的指导下进行训练,提高学生的口语表达,特别是教学过程中口语运用的能力。 三、教学内容 【 (一)确定教学内容的原则 1.时代性与前瞻性。教学内容要体现教育的发展趋势,全面、准确地体现《课程标准》的精神和要求; 2.基础性与专业性。教学内容既要体现口语交际的基础性,又要依据科学性、实用性和示范性等原则,以训练教师职业口语的运用能力为主要内容; 3.理论与实践相结合。教学内容和教学要求要符合中小学和幼儿教育、教学实际,符合教育对象的认知规律和语言训练规律; 4.可操作性。教学内容既注重理论,更注重训练,要有很强的操作性,便于学生理解与训练。 (二)教学内容要点 第一章一般口语交际及训练 教学目标:了解口语交际的原则、对象与环境;掌握口语表达的基本形式、 口语与态势语言表达的基本技巧、教师交际口语的技巧;训练倾听能力与思维能力、教师的交际口语。 \ 教学重点:口语交际的原则;口语与态势语言表达基本技巧;口语表达基本形式;教师交际口语的技巧。 教学难点:倾听、思维能力的训练;教师交际口语的综合训练。 教学内容: 1、口语交际原则 2、口语交际对象 3、口语交际环境 4、口语与态势语言表达基本技巧 5、口语表达基本形式 … 6、教师交际口语 7、倾听能力 8、思维能力 第二章教学口语训练 教学目标:了解教学口语的风格、教学口语的基本内容;熟练掌握导入语、讲授语、提问语、结束语、应变语的要求;能结合具体课堂灵活运用基本的教学口语。 教学重点:教学口语的风格;导入语、讲授语、提问语、结束语、应变语。 教学难点:各种教学口语的训练。 教学内容: | 1、教学口语概说 2、教学口语风格 3、导入语及训练 《普通语言学》教学大纲 一、课程名称: 《普通语言学》I, II 二、课程性质 该课程是英语专业蒙语授课高年级开的一门专业限制性选修课。以传授英语语言的基本理论和基本知识为任务,属于理论知识课,同时也反映语言学的最新发展。 三、教学目的 该课程旨在使学生对英语语言有一个系统、完整的理论认识,即对语言起源及内部各层次、语言在时空中的变异及其与思维、文化、社会、语境、文学等外部因素的关系有所了解。本课程的设置目的是使本科高年级的学生初步了解语言的基本观点和语言学的基本知识。英语专业的学生首先要掌握使用英语的能力,即听、说、读、写、译的能力,还要对人类语言具备一定的理性认识,懂得一些语言学的知识和语言理论是完全必要的。这有利于提高学生的语言修养,同时也有利于学生更好地掌握语言(包括母语和外语)。 四、课程教学原则与教学方法 教学中可遵循以下几项主要的原则: 1.比较全面、比较系统地讲解和介绍现代语言学这一领域的研究成果; 2.使学生了解一些最重要最有影响的语言学理论、原则和研究方法; 3.使学生从语言体系、言语活动和言语机制三方面认识语言的本质; 4通过学习加深学生对人类语言这一人类社会普遍现象的理性认识,并具备一定的运用语言学理论解释语言现象、解决具体语言问题的能力,提高其自身的语言修养和学习语言的能力。 教学方法: 语言学是现代科学体系和信息时代科学体系中的关键科学之一,现代语言学的研究发展较快,在其研究领域里获得了大量的成果,使得这门课程的内容量大面广。同时,这门课程的理论性较强,有些理论的抽象程度又比较高,涉及到的术语又特别多,需要学生理解、记忆的内容比较多,是一门难度较大的课程。由于本课程的教学对象是英语专业的学生,因此教材选用英语编写的教材,在讲解过程中基本上采用英语讲授,并全部采用英语的例子,这对于学生又增加了难度。 在教学方法上以讲解为主,可采用论述式讲解、概述式讲解,或将几种讲解方式相结合的教学方法。同时,辅以课内外讨论、思考题、作业等方式。本课程应正确处理基础知识与运用能力之间的关系,努力引导学生将识别、领会与运用联系起来,培养并提高学生分析和解决问题的能力。应正确处理重点和一般的关系,用语言学理论分析英语语言并整理语言素材。 五、课程时间与学分 本课程,共6学分,蒙生班开在第14,15学期,共68学时。 六、课程教学内容及学时分配第3章 面向对象程序设计基础
JAVA语言与面向对象程序设计课后习题答案
语言学概论教学大纲
《教师口语教程》教学大纲
《普通语言学》教学大纲-
(完整版)《面向对象程序设计》答案