《面向对象程序设计》实验指导书(实验二)

合集下载

面向对象程序设计实验指导

面向对象程序设计实验指导

面向对象程序设计实验指导本实验旨在让学生通过实践更好地理解面向对象程序设计的概念和思想,加深对于面向对象编程方法的理解与应用。

实验一:类和对象的基本概念1. 实验目标通过本实验,学生应了解类和对象的概念、掌握类的定义方法和对象的创建方法,学习成员变量和成员函数的声明与定义方法,并了解传统C程序与面向对象程序的区别。

2. 实验要求(1)学生应根据具体需求确定类的属性与方法等,设计一个简单的类;(3)学生需要通过对类的定义与对象的创建来比较传统C程序与面向对象程序的区别。

3. 实验内容在面向对象编程中,类是一种将数据和函数绑定在一起的结构体。

类定义了数据的形式,并且封装了这些数据的操作方法。

而对象是类的一个实例,它包含了类中的数据和方法,并可以提供对该对象的操作。

下面给出一个简单的Dog类的定义并创建对象。

```c++#include<iostream>using namespace std;void bark(){cout<<name<<" is barking!"<<endl;}};="Tom";mydog.age=3;cout<<<<" is "<<mydog.age<<" years old."<<endl;mydog.bark();return 0;}```在上述代码中,我们定义了一个Dog类,其中包含了名字和年龄两个成员变量,以及一个bark函数。

其中,name、age、bark都是类Dog的成员。

4. 实验思路传统C程序是面向过程编程的思想,即按照执行的流程编写代码,并将数据与函数分开定义和使用。

而面向对象编程则是将数据和函数封装在类中,可以更好地实现数据的安全性、复用性和可维护性。

实验二:继承、多态和封装通过本实验,学生应了解面向对象程序设计中继承、多态和封装三个重要概念的含义和应用,掌握继承与多态的实现方法,以及封装类的声明和定义方法。

实验二面向对象的程序设计

实验二面向对象的程序设计

实验二面向对象的程序设计(2课时)一、实验目的1 )熟悉类的定义和使用。

2)掌握创建对象的方法。

3)掌握只读字段的声明及使用。

4)学习定义和使用带参数构造函数。

5)熟悉访问权限控制符。

6)掌握属性的定义和使用。

7)掌握关键字this。

8)理解继承的概念,学会定义和使用派生类。

9)学会定义和使用接口。

10)掌握继承过程中的方法重写,区分它与方法隐藏、方法重载的不同。

11)掌握多态。

12)熟悉关键字base。

二、实验要求1)程序结构清晰、语句完整,包含有头文件和main函数;2)格式正确,语句采用缩进格式;3)设计子函数实现题目要求的功能;4)编译、连接通过,熟练使用命令键;5)运行结果正确,输入输出有提示,格式美观。

三、实验设备、材料和工具1)奔腾2计算机或以上机型2)C#.NET2008四、实验内容和步骤实验内容:1、创建一个描述图书信息的类并测试。

类中应保存有图书的书号、标题、作者、出版社、价格等信息。

步骤:1)定义图书类Book,Book类中包含isbn(书号)、title (标题)、author(作者)、press (出版社)、price (价格)等私有字段。

由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。

2)为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。

3)为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。

4)为Book类定义方法Show,Show方法用于显示图书的所有信息。

5)编写Main方法测试Book类,Main方法中分别使用上述两个构造函数创建Book对象。

2、根据几何图形的组合与继承关系定义用于描述点、直线、三角形、四边形、正方形、圆等几何图形的类(或结构)。

要求首先定义一个几何图形接口描述所有几何图形的共有特性,上述几何图形都必须现实该接口,并且其中用于描述点的类型最好定义为结构。

面向对象程序设计(Java)实验指导书

