实验二 类与对象

合集下载

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"+

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

实验二---类与对象的定义与使用
}
}
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;

类与对象基础实验(二)实验报告

类与对象基础实验(二)实验报告

浙江大学城市学院实验报告课程名称面向对象程序设计实验项目名称类与对象基础(二)学生姓名葛添翼专业班级计算0903 学号30901183一. 实验目的和要求1.掌握String类与StringBuffer类2.掌握数组对象的使用3.掌握基本数据类型的包装类的使用二. 实验内容1. 编程实现:解析身份证号码的生日。

2. 编程实现:字符串比较和转换。

3. 编程实现:解析身份证号码的地区。

4. 编程实现:数组操作。

三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1. 编程实现:解析身份证号码的生日。

要求从键盘输入身份者号码字符串,将其中生日信息提取,并屏幕显示。

(身份证号码验证,只需要验证身份证号码为18位)。

请分析并回答以下问题:(1)程序源码如下:import java.util.*;public class test1 {public static void main(String args[]){Scanner scanner = new Scanner(System.in);System.out.println("请输入身份证号!");String a = scanner.next();int b =a.length();if (b == 18)System.out.println(a.substring(6,10)+'-'+a.substring(10,12)+'-'+a .substring(12,14));elseSystem.out.println("error!");}}(2)请将运行结果截图:2.编程实现:字符串比较和转换。

编写一个Java应用程序,判断两个字符串是否相同,判断字符串的前缀、后缀是否和某个字符串相同,按照字典顺序比较两个字符串的大小关系,检索字符串,创建子字符串,将数字型字符串转换为数字,将字符串存放到数组中,用字符数组创建字符串。

实验二——精选推荐

实验二——精选推荐

实验⼆实验02:类与对象实验学时:6+(6)实验类型:验证实验要求:必修⼀、实验⽬的类是C++扩展数据类型,可以封装不同类型的数据成员和函数成员,类是⾯向对象程序设计的基础。

本次实验内容包括⾯向对象的基本概念、构造函数与析构函数,从实际问题抽象出类等,通过实验要求:1、理解类和对象的概念;2、了解C++在⾮⾯向对象⽅⾯对C功能的扩充与增强。

3、初步掌握使⽤类和对象编制C++程序。

4、掌握对象数组、对象指针和string类的使⽤⽅法。

5、掌握使⽤对象、对象指针和对象引⽤作为函数参数的⽅法。

6、掌握类对象作为成员的使⽤⽅法。

7、掌握静态数据成员和静态成员函数的使⽤⽅法。

8、理解友元的概念和掌握友元的使⽤⽅法。

⼆、实验内容1、输⼊下列程序。

#includeusing namespace std;class Coordinate{public:Coordinate(int x1,int y1){ x=x1;y=y1; }Coordinate(Coordinate &p);~Coordinate(){ cout<<"Destructor is called\n";}intgetx(){ return x;}intgety(){ return y;}private:intx,y;};Coordinate::Coordinate(Coordinate &p){x=p.x;y=p.y;cout<<"Copy-initialization Constructour is called\n";}int main(){Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;cout<<"p3=("<return 0;}【运⾏结果截图】:将Coordinator类中带有两个参数的构造函数进⾏修改,在函数体内增添下列语句:cout<<”constructor is called.\n”;【运⾏结果截图】:【运⾏结果分析】:按下列要求进⾏调试:在主函数体内,添加下列语句:Coordinator p4;Coordinator p5(2);调试程序时会出现什么错误?为什么?如何对已有的构造函数进⾏适当修改?【运⾏结果截图】:【解释】:经过以上第(2)步和第(3)步的修改后,结合运⾏结果分析:创建不同的对象时会调⽤不同的构造函数。

实验2 类、对象

实验2  类、对象

5、什么是构造函数,析构函数?它们都具有哪些功 、什么是构造函数,析构函数? ?(2) 能?( )
析构函数 在对象生存期结束前进行必要的清理工作,如释放对象所占用 内存资源等。 析构函数如下的特点: (1)它的名称是在构造函数前加“~”构成。 (2)它也没有返回值,一般被定义为公有成员函数 (3)它没有参数,不能重载。 (4)它被执行后,对象将被删除,对象所占用的存储单元被释 放。
1、什么是类、对象? 、什么是类、对象
(1)类是面向对象中的一个重要概念,它是对一组具有共同特 征的对象的抽象和统一描述。 (2)类是具有相同属性(数据)和行为(操作)的一组对象的 抽象,即是创建对象时的模型或模板,实现数据和函数的封装 3 (3)从语法角度,类也是一种数据类型,即用户自定义的数 据类型,而一个个具体的对象则视为属于该数据类型的一个变 量。类与基本数据类型不同之处在于,类这个数据类型中既包 含数据,也包含了对数据进行操作的函数。 (4)对象是类的一个实体。类是抽象,通用的描述,对象是类 的具体表现。如同基本数据类型和该类型的变量之间的关系一 样。任何类型均表示一般性的抽象概念。而对象和变量代表具 体的变量。
样例程序
13
??掌握类和对象的定义和使用方法掌握类和对象的定义和使用方法??掌握类的不同属性成员的使用方法掌握类的不同属性成员的使用方法??掌握静态成员的使用掌握静态成员的使用??掌握对象数组的概念与使用方法掌握对象数组的概念与使用方法??掌握构造函数与析构函数的概念及使用方法掌握构造函数与析构函数的概念及使用方法??观察构造函数与析构函数的执行过程观察构造函数与析构函数的执行过程类对象和构造析构函访问属性。通常将数据成员定义 为私有或保护成员,以体现对数据的封装性;一般将成员函数 定义为公有成员。 (5)在类的定义中不能对数据成员进行初始化 (6)类的数据成员可以是C++语法规定的任意数据类型,但不 能用存储类型auto,register,或extern (7)类中的数据成员可以是其他类的对象,但不能以类自身的 对象作为本类的成员。 (8)类定义必须以分号结束 (9)注意结构体与类的区别。

