面向对象程序设计(C--)实验指导-精简版-befine
《面向对象程序设计》实验指导书

实验一熟悉Visual Basic集成开发环境一、实验目的1.了解Visual Basic语言的功能特点。
2.熟悉Visual Basic的开发环境。
3.掌握建立、编辑和运行一个简单的VB应用程序的全过程。
二、实验内容创建一个“标准EXE”类型的应用程序。
要求学生建立、编辑、调试、运行和保存简单的VB程序。
三、实验步骤1.熟悉Visual Basic的开发环境。
(1)定制第一个开发环境。
1)单击“工程窗口”、“属性窗口”、“窗体布局窗口”及“工具箱窗口”右上角的关闭按钮2)单击Form,将Form窗口放到最大。
(2)定制第二个开发环境。
1)选择“视图”菜单中的“工程资源管理器”选项,显示“工程资源管理器”窗口。
2)选择“视图”菜单中的“属性窗口”选项,显示“属性窗口”。
3)选择“视图”菜单中的“窗体布局窗口”选项,显示“窗体布局窗口”。
4)选择“视图”菜单中的“工具箱”选项,显示“工具箱”窗口。
5)将“工程资源管理器”、“属性窗口”、“窗体布局窗口”、“工具箱”四个窗口用鼠标拖动到合适的位置。
(3)增加窗体。
单击“工程”菜单中的“添加窗体”选项,或者在“工程资源管理器”中的“工程”图标上单击鼠标右键,系统弹出一个快捷菜单,选择“添加窗体”选项,将在Form1的基础上添加一个窗体Form2。
(4)增加标准模块。
单击“工程”菜单中的“添加模块”选项,可增加一个标准模块Module1,再单击一次增加第二个便准模块Module2;或者在“工程资源管理器”中的“工程”图标上单击右键,系统弹出一个菜单,将鼠标移到“添加”菜单,选择“添加模块”选项,将在工程1种添加一个标准模块Module1,在选择“添加模块”选项,将在工程1种添加第二个标准模块Module2。
(5)增加类模块。
单击“工程”菜单中的“添加类模块”选项,或者在“工程资源管理器”中的“工程”图标上单击鼠标右键,系统弹出一个菜单,将鼠标移到“添加”菜单,选择“添加类模块”选项,将在工程1种添加一个类模块Class1。
《面向对象程序设计》实验指导书(实.doc

m=n;
①;
aver=sum/m;
}
void score::set_score(float x[],int n) //提供成绩
{ int i;float sum=0;
m=n;
②;
aver=sum/m;
}
void score::print_score(void) //输出成绩、平均成绩
score(void); //无参构造函数
score(float x[],int n); //构造函数重载——初始化成绩
void set_score(float x[],int n); //提供成绩
float get_score(int i) //得到第i科成绩
{return sc[i];}
float get_aver(void) //得到平均成绩
③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。
④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。
⑤不能象普通成员函数一样单独调用。
2.析构函数
⑴析构函数的定义
格式:
~类名(void)
③默认拷贝构造函数是一种浅拷贝,当在类中定义有指针数据成员,用new分配内存空间时,通常应显示定义相应的拷贝构造函数。
㈡对象数组与对象指针
1.对象数组
⑴可以定义对象数组处理多个对象。
⑵可以用缺省参数构造函数为对象数组赋初值。
2.对象指针
可以使用指针来使用对象或对象数组。方法:
⑴定义对象指针;
⑵将指针指向某一对象(或对象数组);
C面向对象程序设计---实验讲义共17页文档

实验过程: 实验心得:
实验九:静态成员、友元和运算符重 载(一)
❖ 实验目的:理解和熟悉静态成员、友元函数的使用;掌握简单 运算符重载的技术。
❖ 实验内容: 1)P300面,例题12.1(静态成员变量的初始化);P312面, 自测题12.3(友元)。 2)定义一个复数类,重载运算符+,-,*,/ 实验要求 :
二、用函数模板实现n个整型、实型、字符串的排序 实验要求 :
1)要求有输入提示和输出提示. 2)为你的程序加上注释,使得其清晰可读. 实验过程: 实验体会:
实验四:数组与结构
实验目的: 掌握数组与结构的设计及使用. 实验内容:
一、P154面,例题7.2(多维数组) 二、p158面,自测题7.3(字符串数组),P160面,例题7.4(利用数
实验十二:继承(二)
实验目的:熟练掌握利用继承机制的C++程序设计。 实验内容:
1)掌握虚类和纯虚函数的用法,编写一个基于含有纯虚函 数的基类,定义继承它的子类。 2)利用多态性设计电话卡继承关系,编程实现电话卡类 实验要求 : 1)要求有输入提示和输出提示 2)为你的程序加上注释,使得其清晰可读。 实验过程: 实验心得:
1)要求有输入提示和输出提示 2)为你的程序加上注释,使得其清晰可读
实验过程: 实验体会:
实验七:类与对象(高级)
实验目的:熟练掌握C++面向对象程序设计技术. 实验内容:
1)P240面,例题10.4(头文件,C++程序的规范结构:多文件). 2) P245面,例题(对象的创建);P249面,例题10.6 ( this指针). 3)P263面,自测题10.2(设计栈类). 实验要求 : 1)要求有输入提示和输出提示. 2)为你的程序加上注释,使得其清晰可读. 3)学会调试程序. 实验过程: 实验心得:
面向对象程序设计C__实验指导书

