实验二 类与对象

合集下载

C#实验二 类的设计以及对象的创建

C#实验二 类的设计以及对象的创建

实验二类的设计以及对象的创建
任务陈述:学习c#的面向对象程序设计基础的有关知识,尝试观察生活中的某类事物,分析它们的共性,包括类似的个体都有哪些属性,有什么动作,然后利用类的格式设计出一个完整的C#类,并在另一个只包含有主函数的类中的主函数内定义一个你的类的对象,并用类名=new 类名(参数表)的方式初始化,之后,采用对象名.方法名(参数表)的形式调用对象所支持的功能。

要求设计的类具有一定的实际对应物或现象,不要为为了类而写类。

比如:时钟,属性特征:时,分,秒;允许的运算或操作:设置时间,显示时间,又过了一秒(滴答);
书:属性特征:名字,出版社,作者,主题说明,价格,等等,
允许的运算:显示(/修改)书名,显示(/修改)出版社,显示(/修改)作者,
显示(/修改)主题说明,显示(/修改)价格
交通灯:属性特征:红灯(亮/灭),绿灯(亮/灭),黄灯(闪烁/不闪烁)
允许的动作:红灯亮,红灯灭,绿灯亮,绿灯灭,黄灯闪烁,
停止黄灯闪烁
栈:属性特征:栈顶,栈底,是否空,是否满,
栈的尺寸(允许保留的元素的个数)
允许的操作:进栈,出栈,检查栈顶元素,判断栈空否,设置栈为空一元二次方程:属性特征:x的平方的系数,x的系数,常数项;
实数解1,实数解2,无实数解信息的字符串;
允许的运算:输入方程系数,计算根,显示方程有关的信息
实验报告应给出测试结果分析,用word 2003格式书写。

实验2 类、对象定义与实现

实验2  类、对象定义与实现

实验2 类、对象定义与实现一类和对象(1) (2学时)实验目的:1.掌握类的定义方法。

2.掌握类成员函数的定义方法。

3.掌握类对象的定义及其访问方式。

4.理解构造函数和析构函数的定义、作用和调用机制。

5.掌握拷贝构造函数的作用和用法。

实验内容:1.定义一个学生类Student,学生类中有3个私有数据成员:num(学号)、name (姓名)、age(年龄);3个公有成员函数:Student(构造函数)、display、~Student(析构函数)。

使用构造函数为Student类的对象赋值(name使用动态内存分配空间),display负责显示学生的基本信息,在析构函数中释放动态分配的内存。

2.阅读程序,预测功能,再上机编辑、运行该程序,以验证自己的预测。

分析:理解拷贝构造函数的目的和调用。

在三种情况下,系统自动调用拷贝构造函数。

⑴当用类的一个对象去初始化该类的另一个对象时;⑵如果函数的形参是类的对象,调用函数,进行形参和实参的结合时;⑶如果函数的返回值是类的对象,函数执行完成返回调用者时。

以下程序都是定义一个屏幕上的点类,该类具有x、y坐标属性。

【程序1】#include <iostream.h>class Point{public:Point(int xx = 0, int yy = 0){X = xx; Y = yy;cout<<"调用构造函数\n";}Point(Point &p);int GetX(){ return X; }int GetY(){ return Y; }private:int X,Y;};Point::Point(Point & p){X = p.X;Y = p.Y;cout<<"调用拷贝构造函数\n";}void main(){Point A(3,4);Point B(A); //b行cout<<B.GetX()<<"\n";}思考:⑴将b行改写为Point B = A; 程序输出结果会有变化吗?⑵将b行改写为Point B; B = A; 程序输出结果会有变化吗?【程序2】#include <iostream.h>class Point{public:Point(int xx = 0,int yy = 0){X = xx; Y = yy;cout<<"调用构造函数\n";}Point(Point & p);int GetX(){ return X; }int GetY(){ return Y; }private:int X,Y;};Point::Point(Point & p){X = p.X;Y = p.Y;cout<<"调用拷贝构造函数\n";}void fun1(Point p)cout<<p.GetX()<<"\n";}void main(){Point A(4,5);Point B(A);cout<<B.GetX()<<"\n";fun1(B); //调用拷贝构造函数,实现形参和实参结合}` 【程序3】#include <iostream.h>class Point{public:Point(int xx=0,int yy=0){X = xx; Y = yy;cout<<"调用构造函数\n";}Point(Point & p);int GetX() {return X;}int GetY() {return Y;}private:int X,Y;};Point::Point(Point &p){X=p.X;Y=p.Y;cout<<"调用拷贝构造函数\n";}Point fun2(){Point Temp(10,20); //调用构造函数return Temp;}void main()Point A(4,5);Point B(A);cout<<B.GetX()<<"\n";B = fun2();cout<<B.GetX()<<"\n";}3.创建类Block用来描述长方体,私有数据成员length、width、height记录长方体的长、宽、高。