实验2 类与对象

实验2 类与对象

实验2 面向对象编程(类与对象)一、实验目的:1.掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现;2.掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法;3.掌握类变量与实例变量,以及类方法与实例方法的区别。

二、实验要求1. 正确地定义类、方法和属性;2. 学会方法的参数传递和返回值的用法;3. 熟练使用类及其成员修饰符;4. 使用构造函数创建类的对象;5. 类变量与实例变量,以及类方法与实例方法的使用;6. 程序应包括各个被调用方法的执行结果的显示。

7. 写出实验报告。

要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。

三、实验内容1.编写3个基本类:Triangle,Ladder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”,1个主类:Compute。

要求:计算每个形状的面积和周长。

主类和3个基本类属于不同的包。

2.定义一个复数(z=x+iy)类Complex,包含:•两个属性:实部x和虚部y•默认构造函数 Complex(),设置x=0,y=0•构造函数:Complex(int i,int j)•显示复数的方法:showComp()•求两个复数的和:public Complex addComp(Complex C1,Complex C2) •求两个复数的差:public Complex subComp(Complex C1,Complex C2)比较两个复数是否相等:public boolean equalComp(ComplexC1,Complex C2)实部x和虚部y可由键盘或main方法参数提供输入。

3.定义一个学生类(Student),属性有private的名字(name), public的年龄(age),专业(specialty)和封装name属性的方法:setName(),getName(),getspecialty()编写Application,创建一个学生对象,设置name和age属性值,然后调用一个方法(此方法将对象作为参数传递,在方法中打印出学生的名字name和年龄age)。

实验二:类和对象(一)

实验二:类和对象(一)

福建农林大学金山学院实验报告系(教研室):信息与机电工程系专业:计算机科学与技术年级:2009实验课程:类与对象姓名:黄伟河学号:092231048实验室号计算机号实验时间:指导教师签字:成绩:实验2 类和对象(一)一、实验目的和要求(1) 掌握类、类的数据成员、类的成员函数的定义方式,理解类成员的访问控制方式。

(2) 掌握对象的定义和操作对象的方法。

(3) 掌握构造函数和析构函数的定义与执行过程。

二、实验内容和原理1、调试下面程序,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。

2、(1)在以下程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增加如下语句:cout<<”Constructor is Called! \n”;(2)写出程序的输出结果,并解释输出结果。

cout<<”Constructor is Called! \n”;3、请定义一个三角形类triangle,私有数据成员为三角形的三边(first,second,third),设计无参构造置first、second、third都为0,有参构造函数置三边位对应形参的值,另外还包括求三角形周长、求三角形的面积、修改三角形三边的值,输出三角形三边等公有成员函数。

要求输出三角形三边的格式为“三边分别是:first、second、third”。

三、实验环境1. 硬件:PC机;2. 软件:Windows操作系统、Visual C++ 6.0四、算法描述及实验步骤1、(1)根据题目要求编写好程序代码并在VC环境下输入源程序。

(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。

(3)编译和连接,仔细分析编译信息,如有错误应找出原因并改正之。

#include<iostream.h>class Student{private:char*name;int age ;char sex;public:Student(char*newname,int newage,char newsex){name=newname;age=newage;sex=newsex;}int getAge(){return age;}char getSex(){return sex;}char*getName(){return name;}};int main(){Student mystudent("jim",19,'f');cout<<mystudent.getAge()<<mystudent.getSex()<<mystudent.getName()<<endl;return 0;}(4)运行程序,输入数据,分析结果。

实验2 类与对象(1) (1)

实验2 类与对象(1) (1)

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

(2)掌握类的声明和对象的声明。

(3)观察构造函数和析构函数的执行过程二、实验内容及步骤1.定义一个Book(图书)类,在该类定义中包括:数据成员:bookname(书名)、price(价格)和number(存书数量);成员函数:display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。

在main函数中,要求创建某一种图书对象,并对该图书进行简单的显示、借阅和归还管理。

将程序补充完整。

#include <iostream.h>#include <string.h>#include <stdlib.h>class Book{ public:void setBook(char*,float,int);void borrow();void restore();void display();private:char bookname[40];float price;int number;};//在类外定义Book类的成员函数void Book::setBook(char *name, float pri, int num){price=pri;number=num;}void Book::borrow(){ if ( ){ cout << "已没存书,退出!" << endl;abort();//中止当前的过程,返回一个错误代码。

}number = number - 1;cout << "借一次,现存书量为:" << number << endl;}void Book::restore(){ number = number + 1;cout << "还一次,现存书量为:" << number << endl;}void Book::display(){ cout << "存书情况:" << endl<< "bookname:" << bookname << endl<< "price:" << price << endl<< "number:" << number << endl;}void main(){ char flag, ch;Book computer;computer.setBook( "c++程序设计基础" , 32, 1000 );computer.display();ch = 'y';while ( ch == 'y' ){ cout << "请输入借阅或归还标志(b/r):";cin >> flag;switch ( ){ case 'b': computer.borrow(); break;case 'r': computer.restore();}cout << "是否继续?(y/n)";cin >> ch;}computer.display();}2.下列代码使用结构类型表示复数,输入两个复数,可以选择进行复数的+、-、×或÷运算,并输出结果,请设计复数类,实现+、-、×或÷运算并在主函数中使用复数对象进行测试。

  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文
档上,并且截图实验结果。

相关文档
最新文档