c++类和对象实验报告
C 类和对象实验报告
C 类和对象实验报告C++类和对象实验报告引言:C++是一种面向对象的编程语言,它提供了类和对象的概念,使得程序的设计和实现更加模块化和可重用。
本实验旨在通过实际编程操作,深入理解C++中类和对象的概念,并掌握其基本用法。
实验目的:1. 理解类和对象的概念;2. 掌握类的定义和对象的创建方法;3. 熟悉类的成员变量和成员函数的使用;4. 学会通过对象调用成员函数实现数据的封装和操作。
实验内容:1. 类的定义和对象的创建在C++中,通过关键字class可以定义一个类。
类定义了一种数据类型,它包含了数据成员和成员函数。
我们可以通过类来创建对象,即类的实例化。
例如,我们可以定义一个类Person,其中包含姓名和年龄两个数据成员,以及一个显示个人信息的成员函数。
然后通过Person类来创建多个对象,每个对象都有自己的姓名和年龄。
2. 成员变量和成员函数的使用类的成员变量是类的数据成员,用于存储对象的状态信息。
成员函数是类的操作成员,用于实现对对象的操作和功能。
在类的成员函数中,可以通过this指针来访问对象的成员变量和成员函数。
this指针指向当前对象的地址,可以用于区分不同对象的成员变量和成员函数。
例如,在Person类的成员函数中,可以通过this指针来访问当前对象的姓名和年龄。
3. 数据的封装和操作类的一个重要特性是数据的封装,即将数据和操作数据的函数封装在一起,形成一个完整的类。
通过对象调用成员函数,可以实现对数据的操作。
例如,在Person类中,我们可以定义一个设置姓名的成员函数set_name()和一个获取姓名的成员函数get_name()。
通过对象调用这两个成员函数,可以设置和获取对象的姓名。
实验结果:通过实验,我们成功定义了一个Person类,并创建了多个Person对象。
通过对象调用成员函数,实现了对对象的操作和数据的封装。
通过实验,我们深入理解了C++中类和对象的概念,掌握了类的定义和对象的创建方法,熟悉了类的成员变量和成员函数的使用,学会了通过对象调用成员函数实现数据的封装和操作。
第二章类与对象实验报告
#include"iostream' Using namespace std; #include"t.h'
//CPP 文件
3
int main() { T k[5]={1,2,3,4,5};//对象数组 T *c=new T();//对象指针
return 0; }
T::T(int a,int b) { cout<<"constructors....."<<endl; x=a; y=b; } T::~T() { cout<<"destructors....."<<endl; }
{ private: Int x;int y; Protected: Public: T(int a,int b); ~T(); friend class K }; Class K { private: Int a;int b; Protected: Public: Void input(); Void print(); };
5
201108240912课程名称面向对象程序设计c实验项目类与对象的建立应用实验项目类型指导教师陈友军一实验目的1
面向对象程序设计 C++实验报告书
班级: 2011 级 9 班
姓名:
郝小军
学号:201108240912
实验项目类型
课程名称
面向对象程序设计 C++
实验项目
类与对象的建立应用
验 演 综 设 证 示 合 计
指导教师 一、实验目的
陈友军
成
绩
√
1:熟识类和对象的定义; 2:熟练的运用构造函数和析构函数; 3:通过构造函数对对象赋值; 4:熟练内存动态分配的运用; 5:熟练对对象和数组指针的运用; 6:友元函数,并在其中建立一个类; 2:设置类的定义格式; 3:定义构造函数和析构函数; 4:建立一个源文件,开始录入; 5:在主函数中,通过构造函数对对象进行赋值; 6:友元函数对私有保护成员进行访问;
类与对象的实验报告
类与对象的实验报告类与对象的实验报告引言:在计算机科学领域,类与对象是面向对象编程(Object-Oriented Programming,简称OOP)的核心概念之一。
类是一种抽象的数据类型,用于描述具有相同属性和行为的对象集合。
对象则是类的实例,具体化了类的属性和行为。
本实验旨在通过编写一个简单的类与对象的程序,深入理解类与对象的概念及其在编程中的应用。
实验过程:1. 定义一个类:在这个实验中,我们以动物为例,定义了一个名为Animal的类。
该类具有以下属性和行为:- 属性:名称、年龄、种类- 行为:吃、睡、叫2. 创建对象:在主程序中,我们创建了两个Animal对象,分别代表一只狗和一只猫。
通过调用构造函数,为对象的属性赋值。
3. 调用对象的方法:我们通过调用对象的方法,模拟了动物的行为。
例如,我们调用了eat()方法,让动物吃东西;调用了sleep()方法,让动物睡觉;调用了make_sound()方法,让动物发出叫声。
4. 修改对象属性:我们还演示了如何修改对象的属性。
通过调用set_age()方法,我们改变了动物的年龄;通过调用set_type()方法,我们改变了动物的种类。
实验结果:通过运行程序,我们观察到以下结果:- 狗的名称是"旺财",年龄是3岁,种类是"狗"。
狗吃骨头,睡觉时打呼噜,发出汪汪的叫声。
- 猫的名称是"咪咪",年龄是2岁,种类是"猫"。
猫吃鱼,睡觉时打呼噜,发出喵喵的叫声。
- 经过修改后,狗的年龄变为5岁,种类变为"藏獒";猫的年龄变为3岁,种类变为"波斯猫"。
讨论与分析:通过这个实验,我们深入理解了类与对象的概念及其在编程中的应用。
类是一种抽象的模板,用于描述具有相似属性和行为的对象集合。
对象是类的实例,具体化了类的属性和行为。
通过定义类和创建对象,我们可以更好地组织和管理程序的代码。
C实验报告第四章类与对象
C++实验报告实验4 类与对象一、实验目的1、掌握类的声明和使用2、掌握类的声明和对象的声明3、复习具有不同访问属性的成员的访问方式4、观察构造函数和析构函数的执行过程5、学习类的组合使用方法6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序二、实验任务1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。
观察构造函数好析构函数的调用顺序。
2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
3、设计一个用于人事管理的People类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。
其中出生日期声明为一个日期类内嵌子对象。
用成员函数实现对人员信息的录入和显示。
要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。
三、实验内容任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。
初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。
在用debug单步调试后,明白其中道理。
源程序:b.c.d.3、执行对象的run()和stop()4、调用析构函数所遇问题:1、枚举类型的定义不知如何书写,不能准确理解枚举的意义,从而,导致开始便出现错误。
2、创建带参数的对象则调用带参数的构造函数,结果清晰明了,不用刻意添加默认构造函数。
C++类和对象实验报告
计算机科学与技术实验报告实验二类和对象(1)姓名:易XX 班级:计科二班学号:2015110121实验目的:深入理解类和对象,学会定义类,申明私有、公有变量,学会定义对象,并调用成员函数,解决实际问题。
实验内容:(一)、题目要求:定义一个描述角度的类CAngle,包含的内容如下:(1)私有成员变量value,表示角度,类型为double;(2)公有成员变量SetValue,实现功能是使用形参为value赋值。
声明为:viod SetValue(double);(3)公有成员函数GetCos,实现功能计算余弦值,并作为返回值返回。
声明为 double GetCos();编程实现如下功能:定义一个Cangle类的对象deg,调用成员函数设置deg的角度为30度,调用成员函数计算并输出deg的余弦值。
代码:#include<iostream>#include<cmath>using namespace std;#define PI 3.1415 //定义宏常量PIclass CAngle{double value; //定义角度public:void Setvalue(double x){value =x/180*PI; //把角度转化为弧度}double Getcos(){return ( cos(value) ); //计算cos值}};int main(){CAngle deg; //定义一个Cangle类的对象degdeg.Setvalue(30);cout<<deg.Getcos()<<endl;return 0;}运行结果:(二)、题目要求:定义一个网上购书订单类BookOrder,包含的内容:(1)私有成员变量BookID,表示图书编号,类型为char[6];(2)私有成员变量Quantity,表示图书的数量,类型为int;(3)公有成员变量Price,表示图书的单价,类型为double;(4)公有函数成员BookInit,实现使用参数为成员变量赋值,声明为viod BookInit(char*,int,double);(5)公有成员函数BookInfo,实现显示订单信息,包括图书编号、单价、数量、总价。
面向对象程序设计(C++)实验一--类和对象
实验一类和对象一、实验目的:掌握类的设计和对象的创建及相关知识点如对象数组、类聚合、友元函数、静态成员。
二、实验内容:1、设计圆类,求两个圆的位置关系;2、设计圆类和直线类,求直线与圆的位置关系;3、设计学生类,求某班学生成绩的最高分、最低分及平均分;4、设计部门类和教师类,其中部门类成员为教师类的子对象;5、设计家庭银行账户类,其中账户资金为静态数据成员,为家庭成员共享;6、设计复数类,友元函数实现复数的加减。
三、实验过程:1、根据实验题目确定需要设计哪些类、各类中包含哪些数据成员和函数成员,设计各成员的访问权限,设计数据成员的数据类型,设计函数成员的函数原型;2、给出类设计的程序实现,特别要注意重载构造函数的实现;3、在主函数中完成题目中的逻辑,一般情况下需要创建相关类的对象,通过对象对成员函数的调用或者通过对象指针对成员函数的调用完成相应的功能。
四、参考程序代码:1、设计圆类,求两个圆的位置关系#include <iostream>#include <math.h>using namespace std;class Circle{private:float a,b,r;public:Circle(float c,float d,float e){a=c;b=d; r=e;}friend void position(Circle &,Circle &);};void position(Circle &c1,Circle &c2){float n,m,p;p=sqrt((c1.a-c2.a)*(c1.a-c2.a)+(c1.b-c2.b)*(c1.b-c2.b)); n=fabs(c1.r-c2.r);m=c1.r+c2.r;if(p>m)cout << "相离";if(p==m)cout << "相切";if(p<m)cout << "相交";}int main(){float a,b,c,d,e,f;cin >> a >> b >> c >> d >> e >> f ;Circle c1(a,b,c),c2(d,e,f);position(c1,c2);return 0;}运行结果:2、设计圆类和直线类,求直线与圆的位置关系#include<iostream>#include<math.h>using namespace std;class Circle//圆类{private:float x,y,r;public:Circle(float a,float b,float c) {x=a;y=b;r=c;}float getx(){return x;}float gety(){return y;}float getr(){return r;}};class Line//直线类{private:float a,b,c;public:Line(float x,float y,float z){a=x;b=y;c=z;}void position(Circle c1){float d=fabs(a*c1.getx()+b*c1.gety()+c)/sqrt(a*a+b*b) ;//圆心到直线的距离if(d<c1.getr())cout << "相交";if((d-c1.getr())<0.000001)cout << "相切";cout << "相离";}};int main(){Line l1(3,3,4);//创建直线对象Circle c1(-23,3,7);//创建圆对象l1.position(c1);return 0;}运行结果:3、设计学生类,求某班学生成绩的最高分、最低分及平均分#include <iostream>#include <string.h>using namespace std;class Student{private:char name[20],xuehao[20];float math;public:Student(){}Student(char *na,char *xu,float ma):math(ma) {strcpy(name,na);strcpy(xuehao,xu);}void set(char *na,char *xu,float ma){math=ma;strcpy(name,na);strcpy(xuehao,xu);}char *get_name(){return name;}char *get_xuehao(){return xuehao;float get_math(){return math;}};void max_min(Student stu[],int n){Student max,min;max=min=stu[0];for(int i;i<n;i++){if(stu[i].get_math()>max.get_math())max=stu[i];if(stu[i].get_math()<min.get_math())min=stu[i];}cout << "学生成绩最高:" << max.get_name() << "," << max.get_xuehao() << "," << max.get_math() << endl;cout << "学生成绩最低:" << min.get_name() << "," << min.get_xuehao() << "," << min.get_math() << endl;}void ave(Student stu[],int n){float sum=0;for(int i=0;i<n;i++){sum=sum+stu[i].get_math();cout << "ave=" << sum/n;}int main(){char na[20],xu[20];float ma;Student stu[20];int n;cout << "请输入学生总人数"; cin >> n;for(int i=0;i<n;i++){cin >> na >> xu >> ma ; stu[i].set(na,xu,ma); }max_min(stu,n);ave(stu,n);return 0;}运行结果:4、设计部门类和教师类,其中部门类成员为教师类的子对象#include <iostream>#include <string.h>using namespace std;class Department{private:int dep_num;char dep_master[20];char dep_name[20];public:Department(){}Department(int num,char *ma,char *na){dep_num=num;strcpy(dep_master,ma);strcpy(dep_name,na);}void show(){cout << dep_num << "," << dep_master << "," << dep_name ; }};class Teacher{private:char name[20];char haoma[20];Department dep;public:Teacher(char *n,char *nu,int num,char *ma,char *na):dep(num,ma,na) {strcpy(name,n);strcpy(haoma,nu);}void show(){dep.show();cout << "," << name << "," << haoma << endl;}};int main(){Teacher hp("wanghai","12345",6,"kiki","computer");hp.show();return 0;}运行结果:5、设计家庭银行账户类,其中账户为静态数据成员,为家庭成员共享#include <iostream>#include <string.h>using namespace std;class Familymember//家庭成员类{private:char membername[10];//成员名public:static float account;//共享账户资金 Familymember(char *name);static void save(float money);//存钱 static void pay(float money);//支出 static void show(); //显示账户余额};float Familymember::account=0;Familymember::Familymember(char *name) {strcpy(membername,name);}void Familymember:: save(float money) {account= account+money;}void Familymember:: pay(float money){account= account-money;}void Familymember:: show(){cout<<account<<endl;}int main()//主函数{ Familymember husband("wang"),wife("Li"); husband.save(10000);wife.pay(3000);wife.save(5000);wife.show();husband. show();}运行结果:6、设计复数类,友元函数实现复数的加减#include <iostream>using namespace std;class Fushu{private:float ss,xs;public:Fushu(){}Fushu(float a,float b){ss=a;xs=b;}friend Fushu jiafa(Fushu &f1,Fushu &f2){return Fushu((f1.ss+f2.ss),(f1.xs+f2.xs)); }friend Fushu jian(Fushu &f1,Fushu &f2){return Fushu((f1.ss-f2.ss),(f1.xs-f2.xs)); }void show(){cout << ss << " + " << xs << "i" << endl; }};int main(){Fushu f1(2,3),f2(4,5);Fushu f3,f4;f3=jiafa(f1,f2);f4=jian(f1,f2);f3.show();f4.show();return 0;}运行结果:。
C++实验报告类与对象
成都学院实验报告课程名称C++向对象程序设计实验名称类与对象姓名班级 1学号指导教师设计时间2016年4月5日计算机工程学院1.实验目的1) 掌握声明类的方法,类和类的成员的概念以及定义对象的方法。
2) 初步掌握用类和对象编制基于对象的程序。
3) 学习检查和调试基于对象的程序。
2.实验内容1) 有以下程序:#include<iostream>using namespace std;class Tim{public:int hour;int minute;int sec;};int main(){Time t1;cin>>t1.hour;cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<”:”<<t1.sec<<endl;return 0;}改写程序,要求:1.将数据成员改为私有的;2.将输入和输出的功能改为由成员函数实现3.在类体内定义成员函数然后编译和运行程序。
请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?答案:用于改变类状态的成员应该定义为公有,用于保存类状态的成员应该定义为私有,简单的函数最好在类中定义,有一定工作量的函数放在外面定义。
#include<iostream>usingnamespace std;class Time{private:int hour;int minute;int sec;public:void setdate(){cin>>hour;cin>>minute;cin>>sec;}void display(){cout<<hour<<":"<<minute<<":"<<sec<<endl;}};int main(){Time t1;t1.setdate();t1.display();return 0;}2)分别给出如下的3个文件student.h1.//student.hClass Student{Public:Void display()Private:Int num;Char name[20];Char sex;};2.包含成员函数定义的源文件student.cpp//student.cpp#include<iostream>#include”student.h”Void Student::display(){Cout<<”num:”<<num<<endl;Cout<<”name:”<<name<<endl;Cout<<”sex:”<<sex<<endl;};3.包含主函数的源文件main.cpp为了组成一个完整的源程序,应当有包含主函数的源文件//main.cpp#include<iostream>#include”student.h”Int mian(){Student stud;Stud.display();Return 0;};请完善该程序,在类中增加一个队数据成员赋初值的成员函数set_value.上机调试并运行。
C++类和对象实验报告
C++类和对象实验报告河南⼯业⼤学《⾯向对象程序设计》实验报告专业班级:学号:姓名:实验单元⼀类和对象实验⼀标准控制台输⼊输出实验时间:2016.9.22【实验⽬的】1、熟悉Dev-Cpp编程环境。
2、编写简单的输⼊输出语句。
3、熟练使⽤算术运算符。
4、能够编写简单的判断语句。
5、掌握类、对象、数据成员、成员函数的基本概念。
6、能够进⾏类的定义。
【实验环境】Dev-C++。
【实验内容】1.编写C++程序,实现输⼊两个整数,输出两个整数的加、减、乘、除结果;详细的注释,完整的输出显⽰。
2.编写NumberA类,实现两个整数的加减乘除运算。
构造函数实现两整数a,b赋值。
【详细分析】第⼀题1.定义两个变量,为保证商的顺利输出选择double型,直接选择输出各项和差商积。
第⼆题1.构造⼀个NumberA类,构造各个成员函数包括求差,求和,求积,求商。
各个成员函数具有各⾃的功能。
2.在main函数中创建NumberA的⼀个对象number,并以number对NumberA中的各个成员函数进⾏调⽤。
【实验源码】第⼀题#includeusing namespace std;//using的声明int main()double number1,number2;//定义整型变量cout<<"请输⼊两个整数"<cin>>number1>>number2;cout<<"两数之和为:";cout<cout<<"两数之差为:";cout<cout<<"两数之商为:";cout<cout<<"两数之积为:";cout<return 0;}第⼆题#includeusing namespace std;//using的声明class NumberA//创建⼀个NumberA类{ public://构造各个成员函数void sum(int a,int b)//求和函数{int sum;sum=a+b;cout<<"两数之和为:";cout<}void cha(int a,int b)//求差函数{int cha;cha=a-b;cout<<"两数之差为:";cout<}void ji(int a,int b)//求积函数int ji;ji=a*b;cout<<"两数之积为:";cout<}void shang(double a,double b)//求商函数{double shang;shang=a/b;cout<<"两数之商为:";cout<}};int main(){int a,b;cout<<"请输⼊两个整数:"<cin>>a>>b;NumberA number;//将NumberA类赋予number//调⽤NumberA类中的各个成员函数number.sum(a,b);number.cha(a,b);number.shang(a,b);number.ji(a,b);return 0;}【实验结果】第⼀题结果第⼆题结果【实验体会】第⼀次C++实验第⼀次接触类的概念,做这⼀个计算器的⼩程序,感觉构造⼀个类相⽐直接写函数步骤更加繁琐了⼀些。
类与对象实验报告(C++)
实验报告学院工学院课程名称C++程序设计第 1 次实验实验名称:类和对象进一步讨论专业班级姓名学号成绩指导老师签字实验时间2015年10月30日学生实验室守则一、按教学安排准时到实验室上实验课,不得迟到、早退和旷课。
二、进入实验室必须遵守实验室的各项规章制度,保持室内安静、整洁,不准在室内打闹、喧哗、吸烟、吃食物、随地吐痰、乱扔杂物,不准做与实验内容无关的事,非实验用品一律不准带进实验室。
三、实验前必须做好预习(或按要求写好预习报告),未做预习者不准参加实验。
四、实验必须服从教师的安排和指导,认真按规程操作,未经教师允许不得擅自动用仪器设备,特别是与本实验无关的仪器设备和设施,如擅自动用或违反操作规程造成损坏,应按规定赔偿,严重者给予纪律处分。
五、实验中要节约水、电、气及其它消耗材料。
六、细心观察、如实记录实验现象和结果,不得抄袭或随意更改原始记录和数据,不得擅离操作岗位和干扰他人实验。
七、使用易燃、易爆、腐蚀性、有毒有害物品或接触带电设备进行实验,应特别注意规范操作,注意防护;若发生意外,要保持冷静,并及时向指导教师和管理人员报告,不得自行处理。
仪器设备发生故障和损坏,应立即停止实验,并主动向指导教师报告,不得自行拆卸查看和拼装。
八、实验完毕,应清理好实验仪器设备并放回原位,清扫好实验现场,经指导教师检查认可并将实验记录交指导教师检查签字后方可离去。
九、无故不参加实验者,应写出检查,提出申请并经批准后,方可补做。
十、自选实验,应事先预约,拟订出实验方案,经实验室负责人同意后,在指导教师或实验技术人员的指导下进行。
十一、实验室内一切物品未经允许严禁带出室外,确需带出,必须经过批准并办理手续。
预习报告实验基本原理与设计(包括实验方案设计、实验手段的确定、电路原理图设计或算法描述)1、考察类的对象数组:建立一个对象数组,内放5个学生的数据(学号,成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。
c++程序设计类和对象实验总结
一、实验目的在本次C++程序设计实验中,主要目的是通过对类和对象的学习和掌握,进一步加深对C++程序设计语言的理解和应用。
通过具体的实验操作,提高学生的编程能力和解决问题的能力,培养学生的动手能力和团队协作精神。
二、实验内容1. 掌握类的概念和基本语法,包括类的定义、成员变量、成员函数等;2. 熟悉对象的概念和使用方法,了解对象的初始化和销毁;3. 学习类的继承和派生的知识,掌握继承与派生的语法和使用;4. 能够独立编写包含类和对象的程序,实现各种功能;5. 通过实践项目,提高自己的编程水平,锻炼解决问题的能力。
三、实验过程在实验过程中,首先我们需要了解类和对象的概念,理解类的定义和对象的创建方法。
编写简单的程序进行练习,例如创建一个包含学生信息的类,并实例化对象,调用成员函数来输出学生信息。
也需要深入学习类的继承和派生的知识,理解基类和派生类的关系,掌握虚函数的概念和使用方法。
在实验中,我们编写了多个实例程序来练习类的继承和派生,加深了对这一知识点的理解。
在实验过程中,我们还遇到了一些问题,例如在使用多重继承时需要特别注意类的构造和析构顺序,以及在使用虚函数时需要注意动态绑定的原理等。
通过解决这些问题,我们不断提高了自己的编程水平,加深了对C++语言的理解。
四、实验总结通过本次实验,我们深刻理解了类和对象的概念,掌握了类的定义和对象的创建方法。
在实验中,我们编写了多个功能丰富的程序,包括学生信息管理系统、图形类的继承等。
这些程序不仅巩固了所学的知识,也让我们感受到了编程的乐趣。
通过与同学的讨论和交流,我们也学到了很多新的知识和技巧。
本次实验对我们的帮助很大,让我们更深入地理解了C++程序设计语言,提高了我们的编程水平。
希望在以后的学习和实践中,能够进一步加深对类和对象的理解,不断提高自己的编程能力。
在本次的C++程序设计实验中,我们深入学习了类和对象的概念,并通过实际的编程练习加深了对C++程序设计语言的理解和应用。
c 类与对象 实验报告
c 类与对象实验报告C++ 类与对象实验报告一、引言C++ 是一种面向对象的编程语言,它提供了类和对象的概念,使得程序的设计和实现更加模块化和可维护。
本实验旨在通过实际案例,深入理解 C++ 类与对象的概念和使用方法。
二、实验目的1. 掌握类的定义和对象的创建。
2. 熟悉类的成员变量和成员函数的使用。
3. 理解构造函数和析构函数的作用和使用。
4. 学会使用访问权限控制类的成员。
5. 掌握类的继承和多态的概念。
三、实验过程1. 类的定义和对象的创建在 C++ 中,类是一种用户自定义的数据类型,它由数据成员和成员函数组成。
通过类的定义,我们可以创建对象,即类的实例。
对象是类的具体化,它可以调用类的成员函数来完成特定的操作。
2. 成员变量和成员函数的使用类的成员变量是类的属性,它们用于存储对象的状态信息。
成员函数是类的行为,它们用于实现对象的操作。
通过成员变量和成员函数的配合使用,我们可以实现对对象的控制和操作。
3. 构造函数和析构函数的作用和使用构造函数是一种特殊的成员函数,它在对象创建时被调用,用于初始化对象的成员变量。
析构函数也是一种特殊的成员函数,它在对象销毁时被调用,用于释放对象占用的资源。
构造函数和析构函数的使用可以保证对象的正确初始化和销毁。
4. 访问权限控制类的成员在 C++ 中,类的成员可以设置为私有、保护或公有。
私有成员只能在类的内部访问,保护成员可以在类的内部和派生类中访问,公有成员可以在任何地方访问。
通过访问权限控制,我们可以限制对类的成员的访问,提高程序的安全性和可维护性。
5. 类的继承和多态的概念类的继承是一种重要的面向对象的特性,它允许我们创建一个新的类,从已有的类派生而来。
派生类继承了基类的成员变量和成员函数,并可以添加新的成员变量和成员函数。
多态是指在继承关系中,派生类可以重写基类的成员函数,实现不同的行为。
通过继承和多态,我们可以实现代码的重用和灵活性。
四、实验总结通过本次实验,我深入理解了 C++ 类与对象的概念和使用方法。
C实验五类与对象.doc
实验六类与对象类是面向对彖程序设计中最棊木并H最重要的概念,也是面向对彖方法的第一个难点。
类是对逻辑上相关的函数与数据的封装,是对问题的抽象描述。
对象是类的实例化,是抽象的具体实现,类和对象的关系,是抽象与具体的关系,类概括出事物的木质特点,对象是对这些特点的具体体现。
实验目的和要求:1.掌握类和对象的使用。
2.掌握类的构造函数少析构函数。
3.掌握构造函数的重载。
4.了解拷贝构造两数的方法。
5.熟悉静态成员的使用和意义。
6.掌握友元的含义(友元函数、友元成员、友元类)。
7.掌握new和delete的使用。
实验内容:一、程序分析题1、写出以下程序的执行结果。
#include <iostream>using namespace std;class Tdcite{public:Tdate(){ Init(4,15,1995); }Tdate(int d){ lnit(4,d,1996); }Tdate(int m,int d){ Init(m,d,1997); }Tdate(int m,int d,int y){ Init(m,d,y); }protected:int month;int day;int year;void Init(int m,int djnt y){month=m; day=d; year=y;cout «month «H/M «day «,7M «year «endl;}};int main(){Tdate aday;Tdate bday(10);Tdate cday(2,12);Tdate dday( 1,2,1998);return 0;2、写出以下程序的执行结果。
#include <iostrcam> using namespace std;class MyClassf public:MyClass();MyClass(int);〜MyClass();void DisplayO;protected:int number;};MyClass::MyClass(){number =0;cout «n Constructing normallyAn*'; } MyClass::MyClass(int m):number(m){cout «n Constructing with a number: 4 5 6 7 8 9 10 11 «number «endl;}void MyClass::Display(){ cout «H Display a number: M «number «endl; } MyClass::〜MyClass(){ cout «H Destructing.\n n; }int main(){MyClass obj 1;MyClass obj2(20);objl.Display();obj2.Display();return 0;}3、写出以下程序的执行结果。
[C++]类与对象实验报告
+Person( const Person &p )+~Person()+SetName( const char *name ):void+SetAge( int age ):void+setSex( char sex ):void+* GetName() :char+GetAge() :int+GetSex() :char+ShowPerson() :void运行结果3.程序的类结构图为:Box-str_name[20]:char-length:float-width:float-height:float-volume:float+Box()+Box(const char* name,float l,float w,float h)+Box(const Box &p)+~Box(){volume=length*width*height;}void Box::show_volume(){cout<<"长方柱"<<str_name<<"的体积是:"<<volume<<"\n"; }int main(){Box *p1;cout<<"分别输入长方柱的长、宽、高:"<<endl;p1=new Box;//动态生成一个 Person 对象p1->Setlength();p1->Setwidth();p1->Setheight();p1->operate_volume();p1->show_volume();delete p1; //释放 p1 指针指向对象所占的空间return 0;}4.程序的类结构图为:R-R1:int+R(int r1=0)+print():void+print()const:void5. 程序的类结构图为:Test+Test(int=0)+print()const:void【实例编程】List#*m_pFirst:Node-Node+Node(const int &data=0,Node*next=NULL) +*m_nNext:Node+m_nData:int+List()+~List()+Append(const int &e,int index=0):bool +Prepend(const int &e,int index=1):bool +Remove(int &e,int inedx=1):bool+Find(int &e,int index=1):bool+PrintList():void。
1C#实验报告 类与对象
类的 dial()方法; 5 界面设计; 6 实例化 Telephone 类和 Mobilephone 类; 7 编写事件代码,调用相应的方法以及在 MessageBox.Show()方法里的“内容”
这一参数里调用相应的字段; 8 调试; 9 把步骤④里的 override 关键字改成 new 关键字; 10 调试并与步骤⑧的结果比较。 程序界面设计:
{
mobilephone.ring();
}
private void button9_Click(object sender, EventArgs e)
{
mobilephone.playmp3();
}
}
public class Telephone
{
public string numbers = "13800138000"; //字段numbers
{
MessageBox.Show(mobilephone.attribution, "所在地", MessageBoxButtons.OK);
}
private void button7_Click(object sender, EventArgs e)
{
mobilephone.dial();
}
private void button8_Click(object sender, EventArgs e)
stuAge = Convert.ToInt32(Console.ReadLine());
}
public student(string number, string name) //构造函数2,实现对数据的输入
{
stuNum = number;
c 实验报告 类和对象
c 实验报告类和对象C 实验报告类和对象引言:在计算机科学领域中,面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的编程范式。
它将现实世界中的事物抽象成对象,并通过类来定义对象的属性和行为。
本实验报告将介绍C语言中的类和对象的概念,以及如何在C语言中实现面向对象编程。
一、类和对象的概念1.1 类的定义在面向对象编程中,类是一种用户自定义的数据类型,它由属性和方法组成。
属性是类的成员变量,用于描述对象的状态;方法是类的成员函数,用于描述对象的行为。
类是对象的模板,通过实例化类可以创建多个具有相同属性和方法的对象。
1.2 对象的定义对象是类的实例,它是类中属性和方法的具体表现。
每个对象都有自己的属性值,可以调用类中定义的方法来执行特定的操作。
通过对象,我们可以访问和修改类中的属性,以及调用类中的方法。
二、类和对象的实现2.1 结构体的应用在C语言中,我们可以使用结构体来实现类的属性。
结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。
通过定义结构体,我们可以将多个属性组合在一起,形成一个完整的数据结构。
2.2 函数的应用在C语言中,我们可以使用函数来实现类的方法。
函数是一段可重复使用的代码,可以完成特定的任务。
通过定义函数,我们可以将一系列操作封装起来,供对象调用。
三、面向对象编程的优势3.1 封装性面向对象编程中的封装性使得对象的内部细节对外部是隐藏的,只有通过对象提供的接口才能访问和修改对象的属性。
这样可以保护对象的数据不被非法访问和修改,提高了程序的安全性。
3.2 继承性通过继承,一个类可以从另一个类中继承属性和方法。
这样可以减少代码的重复性,提高代码的复用性。
同时,继承也使得类与类之间的关系更加清晰,便于代码的维护和扩展。
3.3 多态性多态性是面向对象编程的一个重要特性,它使得一个对象可以以多种形态存在。
通过多态性,我们可以通过基类的指针或引用来操作派生类的对象,实现代码的灵活性和扩展性。
类和对象实验报告c
类和对象实验报告c类和对象实验报告引言在计算机科学领域,类和对象是面向对象编程的核心概念。
类是一种抽象数据类型,用于描述对象的属性和行为。
对象是类的实例化,具有特定的属性和行为。
本实验旨在通过编写一个简单的类和对象的示例程序,深入理解类和对象的概念以及它们在程序设计中的应用。
实验过程1. 类的定义首先,我们需要定义一个类。
在这个示例程序中,我们选择创建一个名为"Person"的类。
这个类将代表一个人,具有姓名和年龄两个属性。
类的定义通常包括属性和方法两个部分。
2. 属性的定义在"Person"类中,我们需要定义两个属性:姓名和年龄。
属性可以是不同的数据类型,比如字符串、整数等。
在这个示例中,我们选择使用字符串类型来表示姓名,使用整数类型来表示年龄。
属性的定义通常包括访问修饰符、数据类型和属性名称。
3. 方法的定义除了属性,类还可以定义方法。
方法是类的行为,用于执行特定的操作。
在"Person"类中,我们选择定义一个"introduce"方法,用于介绍这个人的姓名和年龄。
方法的定义通常包括访问修饰符、返回类型、方法名称和参数列表。
4. 对象的创建一旦类定义完成,我们可以创建类的对象。
在这个示例中,我们可以创建一个名为"person1"的对象,代表一个具体的人。
对象的创建通常包括使用"new"关键字和调用类的构造函数。
5. 对象属性的访问和修改通过对象,我们可以访问和修改类的属性。
在这个示例中,我们可以通过""和"person1.age"来访问和修改"person1"对象的姓名和年龄。
6. 对象方法的调用通过对象,我们还可以调用类的方法。
在这个示例中,我们可以通过"person1.introduce()"来调用"person1"对象的"introduce"方法,从而介绍这个人的姓名和年龄。
c 类与对象 实验报告
c 类与对象实验报告
C类与对象实验报告
实验目的:通过实验,掌握C语言中类与对象的基本概念和使用方法,加深对面向对象编程的理解。
实验内容:
1.了解C语言中类与对象的定义和声明方法
2.掌握C语言中类与对象的成员变量和成员函数的定义和使用
3.实现一个简单的C语言类与对象的示例程序
实验步骤:
1.定义一个类,包括成员变量和成员函数
2.声明一个对象,并初始化对象的成员变量
3.调用对象的成员函数,实现相关功能
4.编译并运行程序,观察输出结果
实验结果:
通过实验,我们成功定义了一个C语言类,并创建了一个对象进行操作。
我们发现,类与对象的概念在C语言中虽然没有像C++或Java那样的完整支持,但我们仍然可以通过结构体和函数指针等方式来模拟类与对象的使用,实现面向对象编程的效果。
实验结论:
通过本次实验,我们加深了对C语言中类与对象的理解,掌握了基本的使用方法。
虽然C语言中并没有原生支持类与对象的概念,但我们可以通过一些技巧和方法来实现类似的功能。
面向对象编程是一种重要的编程范式,掌握类与对
象的概念对于我们提高编程能力和设计程序结构都具有重要意义。
总结:
C语言中类与对象的实验让我们更深入地理解了面向对象编程的思想,为我们今后的编程学习和实践打下了良好的基础。
通过不断地实践和探索,我们相信我们可以更加熟练地运用类与对象的概念,设计出更加优秀的程序和项目。
希望我们在今后的学习和工作中能够不断提升自己,成为优秀的程序员。
实验报告-类和对象
北华航天工业学院《C++面向对象程序设计》实验报告报告题目:类和对象作者所在系部:计算机系作者所在专业:计算机科学与技术作者所在班级:作者学号:作者姓名:指导教师姓名:北华航天工业学院教务处制类和对象一.实验目的1、理解面向对象程序设计的基本概念;2、掌握类的定义;3、掌握对象的定义与使用。
二.实验内容及要求1、需要求3个长方柱的体积,请编写一个基于对象的程序。
数据成员包括length(长)、width (宽)、height(高)。
要求用成员函数实现以下功能:(1)由键盘分别输入3个长方柱的长、宽、高;(2)计算长方柱的体积;(3)输出3个长方柱的体积。
请编写程序,上机调试并运行。
2、定义一个学生类Student,具体要求如下数据成员包括学号、姓名、数学成绩、英语成绩和C++成绩;成员函数包括✧设置学生的信息函数;✧输入学生的信息函数;✧输出学生的信息函数;✧计算学生的平均成绩的函数;在main函数中调用以上函数实现相应功能。
三.实验步骤1、本实验程序代码如下:#include<iostream>using namespace std;class Cuboid{private:float l1,l2,l3,w1,w2,w3,h1,h2,h3;double v1,v2,v3;public:void input();void count();void output();};int main(){Cuboid a;a.input();a.count();a.output();return 0;}void Cuboid::input(){cout<<"请输入第一个长方体的长宽高:";cin>>l1>>w1>>h1;cout<<endl<<"请输入第二个长方体的长宽高:";cin>>l2>>w2>>h2;cout<<endl<<"请输入第三个长方体的长宽高:";cin>>l3>>w3>>h3;}void Cuboid::count(){v1=l1*w1*h1;v2=l2*w2*h2;v3=l3*w3*h3;}void Cuboid::output(){cout<<"三个长方体的体积分别为:"<<v1<<","<<v2<<","<<v3<<endl; }程序的运行结果如下:2、本实验程序代码如下:#include<iostream>#include<string>using namespace std;class News{private:int num,i;string name[100];float math[100],English[100],c[100];double p[100];public:void input();void count();void output();};int main(){News a;a.input();a.count();a.output();return 0;}void News::input(){cout<<"请输入共有几位同学:";cin>>num;for(i=1;i<=num;i++){cout<<"请输入第"<<i<<"个同学的姓名和数学,英语,c++成绩:";cin>>name[i];cin>>math[i]>>English[i]>>c[i];}}void News::count(){for(i=1;i<=num;i++)p[i]=(math[i]+English[i]+c[i])/3;}void News::output(){for(i=1;i<=num;i++)cout<<"第"<<i<<"个学生的信息:"<<endl<<"姓名:"<<name[i]<<endl<<"数学成绩:"<<math[i]<<endl<<"英语成绩:"<<English[i]<<endl<<"c++成绩:"<<c[i]<<endl<<"平均成绩:"<<p[i]<<endl;}程序的运行结果如下:四.实验总结(总结本次实验收获是什么?遇到什么问题及如何解决的?有什么感想?看完请删除本行内容)本次实验主要收获是学会了如何使用类和对象,知道什么叫数据成员和成员函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一类和对象实验课程名:面向对象程序设计(C++)专业班级:学号:实验时间:实验地点:姓名:指导教师:一、实验目的和要求(1)理解类和对象的概念,掌握声明类和定义对象的方法。
(2)掌握构造函数和析构函数的实现方法。
(3)初步掌握使用类和对象编制C++ 程序。
(4)掌握对象数组、对象指针和string 类的使用方法。
(5)掌握使用对象、对象指针和对象引用作为函数参数的方法。
(6)掌握类对象作为成员的使用方法。
(7)掌握静态数据成员和静态成员函数的使用方法。
(8)理解友元的概念和掌握友元的使用方法。
二、实验内容1.设计一个静态数组存储结构的顺序表类,要求编程实现如下任务:建立一个线性表,首先依次输人数据元素1,2,3,⋯,10,然后删除数据元素 6,最后依次显示当前线性表中的数据元素。
要求采用顺序表实现,假设该顺序表的数据元素个数在最坏情况下不会超过50个。
实验代码: #include<iostream>using namespace std;const int MaxSize=100; //100只是示例性的数据,可根据实际问题具体定义template <class T>//定义模板类SeqListclass SeqList{public:SeqList( ) {length=0;}//无参构造函数SeqList(T a[ ], int n);//有参构造函数~SeqList( ) { }//析构函数为空int Length( ) {return length;} //求线性表的长度T Get(int i);//按位查找,取线性表的第i个元素int Locate(T x );//按值查找,求线性表中值为x 的元素序号void Insert(int i, T x); //在线性表中第i 个位置插入值为x 的元素T Delete(int i); void PrintList( );////删除线性表的第i 个元素遍历线性表,按序号依次输出各元素private:T data[MaxSize]; int length;////存放数据元素的数组线性表的长度};template <class T>SeqList<T>::SeqList(T a[ ], int n){int i;if (n>MaxSize) throw "参数非法";for (i=0; i<n; i++)data[i]=a[i];length=n;}template <class T>T SeqList<T>::Get(int i){if (i<1 && i>length) throw "查找位置非法";else return data[i-1];}template <class T>int SeqList<T>::Locate(T x){int i;for (i=0; i<length; i++)if (data[i]==x) return i+1; //下标为i的元素等于x,返回其序号i+1return 0;//退出循环,说明查找失败}template <class T>void SeqList<T>::Insert(int i, T x){int j;if (length>=MaxSize) throw "上溢 ";if (i<1 || i>length+1) throw "位置 ";for (j=length; j>=i; j--)data[j]=data[j-1];//注意第j个元素存在数组下标为j-1 处data[i-1]=x;length++;}template <class T>T SeqList<T>::Delete(int i){T x;int j;if (length==0) throw "下溢 ";if (i<1 || i>length) throw "位置 ";x=data[i-1];for (j=i; j<length; j++)data[j-1]=data[j]; //注意此处j已经是元素所在的数组下标length--;return x;}template<class T>void SeqList<T>::PrintList(){int i;for(i=0;i<length;i++)cout<<data[i]<<' ';cout<<endl;}int main(){int m,n,t;int a[10]={0,1,2,3,4,5,6,7,8,9};SeqList<int> seq(a,10);SeqList<int> *p;p=&seq;cout<<" 线性表的长度为: "<<p->Length()<<endl;p->PrintList();cout<<" 请输入要查找元素的位置 :"<<endl;cin>>n;cout<<" 您所要找的元素为:"<<p->Get(n)<<endl;cout<<" 请输入要查找的元素值: "<<endl;cin>>n;cout<<" 该值所在的位置为:"<<p->Locate(n)<<endl;cout<<" 请分别输入插入位置与要插入的元素"<<endl;cin>>n>>t;p->Insert(n,t);p->PrintList();cout<<" 请输入要删除的元素所在的位置:"<<endl;cin>>n;p->Delete(n);p->PrintList();return 0;}运行结果:2.设计一个带头结点的单链表类,要求:(1)生成一个整数线性表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。
(2)设计一个测试主函数,实际运行验证所设计单链表类的正确性。
实验代码: #include<iostream>using namespace std;template <class T>struct Node{T data;Node<T> *next; //此处<T>也可以省略};template <class T>class LinkList{public:LinkList( ){first=new Node<T>; first->next=NULL;} //建立只有头结点的空链表LinkList(T a[ ], int n); //建立有 n 个元素的单链表~LinkList( );//析构函数int Length( );//求单链表的长度T Get(int i);//取单链表中第i 个结点的元素值int Locate(T x);//求单链表中值为x 的元素序号void Insert(int i, T x); //在单链表中第 i 个位置插入元素值为 x 的结点T Delete(int i);//在单链表中删除第 i 个结点void PrintList( );//遍历单链表,按序号依次输出各元素Node<T> *first; //单链表的头指针};template<class T>LinkList<T>::LinkList(T a[ ], int n)//头查法建立单链表{int i;Node<T> *s;first=new Node<T>;first->next=NULL; //初始化一个空链表for (i=n-1; i>=0; i--) {s=new Node<T>; s->data=a[i]; //为每个数组元素建立一个结点s->next=first->next;//插入到头结点之后first->next=s;}}template<class T>LinkList<T>::~LinkList( )//析构函数{Node<T> *p,*q;p=first;while(p){q=p;p=p->next;delete q;}}template<class T>int LinkList<T>::Length( )//求链表的长度{int i=0;Node<T> *p;p=first;while(p){p=p->next;i++;}return i-1;}template<class T>T LinkList<T>::Get(int i)//求单链表中第i 个元素的值{int n=0;Node<T> *p;p=first;while(p&&i>n){p=p->next;n++;}return p->data;}template<class T>int LinkList<T>::Locate(T x)//求单链表中值为x 的元素序号{int i;Node<T> *p;p=first;for(i=0;p;i++){if(p->data==x)return i;p=p->next;}}template<class T>void LinkList<T>::PrintList( )//输出函数{Node<T> *p;p=first->next;while(p){cout<<p->data<<' ';p=p->next;}cout<<endl;}template<class T>void LinkList<T>::Insert(int i, T x)//在第i个位置插入元素 x{int n=0;Node<T> *p,*q;p=first;while(p&&n<i-1){p=p->next;++n;}q=new Node<T>;q->data=x;q->next=p->next;p->next=q;}template<class T>T LinkList<T>::Delete(int i)//删除第i 个结点{int n=0;Node<T> *p,*q;p=first;while(p->next&&n<i-1){p=p->next;++n;}q=p->next;p->next=q->next;return q->data;delete q;}int main(){Node<int> *p,*q,*r;int a[10]={0,1,2,3,4,5,6,7,8,9};LinkList<int> L1(a,10),L2,L3;//定义三个链表cout<<L1.Length()<<endl;p=L1.first->next,q=L2.first,r=L3.first;L2.first=new Node<int>;L2.first->next=NULL;L3.first=new Node<int>;L3.first->next=NULL;while(p)// 当链表 L1 中有元素时进行循环{if(p->data%2==0)//当L1中的元素为偶数时插入L2 {q=new Node<int>;q->data=p->data;q->next=L2.first->next;L2.first->next=q;}else{r=new Node<int>;r->data=p->data;r->next=L3.first->next;L3.first->next=r;}p=p->next;}L1.PrintList( );L2.PrintList( );L3.PrintList( );cout<<" 链表的长度为: "<<L1.Length( )<<endl;cout<<" 链表的第四个元素为:"<<L1.Get(4)<<endl;cout<<"链表中元素 5 为第 "<<L1.Locate(5)<<"个元素"<<endl;L1.Insert(4, 17);cout<<" 插入元素后链表为:";L1.PrintList( );L1.Delete(8);cout<<" 删除第 8 个元素后链表变为:";L1.PrintList( );return 0;}实验结果:3.设计一个不带头结点的单链表类,要求:(1)不带头结点单链表类的成员函数包括取数据元素个数、插入元素、删除所有值为k 的元素、取数据元素。