实验报告_实验3类与对象(学生学号_姓名)
一、实验目的
1.熟悉类的组成,掌握类的声明方法;
2.理解构造方法的作用,并掌握构造方法的定义;
3.熟练使用访问器和设置器实现信息隐藏和封装;
4.熟悉一般方法、构造方法的重载;
5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式;
7.掌握this关键字的使用以及对象数组的创建和访问;
8.掌握Java包的创建、包成员的各种访问方式;
9.掌握一维数组:声明,创建,初始化,数组元素的访问;
10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。
二、实验内容与步骤
1.请回答下列问题:
(1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么?
答:两个PI,floatl类型,静态私有权限
Radius,float;类型,私有权限
(2)类中的“PI”的值可以在程序的方法中更改吗?
答:不可以,因为PI为静态变量
(3)Cirecle类定义了几个方法?它们的访问权限怎样?
答:四个,getRadius(),setRadius(floatradius),getPerimeter(),getArea()都是公有权限2.写出Rectangle类的程序代码:
classRectangle
{
privatefloatwidth;
privatefloatlength;
publicfloatgetWidth() //获取矩形宽度
{returnwidth;}
publicfloatgetLength() //获取矩形长度
{returnlength;}
publicfloatgetPerimeter() //获取矩形周长
{return2*(width+length);}
publicfloatgetArea() //获取矩形面积
{return(width*length);}
publicvoidsetWidth(floatw) //设置矩形宽度
{width=w;}
publicvoidsetLength(floatl) //设置矩形长度
{length=l;}
}
3.回答下列问题:
(1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?
答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。
(2)Circle类定义了几个构造方法(即构造器)?Circle类中存在无参构造方法吗?如果要使用无参构造方法,应如何做?
答:Circle类定义了个构造方法;不存在,写入Circle(){};
(3)CircleTest类中创建了几个Circle对象?这些对象是如何创建的?
答:CircleTest类创建了两个Circle对象;Circle对象名=newCircle()。
(4)CircleTest类中如何调用对象的方法?
答:CircleTest类调用对象方法:对象名.方法
4.写出OverrideTest中所缺的三行代码:
publicclass OverrideTest{
publicstaticvoid main(String[]args){
//使用Box类的无参构造方法创建方法创建对象box1
;
System.out.println(box1);
//使用Box类的带一个参数的构造方法创建对象box2,参数值为5.0
;
System.out.println(box2);
//使用带Box类带三个参数的构造方法创建对象box3,其中三个参数长、宽、高分别为10.1、20.2、30.3 ;
System.out.println(box3);
}
}
Boxbox1=new Box()Boxbox2=new Box(5.0);Boxbox3=new Box(10.1,20.2,30.3);
5.回答下列问题:
(1)this.length=length;中的this代表什么?
答:this代表类;
(2)this(x,x,x);中的this是什么含义?
6.(基础题)一维数组的使用:根据注释填充程序所缺代码,然后编译、运行该程序,并回答相关问题:
//一维数组:声明,创建,初始化,数组元素的引用及数组拷贝
______Stringweek[]__________; //声明一个名为week的String类型的一维数组______week=newstring[7]__________________; //为week数组分配存放7个字符串的空间for(int i=0;i "week["+i+"]="+____week[i]_________); 问题: (1)一维数组如何声明、创建?如果没有给数组元素赋值,则它们的取值如何? 答:a:数据类型[]数组名=new数据类型[数组的长度]; b:数据类型数组名[]=new数据类型[数组的长度]; 如果没有给数组赋值,则系统会自动默认它为0。 (2)数组的静态初始化具有什么功能? 答:静态初始化:在定义数组的同时就为数组元素分配空间并赋值。 (3)要了解数组元素的个数,可用访问数组的什么属性得到? 答:数组都有一个属性length来指明它的长度,例如:a.length指明数组a的长度(即元素个数)。(4)怎样引用数组的元素?写出它的下标取值范围。 答:数组名[index] 其中:index为数组元素下标,可以是整型常量或整型表达式,如:a[0],b[i],c[5*i],利用循环语句可以批量设置或访问数组元素的值。 数组元素下标从0开始,最大下标为:数组长度-1 7.(基础题)二维数组的使用:根据注释填充所缺代码,然后编译、运行该程序,并回答相关问题://二维数组:声明,创建,动态初始化,数组元素的引用 //声明一个名为myArray的数组,该数组有2行,每行列数不等,并为其分配内存空间 _______intmyArray[2][]__________________; myArray[0]=newint[5]; //第一行有5个元素,并为其分配内存空间 ______myArray[1]=newint[10]__________________; //第二行有10个元素,并为其分 配内存空间 for(int j=0;j myArray[0][j]=_______(int)(Math.random()*1+9)_______________; for(int j=0;j<______myArray[1].length__________;j++) //用100-200之间的随机整数给第二行元素赋值 myArray[1][j]=(int)(Math.random()*100+100); for(int i=0;i<_____myArray[1].length___________;i++){ //输出myArray数组各元素的值 for(int j=0;j 问题: (1)二维数组如何声明、创建?二维数组的列数是否一定要求相同? 答:数据类型数组名[][]或数据类型[][]数组名;不要求相同。 (2)二维数组如何动态初始化? 答:数据类型数组名[][]=new数据类型[第1维大小][第2维大小] (3)怎样理解“多维数组是数组的数组”?length作用于不同的数组:myArray.length,myArray[0].length,myArray[1].length,结果什么不同? (4)怎样引用数组的元素?它们下标取值范围怎样? 8.(提高题)分析、运行下列程序,回答下列问题: (1)实例变量和类变量的含义是什么?如何声明它们? (2)实例方法和类方法的含义是什么?如何声明它们? (3)f()方法中可以访问什么类型的变量和方法? (4)g()方法中可以访问x变量吗?可以在其中调用f()方法吗? (5)在主类中,应如何调用实例方法和类方法? (6)运行程序时,出现如下错误: 无法从静态上下文中引用非静态变量mystring 请分别用“类变量、类方法”和“实例变量、实例方法”两种完全不同的方法进行修改,使其能正确运行。 9.(提高题)写出程序所缺代码,并回答相关问题 package lab3; //导入Student类 ; publicclass ObjectArrayExample{ //声明一个长度为4的对象数组 Student1[]student=; public ObjectArrayExample(){ //初始化对象数组 } void printArrayElement(){ int max=0,j=0; int[]sum=newint[4]; for(int i=0;i //使用循环语句来求每个学生三门课的总分,并赋给sum数组对应元素sum[i]=; } for(int i=0;i if(max max=sum[i]; j=i; } } //输出总分最高的学生的姓名、学号、语文成绩、英语成绩、英语成绩和总分System.out.println("总分最高的学生姓名:"++",学号:"+ +",语文成绩:"++",英语成绩:"+ +",数学成绩:"++",总分是:"+max); } publicstaticvoid main(Stringargs[]){ ObjectArrayExampleobjarr=new ObjectArrayExample(); objarr.printArrayElement(); } } 问题: (1)如何定义对象数组? (2)如何访问对象数组元素的成员变量? (3 实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.sodocs.net/doc/ce5043744.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 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单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include 宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告 }*/ // ~CPU() {cout<<"析构了一个CPU!"< 实验九类和对象的使用实验报告 一实验目的 1、学会用构造函数对类对象进行初始化 2、掌握析构函数,并了解构造函数和析构函数的调用顺序 3、了解对象数组和对象指针的用法 4、学会共用数据的保护,了解常对象、常成员函数等的使用限制 二实验内容和要求 1.回顾课本知识,掌握重点和难点,认真分析例题熟悉本章内容。 2.完成本章课后习题2、6、7题,认真分析每一题的代码。 三实验环境 Visual C++6.0开发环境 四源程序 2、 #include Date::Date() { month=1; day=1; year=2005; } void Date::display() { cout< 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示 实验一:类和对象 【实验目的】 1.理解对象和类,掌握类的定义及如何创建一个对象; 2.掌握构造方法的运用; 3.掌握方法的定义和参数传递; 4. 掌握类的继承机制。 【实验准备】 一、复习配套教材相关章节的内容; 二、预习本次实验; 【实验内容】 1.编写一个程序,显示水果的定购行情。定义一个带有参数的构造方法,这些参数用于存放产品名,数量和价格。在主程序中输出三种不同的水果。package avage; public class text { String name; int agr; double page; public text(){ } public text(String name,int agr,double page){ https://www.sodocs.net/doc/ce5043744.html,=name; this.agr=agr; this.page=page; } public void evagre(){ System.out.println("水果名为:"+https://www.sodocs.net/doc/ce5043744.html,); System.out.println("水果数量:"+this.agr); System.out.println("水果单价:"+this.page); } } public class text1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub text s=new text(); https://www.sodocs.net/doc/ce5043744.html,="苹果"; s.agr =10; s.page=1.0; s.evagre(); text c=new text(); https://www.sodocs.net/doc/ce5043744.html,="香蕉"; s.agr =10; s.page=1.0; s.evagre(); text d=new text(); https://www.sodocs.net/doc/ce5043744.html,="橘子"; s.agr =10; s.page=1.0; s.evagre(); 2. 编写一个学生类,封装学生的学号、姓名、成绩等信息。再编写一个主类, 浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的定义与使用学时安排:3 实验类别:设计性实验实验要求:1人1组姓名:邵旸珂学号:2016329621068  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的 1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2)掌握类对象的定义; 3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; 二、实验原理介绍 通过建立类及对象,用类的成员函数和对象访问类的成员; 利用建立类的构造函数,完成类的成员的初始化工作; 三、实验设备介绍 软件需求: windows或linux下的c++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU 处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 编写一个程序,模拟电梯的功能。功能接口包括电梯上行按钮、下行按钮、楼层选择和电梯在行驶过程中的楼层显示。 要求: 1.由用户选择按上行按钮还是下行按钮,选择操作后再由用户输入要进入的楼层,进而电梯开始运行,显示所到的每一楼层层数。 2.如果是上行,则选择输入的楼层号不能比当前楼层号小,否则应给出不合法提示。 3. 如果是下行,则选择输入的楼层号不能比当前楼层号大,否则应给出不合法提示。 4.电梯一旦开始运作就会始终运行,直到窗口关闭。 5.电梯在经过不同楼层时,最好每个楼层的显示之间能有延迟,最终停靠的楼层的输出形式能更加醒目。如果可以,在电梯最初开始运行时,能在电梯由内部显示当前日期(提示:实现这些功能时,需要调用系统api,实现时间显示功能可以使用CDate类)。 五程序清单 #include 实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程 选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3: 图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构实验3 类和对象
C++实验报告 第四章 类与对象
实验四 类与对象
C++实验九类和对象的使用实验报告
实验报告_实验3 类与对象
C上机实验报告实验四
实验:类和对象1
实验一.类与对象实验报告
实验一 类和对象
C++实验二类与对象(附答案)