面向对象程序设计(Java)实验指导书
实验指导书
10 信息管理与信息系统 专业
雷金娥编 2012 年 9 月
目录
实验一 Java Application 程序的编辑、编译和运行 ..................................... 2 实验二 Java 程序设计基础.................................................................................. 4 实验三 类的封装 ................................................................................................... 5 实验四 类的继承 ..................................................................................................... 6 实验五 类的多态 ..................................................................................................... 8 实验六 接口与实现接口的类 ............................................................................. 12 实验七 图形用户界面设计 ................................................................................. 14 实验八 线程设计 ................................................................................................. 16 实验九 输入/输出流与文件操作......................................................................... 18 实验十 数据库应用设计 ..................................................................................... 20

实验二---类与对象的定义与使用

实验二---类与对象的定义与使用
}
}
void paixuYuwen() //按语文成绩排序;
{
Student str[50],*p,q;
int i,j;
p=stu;
for(p=stu,i=0;i<n;i++)
{ str[i]=*p;
*p++;
}
for(i=0;i<n-1;i++,p++)
{
for(j=0;j<n-1-igt;str[j+1].yuwen)
{
q=str[j];
str[j]=str[j+1];
str[j+1]=q;
}
}
}
for(i=0;i<n;i++)
{
printf("学号:%d姓名:%s数学:%.2f语文:%.2f英语:%.2f总成绩:%.2f平均成绩:%.2f\n",str[i].num,str[i].name,str[i].shuxue,str[i].yuwen,str[i].yingyu,str[i].zongcj,str[i].avg);
}
}
void paixuCJ()
{
int flag;
printf("1->按数学成绩排序\n2->按语文成绩排序\n3->按英语成绩排序\n4->按总成绩排序\n5->按总分\n");
printf("请选择成绩由低到高的排序方式:");
scanf("%d",&flag);
switch(flag){
case 0:paixuShuxue();break;

面向对象程序设计实验指导书

面向对象程序设计实验指导书

面向对象程序设计实验指导书目录前言: Visual C++实验环境介绍实验一、VC集成环境及C++程序的输入、调试和运行实验二、类和对象程序设计实验三、继承与派生程序设计实验四、类模板程序设计实验五、多态性程序设计实验六、文档/视图结构程序设计1实验七、文档/视图结构程序设计2实验八、图形设备接口和资源程序设计实验九、对话框程序设计实验十、控件程序设计实验十一、文档读写与打印程序设计实验十二、多文档界面程序程序设计前言:Visual C++实验环境介绍一、Visual C++简介Visual C++是Microsoft公司的Visual Studio开发工具箱中的一个C++程序开发包。

VisualStudio提供了一整套开发Internet和Windows应用程序的工具,包括VisualC++, Visual Basic, Visual Foxpro, Visual InterDev, Visual J++以及其他辅助工具,如代码管理工具Visual SourceSafe和联机帮助系统MSDN。

Visual C++包中除包括C++编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。

从最早期的1.0版本,发展到最新的6.0版本,Visual C++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。

最新的6.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。

Visual C++一般分为三个版本:学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。

实验中可以使用这三个版本的任意一种。

Visual C++集成开发环境(IDE)集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开发应用程序的软件系统。

Visual C++软件包中的Developer Studio 就是一个集成开发环境,它集成了各种开发工具和VC编译器。

《面向对象程序设计》实验指导书(实验二)

《面向对象程序设计》实验指导书(实验二)

《面向对象程序设计》实验指导书(实验二)实验二类与对象㈡——对象初始化、对象数据与指针一、实验目的1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类;2.理解thi指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法;3.熟悉类与对象的应用及编程。

二、实验学时课内实验:2课时课外练习:2课时三本实验涉及的新知识㈠构造函数与析构函数在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。

构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。

析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。

1.构造函数⑴构造函数的定义格式:类名(形参表){构造函数体}⑵构造函数的调用构造函数的调用是在定义对象时调用的。

格式:类名对象名(实参表);类名对象名=构造函数名(实参表);⑶说明①构造函数必须与类同名。

②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。

③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。

④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。

⑤不能象普通成员函数一样单独调用。

2.析构函数⑴析构函数的定义格式:~类名(void){析构函数体}⑵析构函数的调用析构函数是在撤销对象时自动调用的。

⑶说明⑴析构函数与构造函数的名字相同,但在其前面加上“~”,如果未定义析构函数,系统将自定义一个析构函数。

⑵析构函数没有参数、没有返回值,也不能重载。

⑶对于大多数类而言,可以缺省析构函数的定义,但是,当类的数据成员中使用指针变量,在构造函数中用new动态分配内存空间时,应显式定义析构函数,用delete释放已分配的内存空间。

面向对象程序设计实验指导书

面向对象程序设计实验指导书

实验指导书院系:数学与计算机专业:通信工程课程:面向对象程序设计编者:夏婷婷目录实验一 MATLAB的矩阵和数组的运算实验二二维平面图形的绘制与分割实验三特殊图形的设计实验四 MATLAB程序结构的应用和实现实验五线性预测谱估计的仿真实验一 MATLAB 的矩阵和数组的运算一、实验目的:1、学会矩阵和数组运算的基本规律2、会进行编程运算来检验结果二、实验内容:(1)产生6阶单位矩阵、4阶全1阵,4阶全0阵(2)产生三阶随机均匀分布矩阵A,求A 的数值3次幂运算, A 的矩阵3次幂运算(3)计算[13-(17-5)×8]+34+5e 值(4)产生三阶魔方阵A,对A 矩阵上下翻转、左右翻转各求一次。

(5)矩阵A=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1,23,1117,5,239,5,4,矩阵B=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡8,3,92,6,41,6,1,求A.*B,A*B 三、实验原理与方法:数组运算侧重数值之间的运算,在进行加、减时是数组中对应位置上数值进行加减,这与矩阵运算一致。

数组乘与矩阵乘意义完全不同。

矩阵乘遵循左侧矩阵的第一行与右侧矩阵第一列对应相乘然后相加,得到新矩阵里第一项,与此类推得到之后的项。

数组乘指对应位置的数值相乘。

特殊矩阵的产生通常有特定的函数指令,而这些指令通常是英文。

因此在运用时要牢记英文含义。

四、实验条件:计算机、MATLAB 软件、实验教材五、实验步骤:构思、分析、编译、调试、运行、数据记录六、 实验注意事项:注意数值运算与矩阵运算的物理意义和运算方法差别。

尤其是.*与*,.^与^的区别七、实验报告要求:格式工整,独立完成,注重分析,鼓励尝试实验二 二维平面图形的绘制与分割一、实验目的:1、了解二维平面图的绘制方法。

2、学会绘制不同色彩、线型的二维图。

3、掌握图形分割的方法。

多次叠绘图和多子图。

二、实验内容:(1)在0π2≤≤x 区间内,绘制曲线)2sin(25.0x e y x π-=,线型为星号,品红色。

面向对象程序设计实验指导书

面向对象程序设计实验指导书

⾯向对象程序设计实验指导书⾯向对象程序设计实验指导书厦门⼯学院电⼦信息⼯程系2013.8⽬录实验⼀:Microsoft Visual Studio 2008开发环境熟悉 (3)实验⼆:C++的类和对象 (6)实验三:C++的派⽣类与继承 (9)实验四:C++的多态性 (12)实验⼀:Microsoft Visual Studio 2008开发环境熟悉⼀、实验⽬的和要求1、熟悉Microsoft Visual Studio 2008开发环境;2、学会使⽤Microsoft Visual Studio 2008开发环境编辑、编译、链接和运⾏C++⽂件;3、初步了解C++源程序的基本结构,学会使⽤简单的输⼊输出操作;⼆、实验内容和步骤1、熟悉Microsoft Visual Studio 2008开发环境;(1)创建新项⽬:创建⽅法如图2.1所⽰:图2.1 创建新项⽬(2)选择Win32控制台应⽤程序,如图2.2所⽰:(3)在主cpp⽂件中编辑源程序,如图2.3所⽰:(4)进⾏C++⽂件的编译、链接和整个⼯程的运⾏;2、简单C++源程序的编写(1)输⼊以下程序,进⾏编译,如果有错误,则修改程序,直到没有错误为⽌,然后进⾏链接和运⾏,并分析运⾏结果;/*************************experiment 1-2-1.cpp*******************************/ #include "stdafx.h"#includeusing namespace std;int main(){void fun(int ,int&);int x,y;fun(4,y);cout<<”x+y=<return 0;}void fun(int m,int &n){n=m*5}/****************************************************************************/(2)编写C++编程风格程序experiment 1-2-2.cpp:计算将100元⼈民币兑换成1、2、5元的⼈民币,有多少种换法?(3)编写C++编程风格程序experiment 1-2-3.cpp:计算并输出两个整数、三个整数、两个双精度数、三个双精度数的最⼤值(使⽤函数重载);三、实验思考题1、列出experiment 1-2-1.cpp中出现的错误,对实验结果进⾏分析,讨论在函数参数中传递变量、传递引⽤及传递指针有何区别?2、附录完整的源程序experiment 1-2-2.cpp及其运⾏结果;要求源程序格式整齐,并对关键代码进⾏说明;3、附录完整的源程序experiment 1-2-3.cpp及其运⾏结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⑸在⑷的基础上,在程序的末尾加入:“delete []ob;”后,运行程序的输出结果为:
Constructing!
Constructing!
Destructing!
Destructing!
Press any key to continue
⑹比较⑶—⑸的输出结果,说明:

程序2(exp_202.cpp)
class score
{ private:
float sc[M],aver; //表示M科成绩的数组及平均成绩
int m; //表示实际考试科数
public:
score(void); //无参构造函数
score(float x[],int n); //构造函数重载——初始化成绩
void set_score(float x[],int n); //提供成绩
{ cout<<"constructing!"<<endl;}
~Myclass(void)
{ cout<<"destructing!"<<endl;}
};
void main()
{ Myclassob;}
问题:
⑴运行程序的输出结果为:
Constructing!
Destructing!
Press any key to continue
float get_score(int i) //得到第i科成绩
{return sc[i];}
float get_aver(void) //得到平均成绩
{return aver;}
void print_score(void);
};
score::score(void) //无参构造函数
{ int i;
3.拷贝构造函数(复制构造函数)
⑴拷贝构造函数的定义
格式:
类名([const]类名&对象名)
{拷贝构造函数体}
⑵拷贝构造函数的调用
拷贝构造函数是在对象间相互赋值时自动调用的。
格式:目标对象名=源对象名;
目标对象名(源对象名);
⑶说明
①拷贝构造函数无返回值,也不能有void。
②如果不定义拷贝构造函数,系统会自定义一个拷贝构造函数,实现对数据成员的拷贝。
⑶用指针使用用对象(或对象数组元素):对象指针->公有成员
3.对象引用
可以定义对象的引用,其引用名即为对象的别名。
4.this指针
⑴C++提供了一个特殊的对象指针,称为this指针。
⑵this指针为成员函数所属对象的指针,指向对象的首地址。
⑶this指针是一种隐含指针,隐含于每个类的成员函数中,即调用某成员函数时,都将自动产生一个this指针。
③默认拷贝构造函数是一种浅拷贝,当在类中定义有指针数据成员,用new分配内存空间时,通常应显示定义相应的拷贝构造函数。
㈡对象数组与对象指针
1.对象数组
⑴可以定义对象数组处理多个对象。
⑵可以用缺省参数构造函数为对象数组赋初值。
2.对象指针
可以使用指针来使用对象或对象数组。方法:
⑴定义对象指针;
⑵将指针指向某一对象(或对象数组);
1.构造函数
⑴构造函数的定义
格式:
类名(形参表)
{构造函数体}
⑵构造函数的调用
构造函数的调用是在定义对象时调用的。
格式:类名对象名(实参表);
类名对象名=构造函数名(实参表);
⑶说明
①构造函数必须与类同名。
②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。
{ int i;float sum=0;
m=n;
②;
aver=sum/m;
}
void score::print_score(void) //输出成绩、平均成绩
{ int i;
for(i=0;i<m;i++)
cout<<" "<<sc[i];
cout<<" "<<aver<<endl;
}
问题:
⑿完善类的定义,程序中,①处应改为:
㈡知识应用实验
1.分析下列程序,写出程序的输出结果,再上机运行程序验证其正确性,如果不正确,请认真分析出错原因。
程序3(exp_203.cpp)
#include<iostream.h>
class Myclass
{ private:
int a,b;
public:
Myclass(int x1=0,int x2=0)
⑷调用thiHale Waihona Puke 指针格式:this->成员名
⑸this指针通常采用隐式调用,即在类内部直呼其名。
⑹this指针是系统自定义的,用户不能再定义
㈢对象作为函数的参数
在C++中,可以用对象作为函数的形参或实参。主要有以下形式:
1.形参、实参均为对象,其参数的传递为对象的值,即为传值调用。
2.形参为对象指针,实参为对象指针或对象地址,其参数的传递为对象的地址,即传址调用。
{ cout<<"a="<<a<<" b="<<b<<endl;}
};
void main()
{ A ob1(20,30),ob;
A ob2(ob1);
ob2.print();
// ob=ob1;
// ob.print();
}
问题:
⑺运行该程序的输出结果为:
拷贝构造函数被调用!
a=20 b=30
Press any key to continue
{a=x1;b=x2;
cout<<"构造函数被调用!"<<endl;
}
~Myclass()
{cout<<"析构函数被调用!"<<endl;}
Myclass(Myclass &ob)
{ a=ob.a;b=ob.b;
cout<<"拷贝构造函数被调用!"<<endl;
}
void print(void)
{ cout<<"a="<<a<<" b="<<b<<endl;}
~person(void); //析构函数声明
person(const person &ob);//拷贝构造函数声明
char *get_name(void)
{ return name;}
void print_name(void);
};
①::person(char *pn) //定义构造函数,为name提供值
};
void func1(Myclass ob)
{ cout<<"func1: ";
ob.print();
}
void func2(Myclass *ob)
{ cout<<"func2: ";
ob->print();
}
void func3(Myclass &ob)
{ cout<<"func3: ";
ob.print();
③处应为strcpy(name,pn);;
④处应为new char[strlen()+1];;
⑤处应为strcpy(name,);;
程序5(exp_102.cpp)
//头文件“hscore.h”内容:定义一个成绩类:最多可以处理10科成绩及平均成绩
const int M=10;
Destructing!
Press any key to continue
⑷将main( )中的“Myclassob[2];”改为:“Myclass *ob;ob=new Myclass[2];”后,运行程序的输出结果为:
Constructing!
Constructing!
Press any key to continue
m=M;
for(i=0;i<m;i++)
sc[i]=0;
aver=0;
}
score::score(float x[],int n) //构造函数重载——初始化成绩
{ int i;float sum=0;
m=n;
①;
aver=sum/m;
}
void score::set_score(float x[],int n) //提供成绩
cout<<"main: ";ob.print();
}
2.完善、调试通过下列程序,并按所要求回答问题。
程序4(exp_204.cpp)
#include<iostream.h>
#include<string.h>
class person
{ private:
char *name;
public:
person(char *pn);//构造函数声明
实验二类与对象㈡——对象初始化、对象数据与指针
一、实验目的
1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类;
2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法;
相关文档
最新文档