实验1Visual C++6.0开发环境应用入门(3学时)1.实验目的1.了解Visual C++6.0的特点。
1.熟悉Visual C++6.0的开发环境。
2.学习用Visual C++6.0编写标准的C++控制台程序。
2.实验任务使用Visual C++来建立一个非图形化的标准C++程序,编译、运行以下程序:#include<iostream.h>C++简单程序设计(3学时)void main(void){cout<<”Hello! \n”;cout<<”Welcome to c++! \n”;}3.实验步骤1.启动Visual C++6.0开发环境从“开始”菜单中选择“程序”| Microsoft Visual Studio 6.0 | Microsoft Visual C++6.0”,显示Visual C++6.0开发环境窗口。
2.创建一个项目(1)单击File 菜单中的New选项,显示New(新建)对话框(如图1-1所示)。
(2)单击Project (项目)标签,在Projects 选项卡中,选择Win32 Console Application(Win 32控制台应用程序)。
在Location(位置)文本框中指定一个路径,在Preject Name (项目名称)文本框中为项目输入一个名字lab1_1,单击OK按钮。
(3)在弹出的Win32 Console Application-Step 1 of 1对话框中选择An Empty Project单选项,然后单击Finish(完成)按钮(如图1-2所示)。
(4)最后在New Project Information 对话框中单击OK按钮,完成项目建立。
图1-1New对话框图1-2创建控制台应用程序第一步3.建立C++源程序文件(1)选择菜单命令Project |Add to Project | New, 弹出New对话框。
《面向对象程序设计》实验指导书(新)

《面向对象程序设计》实验指导书(新)《面向对象程序设计》实验指导书一、课程教学与实验教学计划学时比:48/16二、适用专业:信息管理与信息系统三、实验目的基本要求能够充分理解面向对象程序设计的思想和应用方法。
能够使用面向对象编程语言进行相应的程序设计和开发。
理解面向对象的基本思想、概念和特性以及面向对象的分析、建模、设计技术与方法。
掌握C++语言基本构成、类与对象、消息传递与函数、函数与运算符重载、继承性、多态性与虚拟函数、数据封装和隐藏及Windows 程序设计基础。
通过实验动手实践,使学生能够掌握面向对象程序设计的特征和基本思想,以及相应的具体实现和Windows程序设计基础知识。
四、实验内容实验一:循环控制(一)实验目的要求:熟悉VC++集成开发环境,学习使用控制台应用程序;创建工程,建立可执行文件并执行,观察结果。
掌握变量的声明和定义方法,掌握循环语句和条件语句的定义、作用和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.编程求1!+2!+3!+4!+…+12!。
2.编程求所有的3位数素数,且该数是对称的。
所谓“对称”是指一个数,倒过来还是该数。
例如,375不是对称数,因为倒过来变成了573。
实验二:递归函数(一)实验目的要求:掌握函数的概念和使用方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.用递归函数来求1!+2!+3!+…+12!。
2.用递归的方法建立一个函数int fibonacci(int n),求Fibonacci数列中第n个数的值。
实验三:用气泡法排序(一)实验目的要求:掌握文件读写的方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:建立一个文件,文件中包含一系列数,用这些数构成一个数组,并按照数值,为这个数组从小到大排序,把排序结果输出到另一个文件中。
面向对象程序设计实验指导书

