面向对象程序设计语言教学大纲_第1页
面向对象程序设计语言教学大纲_第2页
面向对象程序设计语言教学大纲_第3页
面向对象程序设计语言教学大纲_第4页
面向对象程序设计语言教学大纲_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE19《面向对象程序设计语言》(含实验)教学大纲一、课程基本信息课程编号:2032106课程英文名称:Object-orientedprogramminglanguage课程类型:学科专业主干课程(必修)学时/学分:72/3开课学期:第二学期考核方式:闭卷考试先修课程:计算机导论及计算机操作基础选用教材:《C++程序设计教程》.郑莉.机械工业出版社,2001年7月.主要参考书:1.《《C++面向对象程序设计》.谭浩强.中国铁道出版社,2006年.2.《C++程序设计教程.钱能.清华大学出版社,1999年4月.3.《C++Primer》.第三版.StanleyBLippmanJoseeLajoie著.潘爱民张丽译.中国电力出版社,2005年2月.二、课程性质、目的和任务C++程序设计语言是计算机应用类专业的一门专业必修课。面向对象软件开发方法是吸收了软件工程领域的概念和有效的方法而发展起来的一种软件开发方法。它集抽象性、封装性、继承性和多态性于一体,可以帮助人们开发出模块化、数据抽象程度高的,体现信息隐蔽、可复用、易修改、易扩充等特性的程序。本课程主要介绍面向对象程序设计的方法和C++语言的基本概念。以C++语言中的面向对象机制为主。学习者在学习过程中可以通过大量的程序实例和相关练习,逐步掌握C++的面向对象的功能,从而掌握面向对象程序设计的基本知识和基本技能。通过本课程的学习,可以使学生熟悉面向对象C++语言发展的历史、为什么要面向对象、面向对象语言分类、C++中支持面向对象的特点及面向对象的软件开发环境MicrosoftVisualC++,理解和掌握面向对象程序设计(OOP)的基本思想及基本概念:抽象、继承、封装、多态性,掌握使用C++语言进行面向对象编程的技术:函数重载、运算符重载、内联函数、虚函数、友元函数,编写实现“继承”和“多态性”的C++程序,初步认识VC++应用程序设计方法及过程。三、课程学时分配章序内容学时讲授实验课1概述112C++语言编程基础423函数424类与对象445指针与引用446继承647运算符重载648多态与虚函数229模板与标准模板库4210I/O流4411异常处理22合计4131四、理论课教学内容及要求第一章概述(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基本操作、验证专业必做2C++语言编程基础2基本操作、验证专业必做3函数2基本操作、验证专业必做4类与对象4基本操作、验证专业必做5指针与引用4基本操作、验证专业必做6继承

4基本操作、验证专业必做7运算符重载4基本操作、验证专业必做8多态与虚函数2基本操作、验证专业必做9模板与标准模板库2基本操作、验证专业必做10I/O流4基本操作、验证专业必做11异常处理2基本操作、验证专业必做合计31注:实验类型:基本操作型、演示型、验证型、综合型、设计型等。实验类别:基础、专业基础、专业实验要求:必做、选做实验一概述(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<iostream.h>intmain(){intmyAge=39;//initializetwointegersintyourAge=39;cout<<"Iam:"<<myAge<<"yearsold.\n";cout<<"Youare:"<<yourAge<<"yearsold\n";myAge++;//postfixincrement++yourAge;//prefixincrementcout<<"Oneyearpasses...\n";cout<<"Iam:"<<myAge<<"yearsold.\n";cout<<"Youare:"<<yourAge<<"yearsold\n";cout<<"Anotheryearpasses\n";cout<<"Iam:"<<myAge++<<"yearsold.\n";cout<<"Youare:"<<++yourAge<<"yearsold\n";cout<<"Let'sprintitagain.\n";cout<<"Iam:"<<myAge<<"yearsold.\n";cout<<"Youare:"<<yourAge<<"yearsold\n";return0;}7.编写一个完整的程序,运行时向用户提问"你考试考了多少分?(0~100)",接收输入后判断其等级,显示出来。8.1)实现一个简单的菜单程序,运行时显示"Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:"提示用户输入,A表示增加,D表示删除,S表示排序,Q表示退出,输入为A、D、S时分别提示"数据已经增加、删除、排序。"输入为Q时程序结束。要求使用if…else语句进行判断,用break、continue控制程序流程。(switch语句实现)9.用穷举法找出1~100间的质数,显示出来。分别使用while,do-while,for循环语句实现。实验三函数(2学时)【实验目的】掌握:函数的定义调用、参数的传递、内联函数、缺省值、作用域、重载。熟悉:系统函数、递归调用。【实验要求】通过编程熟练掌握函数的相关概念和使用。【实验题目】1.编程求两个或三个操作数之和。2.编程实现求两个实数和两个整数以及两个字符的最大数。3.编写函数,参数为两个unsignedshortint型数,返回值为第一个参数除以第二个参数的结果,数据类型为shortint;如果第二个参数为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.给出主函数voidmain(){Ctestc;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(intyears)对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,它用于两维几何图形,定义如下:classShape{public:Shape(doublex=0,doubley=0):xC(x),yC(y){}voidPrintCenter()const{cout<<xC<<“”<<yC<<end1;}protected:double:xC,yC;};从Shape类派生出两个类:圆(Circle)和正方形(Square),分别求出圆的面积和正方形的面积同时把中心点的坐标和圆的半径正方形的边长输出。实验七运算符重载(4学时)【实验目的】掌握运算符重载的概念;几个常用运算符的重载方法。【实验要求】能够实现+、+=、=、<、<=、[]等运算符的重载。【实验题目】1.在实验五第三题基础上增加一个拷贝构造函数。2.定义一个复数类CComplex,并定义能进行复数的加法、减法和乘法运算的三种成员函数,并采用指向成员函数的指针数组来调用这三个成员函数。3.堆栈是一种先进后出的存储结构,有两个端点:一个端点是固定的,称为栈底;一个端点是活动的称为栈顶。操作只能在栈顶进行。建立一个栈首先要开辟堆栈空间,为了指示栈顶位置还要设置一个指针,称为栈顶指针。栈有两种操作:push入栈,pop出栈。初建栈时,栈顶指针sp指向栈底。入栈时先向栈顶写入,在执行sp++(此时的栈顶始终是用于存放下一个元素的。出栈时,先执行sp――,再返回sp所指的内容。classStack{buffer[StackSize];*sp;pop()push();}提示:栈还可以动态分配。classStack{intstacksize;long*buffer;long*sp;push();pop();}4.请为String类定义下列重载运算符函数:(1)赋值运算符:=(2)连接运算符(连接两个字符串):+(3)+=(4)关系运算符。(5)去字符运算符:[](从字符床中的某一特殊位置提取单个字符。给出的位置超出字符串的最后一个字符时,返回空字符串)。5.联想数组:zhang1234567li2345678zhao3456789qian4567890现按照姓名建立电话号码簿,并按姓名进行检索。teltable[zhang]:1234567teltable[li]:2345678teltable[zhao]:3456789teltable[qian]:4567890用于建立电话号码簿、统计一篇文章的单词出现的频度等方面十分方便。下面是数组类的接口:classAssc_array{structitem{char*name;longtel_num;};item*table;//结构体数组intmax;//数组大小intitems;//数组内已有数据项数public:Assc_array(){}Assc_array(int);long&operator[](char*);//下标运算符重载函数voidprint();};根据以下实现编写出完整的程序:Assc_arraytel_numtable(6);tel_numtable[“zhang”]=1234567;tel_numtable[“li”]=2345678;tel_numtable[“zhao”]=3456789;tel_numtable[“qian”]=4567890;cout<<”zhang:”<<tel_numble[“zhang”];实验八多态与虚函数(2学时)【实验目的】理解:多态性概念。掌握:虚函数和纯虚函数的使用【实验要求】掌握虚函数的应用,所有实验题目调试通过。【实验题目】1.有一shape类表示抽象的形状,area()为求图形面积的成员函数:classshape{public:virtualfloatarea()=0;virtual~shape();};要求从shape类派生出三角形(triangle)和矩形类rectangle和圆形类circle,并定义一个普通的求若干个不同形状图形的面积综合函数total()。提示:total的函数原型:doubletotal(shape*s[],intn)2.某高校规定,正教授的月基本工资为4000元,课时补贴为80/课时;副教授的月基本工资为3000元,课时补贴为60/课时;讲师的月基本工资为2000元,课时补贴为40/课时;助教的月基本工资为1000元,课时补贴为30/课时.编写程序计算教师的月工资。采用纯虚函数实现。提示:classteacher{protected:intcoursecout;public:teacher(intn);doublemonthsalary();shapecircle(圆形)shapecircle(圆形)square(正方形)diamond(菱形)cylinder(圆柱体)}3.有一类的继承关系如图所示:抽象类shape的声明如下:classshape{public:virtualdoubleperimeter();virtualdoublearea();virtualdoublevolumn();voiddisplay()=0;}实验九模板与标准模板库(2学时)【实验目的】1.理解:模板概念。2.掌握:函数模板和类模板的使用【实验要求】掌握模板的应用,所有实验题目调试通过。【实验题目】1.编写一个函数模板min,返回3个数中的最小值,并使用int、float、char

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论