实验二:类与对象

实验二:类与对象
b2.getX(), b2.getY()+100); }
} class MyBox {
private int x, y, width, height; MyBox() {
x=0;
}
}
y=0;
width=0;
height=0;
MyBox(int xPos, int yPos, int w, int h) {
(二)创建对象并使用对象
1.编写 Applet 程序 程序功能:这个 Applet 程序要在页面上输出两个矩形,并 伴有文字输出。 SY2_2.java 程序的源代码如下: import java.awt.*; import java.applet.Applet; public class SY2_2 extends Applet { MyBox b1=new MyBox();//创建对象 b1 MyBox b2=new MyBox(170,20,60,60); //创建对象 b2 public void paint(Graphics g) { b1.setPosition(20,20); b1.setSize(60,60); b1.draw(g); g.drawString("矩形 1 的 X 位置 : "+b1.getX(), 20,
public void actionPerformed(ActionEvent e) { // 处理按钮事件
int x=Integer.parseInt(field1.getText())+Integer.parseInt(field 2.getText());
field3.setText(Integer.toString(x)); // 数值 转换为字符串

实验2 类和对象(一)

实验2 类和对象(一)

实验2 类和对象(一)1、实验目的(1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。

(2)初步掌握用类和对象编制基于对象的程序。

(3)学习检查和调试基于对象的程序。

2、实验内容(1)有以下程序:#include <iostream>using namespace std;class Time //定义Time类{public: //数据成员为公用的int hour;int minute;int sec;};int main( ){ Time t1; //定义t1为Time类对象cin>>t1.hour; //输入设定的时间cin>>t1.minute;cin>>t1.sec;cout<<t1.hour<<“:”<<t1.minute<< “:”<<t1.sec<<endl; //输出时间return 0;}改写程序,要求:①将数据成员改为私有的;②将输入和输出的功能改为由成员函数实现;③在类体内定义成员函数。

然后编译和运行程序。

请分析什么成员应指定为公用的?什么成员应指定为私有的?什么函数最好放在类中定义?什么函数最好放在类外定义?(2)分别给出如下的3个文件:①含类定义的头文件student.h,//student.h (这是头文件,在此文件中进行类的声明)class Student //类声明{ public:void display( ); //公用成员函数原型声明private:int num;char name[20];char sex;};②包含成员函数定义的源文件student.cpp//student.cpp //在此文件中进行函数的定义#include <iostream>#include “student.h”//不要漏写此行,否则编译通不过void Student::display( ) //在类外定义display类函数{ cout<<“num:”<<num<<endl;cout<<“name:”<<name<<endl;cout<<“sex:”<<sex<<endl;}③包含主函数的源文件main.cpp。

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

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

实验 2 面向对象编程练习(1)
一、实验目的
1.理解类、对象的概念以及两者之间的联系和区别
2. 能够熟练的根据应用要求定义类和创建对象
2.理解面向对象的封装性,熟练掌握private、缺省、protected、public这四个权限访问限定词的用法。

二、实验要求
1.编写体现一个学生信息的JavaBean。

(1) 用private关键字来修饰Student中的属性:学号、姓名、年龄、籍贯、专业和班级。

(2) 用public关键字来修饰对每一个属性进行设置和获取的方法(setXXX()和getXXX()方法)。

2.编写一个用于描述梯形的类(Trapezoidal)
属性:上底、下底、高
方法:计算面积、计算周长
定义测试类,创建梯形对象,对属性进行赋值(通过构造方法完成),输出该梯形的面积和周长。

3.private关键字所定义的属性和方法只能在本类中使用。

dafault(缺省)关键字所定义的属性能够在本类中,以及与该类在同一个包中的类访问。

protected关键字所修饰的属性能够被本类、同一个包中的类、及其子类访问。

public 关键字所修饰的属性在任何类中都能够被访问。

自己动手编写小程序,对上述的四句话进行验证。

实验二 类和对象_ 参考答案

实验二 类和对象_  参考答案

实验二类和对象(参考答案)班级:学号:姓名:成绩:一.实验目的1.理解面向对象程序设计的基本思想;2.掌握类和对象的概念、定义和使用方法。

3.掌握不同特性对象成员的访问方法。

二.使用的设备和仪器计算机+Windows XP +Visual C++6.0三.实验内容及要求1、定义一个表示长方体类Cuboid,数据成员包括length(长)、width(宽)、height(高),成员函数包括长方体的输入、输出、计算体积和表面积等。

在主函数中,定义3个长方体的对象,并调用成员函数完成其功能。

2、定义一个学生类Student,数据成员包括学号、姓名、数学成绩、英语成绩和C++成绩,成员函数包括:输入学生的信息函数;输出学生的信息函数;设置学生的信息函数;计算学生的平均成绩的函数。

在main函数中调用以上函数实现相应功能。

3、定义一个图书类Book,在该类中包括以下数据成员和成员函数:数据成员:id(书号)、bookname(书名)、price(价格)、total(总存书数量)、number(当前剩余图书数量)成员函数:Input()——图书信息输入;Output()——图书信息输出;Borrow()——借阅图书,并显示当前剩余图书数量;Restore()——归还图书,并显示当前剩余图书数量。

在主函数中,要求创建某种图书对象,并对该图书进行简单的输入、输出、借阅和归还管理。

选择题:4、根据以下要求类的编写。

1)定义一个日期类Date,数据成员包括年、月、日,成员函数包括:Input()——日期信息输入;Output()——日期信息输出;Set()——设置日期信息2)在第2题Student类中增加一个出生日期成员,使用Date类来定义。

然后修改相应的成员函数,并增加一个成员函数GetAge,用来计算并返回学生的年龄。

在主函数中定义对象,测试以上功能。

四.实验步骤1、程序代码:#include <iostream>using namespace std;class Cuboid{public:void Input();void Show();float Volume();float Area();private:float length;float width;float height;};void Cuboid::Input(){cout<<"please input length,width,height:";cin>>length>>width>>height;}void Cuboid::Show(){cout<<"length="<<length<<" width="<<width<<" height="<<height<<endl;}float Cuboid::Volume(){return(length*width*height);}float Cuboid::Area(){return (length*width+length*height+height*width)*2;}int main(){Cuboid Cuboid1,Cuboid2;Cuboid1.Input();cout<<"Cuboid1 Information:"<<endl;Cuboid1.Show();cout<<"V olmue="<<Cuboid1.V olume()<<endl;cout<<"Area="<<Cuboid1.Area()<<endl;cout<<endl;Cuboid2.Input();cout<<"Cuboid2 Information:"<<endl;Cuboid2.Show();cout<<"V olmue="<<Cuboid2.V olume()<<endl;cout<<"Area="<<Cuboid2.Area()<<endl;cout<<endl;return 0;}运行结果:2、程序代码://student.h 学生信息的头文件#include <iostream>#include<string>using namespace std;class Student{public:void Input_Stu(); //输入学生信息函数void Show_Stu(); //输出学生信息函数void Set(int n,string nm,double m,double e,double c); //设置学生信息函数 double Ave_Stu(); //计算并返回学生平均成绩函数private:int num;string name;double math,english,cprogram;};//student.cpp 学生信息的源文件#include"student.h"void Student::Input_Stu()cout<<"请输入学生的学号、姓名、数学、英语、C++的成绩:"<<endl; cin>>num>>name>>math>>english>>cprogram;}void Student::Show_Stu(){cout<<"********Student Info********"<<endl;cout<<"num="<<num<<endl;cout<<"name="<<name<<endl;cout<<"math="<<math<<endl;cout<<"english="<<english<<endl;cout<<"cprogram="<<cprogram<<endl;}void Student::Set(int n,string nm,double m,double e,double c){num=n; name=nm;math=m; english=e; cprogram=c;}double Student::Ave_Stu(){return (math+english+cprogram)/3;}//main.cpp 主函数所对应的源文件#include"student.h"int main(){Student s1;s1.Input_Stu ();s1.Show_Stu ();cout<<"Average Score="<<s1.Ave_Stu ()<<endl;cout<<endl;s1.Set(2001,"Tom",70,80,90);s1.Show_Stu ();cout<<endl<<"Average Score="<<s1.Ave_Stu ()<<endl;cout<<endl;return 0;}运行结果:3、程序代码:#include<iostream>#include<string>using namespace std;class Book{public:void Input(); //图书信息输入;void Output(); //图书信息输出;void Borrow(); //借阅图书,并显示当前剩余图书数量;void Restore(); //归还图书,并显示当前剩余图书数量。

实验2 类和对象

实验2  类和对象

实验2 类和对象(1)班级学号(最后两位)姓名成绩一、实验目的1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2.掌握类对象的定义,对象的初始化;3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数;二、实验内容1.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。

#include<iostream.h>class one{ int a1,a2;public:one(int x1=0, x2=0);};void main(){one data(2,3);cout<<data.a1<<endl;cout<<data.a2<<endl;}2.分析以下程序的错误原因,给出修改方案使之能正确运行。

#include <iostream.h>class Amplifier{float invol,outvol;public:Amplifier(float vin,float vout){invol=vin;outvol=vout;}float gain();};Amplifier::float gain() { return outvol/invol; }void main(){ Amplifier amp(5.0,10.0);cout<<"\n\nThe gain is =>"<<gain()<<endl;}3.定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。

4.定义计数器类Counter。

要求具有以下成员:计数器值;可进行增值和减值计数;可提供计数值。

Java实验报告-2-类和对象

Java实验报告-2-类和对象
// TODO 自动生成的方法存根
class Fushu
{
private double a; //实部
private double b;//虚部
public Fushu(double x,double y)
{
a=x;
b=y;
}
public void addfushu(double x,double y)
"b="+10.4+"+"+11.2+"*i"+"\n"+
"a+b="+a.geta()+"+"+a.getb()+"*i"+"\n"+
"a-b="+b.geta()+b.getb()+"*i");
}
}
实验结果
小结
通过本次实验,我对java里面类和对象的定义和使用有了一定的认识和熟悉。
说明:如果完成了一次实验的多个实验题目,可以在实验报告中复制该表,填写其他实验题目的报告。
{
return this.b;
}
}
Fushu a = new Fushu(12.9,9.7);
a.addfushu(10.4, 11.2);
Fushu b = new Fushu(12.9,9.7);
b.plusfushu(10.4, 11.2);
JOptionPane.showMessageDialog(null,"a="+12.9+"+"+9.7+"*i"+"\n"+
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二类与对象(2)
一、实验目的
1、掌握类的定义和使用。

2、掌握类声明和类体。

3、掌握成员变量和局部变量的区别和使用方法。

4、多维数组的使用。

二、实验设备
1、硬件:PC机。

2、软件:DOS运行环境、EditPlus编辑软件。

三、实验预习要求
1、阅读3.2节类的定义和使用。

2、阅读3.2.2 成员变量和局部变量的区别的使用方法。

3、预习程序【例3-1】【例3-2】
4、多维数组的使用。

熟悉程序【例2-32】
四、实验内容和步骤
1、展示简单数据类型与引用数据的区别
import java.io.*;
public class PassTest {
float ptValue;
public void changeInt(int value) {
value = 55; // 在方法内部对值参数进行了修改
}
public void changeObjValue(PassTest ref) {
ref.ptValue = 99f; // 在方法内部对引用参数进行了修改
}
public static void main(String args[]) {
int val;
PassTest pt = new PassTest();
val = 11;
System.out.println("初始的整型值是: " + val);
pt.changeInt(val); // 值参数
System.out.println("改变后整型值是: " + val);
// 值参数值的修改,没有影响值参数的值
pt.ptValue = 101f;
System.out.println("初始的整型值是: " + pt.ptValue);
pt.changeObjValue(pt); // 引用类型的参数
System.out.println("改变后整型值是: " + pt.ptValue);
// 引用参数值的修改,改变了引用参数的值
}
}
2、展示局部变量和类成员变量作用域
class Variable {
int x = 0, y = 0, z = 0; //类的成员变量
void init(int x, int y) {
this.x = x;
this.y = y;
int z = 5; //局部变量
System.out.println("** 初始化中 **");
System.out.println("x=" + x + " y=" + y + " z=" + z);
}
}
public class VariableTest {
public static void main(String args[]) {
Variable v = new Variable();
System.out.println("** 初始化之前 **");
System.out.println("x=" + v.x + " y=" + v.y + " z=" + v.z);
v.init(20, 30);
System.out.println("** 初始化之后 **");
System.out.println("x=" + v.x + " y=" + v.y + " z=" + v.z);
}
}
3、多维数组的使用
public class MatrixMultiply {
public static void main(String args[]) {
int i, j, k;
int a[][] = new int[2][3]; // 动态初始化一个二维数组
// 静态初始化一个二维数组
int b[][] = { { 1, 5, 2, 8 }, { 5, 9, 10, -3 }, { 2, 7, -5, -18 } };
int c[][] = new int[2][4]; // 动态初始化一个二维数组
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
a[i][j] = (i + 1) * (j + 2);
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++) {
c[i][j] = 0;
for (k = 0; k < 3; k++)
c[i][j] += a[i][k] * b[k][j];
}
}
System.out.println("*******Matrix C********");// 打印Matrix C标记
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++)
System.out.println(c[i][j] + " ");
System.out.println();
}
}
}
五、实验结果和注意事项
1、实验报告要求每人提交一份电子文档,内容写全,包括实验名称、班级、姓名、学号
等。

2、将本次上机实验结果按照实验要求内容依次进行,实验报告需要填写源代码在word文
档上,并且截图实验结果。

相关文档
最新文档