x2=4 d1=5.6 d2=12 问题二:①处调用的是哪个函数? 答:调用的是 int max_def(int x, int y, int z) { int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } 问题三:②处的输出结果为什么是 d2=12,而不是 d2=12.3? 答:因为①处调用的是整型函数,d2 在此函数中被转换为整型,小数点后面被删除。 2.理解下面的程序并运行,然后回答问题。
7
} private:
int month; };
int day;
int year;
void main() {
CDate a; --------------------------.Set(10,15,2007) ; a.Print(); }
1.2 实验内容
1.2.1 程序阅读
1.理解下面的程序并运行,然后回答问题。
#include <iostream.h>
int max_def(int x, int y) {
return (x>y?x:y); } int max_def(int x, int y, int z) {
int temp = 0; return (temp=(x>y?x:y))>z?temp:z; } double max_def(double x, double y) { return (x>y?x:y); } int main() { int x1 = 0;
试设计一个复数类该类有实部和虚部两个成员数据数据成员采用私有访问权限同时该类有两个公有成员函数分别用来设定数据成员的值和输出数据成员的值在主函数中分别采用对象方式指针方式和引用方式来调用该类的公有函数并设置和输出数据成员的值
面向对象程序设计》C实验报告-32页精选文档

《面向对象程序设计》实验报告学院:专业:班级学号:姓名:学期:教师:实验一 C++基础练习实验目的和要求1.掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2.理解C++程序结构的特点。
3.熟悉C++程序基本的输入和输出操作。
4.掌握C++数据类型常量和变量以及修饰符的使用方法。
5.掌握函数定义、函数调用和函数说明的方法。
6.熟悉作用域运算符的功能和基本使用方法。
7.掌握C++内存的动态分配与释放方法。
8.理解引用的概念,掌握引用的使用方法。
实验内容和步骤1. 调试如下的代码并回答问题。
#include <iostream.h>void main()//First c++ programchar name[10];cout<<"please input your name:";cin>>name;cout<<"welcome "<<name<<endl;(1)C++的注释和C有何不同?答:C语言的注释有一种,用/*……….*/作为注释分界符号C++除保留了这种注释方式之外,还提供了一种更有效的注释方式,该注释以“//”开始,到行尾结束。
(2)C++的输入和输出所使用的函数及其相应头文件与C有何不同?答:在C中进行输入输出操作时,常使用函数scanf和printf。
C++除了可以照常使用这两个函数进行输入输出外,还增加了标准输入流对象cin和标准输出流对象cout来进行输入和输出。
Iostream是C++系统定义的一个头文件,在这个文件中声明了程序所需要的输入和输出操作的有关信息。
在C语言中头文件中用“.h”作为后缀,如stdio.h、math.h等。
2. 单步调试如下的代码并回答问题。
#include <iostream.h>inline int f(int x){ return 2*x*x+4*x+5; }inline double f(double x){ return 2*x*x+4*x+5; }void main(){ int x=5;double y=5.2;cout<<f(x)<<endl;cout<<f(y)<<endl;(1)inline的含义和作用是什么?答:含义:在函数说明前冠以关键字“inline”,该函数就被声明为内联函数,每当程序中出现对该函数的调用时C++编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参。
面向对象程序设计(C )实验指导_精简版_befine

面向对象程序设计(C++)实验指导一、实验环境本实验基于当前主流的面向对象开发平台,编码规范遵循主流的参考规范。
二、编程语言和开发工具C++语言,开发工具不限,建议使用Visual C++ 6.0版本三、编码规范(编码规范的要求)要求遵循良好的的程序设计习惯来设计实验和编写代码。
(注:如果你将程序的很多功能全部放在一个长长的main()主函数中实现,这样的程序设计和编码风格会被扣分,请将不同的功能模块分别用函数来实现。
)1.在实验过程中应注意培养规范的编码风格:2.标识符的命名应要求达到顾名思义的程度,一看就知道用来做什么;3.提供足够的注释,注释文字清晰明了;4.程序排版的要求:a)不同功能模块用空行分隔,使功能块一目了然;b)基本上一条语句一行;同一层次的语句统一缩进对齐。
四、实验见后文……五、注意事项所有实验要求独立完成,同学之间可以讨论,但严禁抄袭,若发现雷同,抄袭者和被抄袭者此次实验成绩均记零分。
实验一 C++基础 (2课时)实验目的和要求:1. 掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2. 理解C++程序结构的特点。
3. 熟悉C++程序的基本输入输出操作。
4. 掌握内联函数的使用方法。
5. 掌握函数重载的定义和使用方法。
6. 掌握C++内存的动态分配与释放方法。
7. 理解引用的概念,掌握引用的使用方法。
预习内容:cin/cout 的使用;new 和delete 的使用;函数重载;const 常量。
实验内容:1、用内联函数编写Fibonacci 级数,使用if 语句判断函数的出口,在程序中用cout 语句输出提示信息,Fibonacci 级数的公式为:⎩⎨⎧>-+-==2)2()1(2,11)(n n fib n fib n n fib 内联函数inline int fib(int n)。
2、程序Ex_Swap 实现数据交换。
分别用指针和引用作为函数mySwap 的形参,并通过重载int 、double 型变量值的交换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计(C++)实验指导一、实验环境本实验基于当前主流的面向对象开发平台,编码规范遵循主流的参考规范。
二、编程语言和开发工具C++语言,开发工具不限,建议使用Visual C++ 6.0版本三、编码规范(编码规范的要求)要求遵循良好的的程序设计习惯来设计实验和编写代码。
(注:如果你将程序的很多功能全部放在一个长长的main()主函数中实现,这样的程序设计和编码风格会被扣分,请将不同的功能模块分别用函数来实现。
)1.在实验过程中应注意培养规范的编码风格:2.标识符的命名应要求达到顾名思义的程度,一看就知道用来做什么;3.提供足够的注释,注释文字清晰明了;4.程序排版的要求:a)不同功能模块用空行分隔,使功能块一目了然;b)基本上一条语句一行;同一层次的语句统一缩进对齐。
四、实验见后文……五、注意事项所有实验要求独立完成,同学之间可以讨论,但严禁抄袭,若发现雷同,抄袭者和被抄袭者此次实验成绩均记零分。
实验一 C++基础 (2课时)实验目的和要求:1. 掌握C++程序的基本格式与规范,学会编写简单的C++程序。
2. 理解C++程序结构的特点。
3. 熟悉C++程序的基本输入输出操作。
4. 掌握内联函数的使用方法。
5. 掌握函数重载的定义和使用方法。
6. 掌握C++内存的动态分配与释放方法。
7. 理解引用的概念,掌握引用的使用方法。
预习内容:cin/cout 的使用;new 和delete 的使用;函数重载;const 常量。
实验内容:1、用内联函数编写Fibonacci 级数,使用if 语句判断函数的出口,在程序中用cout 语句输出提示信息,Fibonacci 级数的公式为:⎩⎨⎧>-+-==2)2()1(2,11)(n n fib n fib n n fib 内联函数inline int fib(int n)。
2、程序Ex_Swap 实现数据交换。
分别用指针和引用作为函数mySwap 的形参,并通过重载int 、double 型变量值的交换。
3、设计一个函数,形参是引用类型,要求输入三个整数(cin 输入,cout 提示输入),按从小到大排序后输出,编程完整的程序并测试。
4、程序Ex-Number 实现下述功能:由17人围成一个圈,编号1~17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1个人,求此人的编号(要求用new 和delete 来分配、释放所需内存空间)。
5、设计一个简单的计算器,能够进行加法、减法、乘法和除法功能(整数和浮点数)。
格式是先输入一个数,然后输入运算符号,输入另一个数字,最后输出结果。
(选做)实验二类与对象(一)(2课时)实验目的和要求:1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方法。
6.了解拷贝构造函数的方法。
预习内容类(数据成员和成员函数)的定义与访问权限设置;类的构造函数与析构函数的定义与使用。
实验内容:1、定义一个score类,其中包括私有数据成员和公有成员函数,即num 学号Math 高等数学成绩English 英语成绩Programming 程序设计成绩Inscore() 输入学号和各科成绩,并计算平均成绩showscore()输出学号和各科成绩使用score类,输入某班n个学生的学号和各科成绩,然后求各个学生的平均成绩,并列表输出学生的学号、各科成绩和平均成绩。
2、定义日期类型Date。
要求:(1)包含年月日数据成员;提供默认构造函数、带年月日参数的构造函数、和拷贝构造函数;定义set成员函数可以设置日期;日期加一天操作;定义intput成员函数,输入日期信息,输入格式为“YYYY-MM-DD”;定义print成员函数输出对象的日期。
(2)编写一个可运行的完整程序,构造3个日期类型的对象,并输出相应的日期信息。
(3) 实现日期类型的对象的加减法运算。
3、定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日最低价、当日开盘价和当日收盘价。
尽量发挥想像力,为该类设计成员函数。
4、在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。
实验三类与对象(二) (2课时)实验目的和要求:1.掌握静态成员的定义与使用。
2.理解对象指针的概念,学会使用指针引用对象。
3.了解this指针的工作方式。
4.掌握静态数据成员和静态成员函数的基本使用方法。
5.理解友元与友元函数的作用,掌握其使用方法。
6. 掌握类的接口与实现的分离技术的使用。
预习内容:指针引用对象;静态成员的定义与使用;友元的使用方法;实验内容:1.使用实验二中的股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。
编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。
用指针引用对象数组中的两个对象。
在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。
2.在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。
3.设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock 对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。
4.定义一个友元函数计算Stock对象的的当日开盘价是否高于当日收盘价。
若是,返回真,否则,返回假。
实验四派生类与继承(一) (2课时)实验目的和要求:1.理解类的继承的概念,能够定义和使用类的继承关系。
2.掌握派生类的声明与定义方法。
3.理解不同的继承类型预习内容:派生类的声明与定义;不同的继承类型的差异。
实验内容:1. 下面是一个含有派生类的程序:#include <iostream.h>class A {protected:// private:int m,n;public:void set(int a, int b) { m=a; n=b; }void show() { cout << m << " " << n <<endl; }};class B : public A {int s;public:void sets() { s=m*n ; }void shows() { cout << s << endl; }};void main(){ B obj;obj.set(2,3);obj.show();obj.sets();obj.shows();}在这个程序中,B类的函数sets()能否访问类A中的变量m和n?为什么?如果在类A中把m和n定义为私有成员,上面的程序能否通过编译?为什么?2.定义一个基类MyArray,基类中可以存放一组整数。
(实验程序注意保留,下次实验要用) class MyArray{public:MyArray(int leng);~ MyArray();void Input();void Display();Protected:int *alist; //指向动态申请的一组空间int length; //整数的个数};要求:(1)基类中有构造函数、析构函数、输入数据和输出数据的函数。
(2)定义一个SortArray继承自MyArray,在该类中定义函数实现排序功能。
(3)定义一个类ReArray继承自MyArray,在该类中定义函数实现逆转功能。
(4)定义一个类AverArray继承自MyArray,在该类中定义函数Aver()求解整数的平均值。
3. 建立一个建筑物类的层次体系。
其中,基类building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house 和办公楼类office;住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);办公楼类office包括私有数据成员offices(办公室数)和meetingrooms (会议室数)。
住宅类house和办公楼类office都含有构造函数和print函数,以分别用于对数据成员的初始化和输出。
在主函数中,实例化house类和office类对象并且将其数据输出。
实验五派生类与继承(二) (2课时)实验目的和要求:1.熟悉公有派生和私有派生的访问特性。
2. 掌握单继承与多继承3.学习虚基类在解决二义性问题中的作用。
预习内容:公有派生和私有派生的访问特性实验内容:1、定义NewArray类,同时继承了上次实验SortArray、ReArray和AverArray,使得NewArray类的对象同时具有排序、逆转和求平均值的功能。
在继承的过程中声明为虚基类,体会虚基类在解决二义性的作用。
2、定义一个动物(Animal)基类,具有Age、Weight等数据成员,由Animal类公有派生出鱼(Fish)类、陆地动物(TerrestrialAnimal)类。
Fish类有鳍(Fim)属性,TerrestrialAnimal类有腿(Leg)属性。
从Fish和TerrestrialAnimal公有派生出爬行动物(Reptile)类,在继承过程中,注意把Animal设置为虚基类。
如果不把Animal设置为虚基类,会有什么问题?编程试试看。
当一个类有多个类派生而来,每个类的父类最总都归为一个类时,这个时候创建这个最后的子类是就会产生内存中的多份拷贝,为类避免这种现象发生,就要求使用虚继承。
虚继承的格式:class 子类:virtual 继承方式父类实验六多态性(2课时)实验目的和要求:1、理解静态多态性和动态多态性。
2、掌握虚函数的定义与使用方法。
预习内容:静态多态性和动态多态性;虚函数的定义与使用方法。
实验内容:1、(1)定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。
(2)定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。
(3)定义Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。
2、定义一个动物园类Zoo,管理动物,根据下面的提示编写动物类及相关函数。
class zoo{public:zoo(unsigned int max); //构造函数,max为最多圈养的动物数~zoo(){delete residents;} //析构函数unsigned int Accept(Animal *d); //接收动物void ListAnimals(); //显示动物园所有的动物private:unsigned int maxanimals; //动物园最多能圈养的动物数unsigned int numanimals; //动物园当前圈养的动物数Animal **residents; //指向动物园圈养的动物对象的指针数组}3、编写程序Ex_Shape:定义一个类CShape,包含两个虚函数Area(用来计算面积)和SetData(用来设计形状大小)。