实验2 类和对象(一)

合集下载

实验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记录长方体的长、宽、高。

C++实验2 类和对象(1)

C++实验2  类和对象(1)

实验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。

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

5.编写一个程序计算两个给定的长方形的周长和面积。

实验2 类和对象基础

实验2 类和对象基础

实验2 类和对象基础【开发语言及实现平台或实验环境】Windows2000 或XP,JDK1.5以上,JCreator 等编辑工具。

【实验目的】1.理解数据封装和隐藏2.能够创建类3.能够创建和使用对象4.能够控制对实例变量和方法的访问5.理解面向对象的价值【实验要求】1.源程序编辑要遵循教材中强调的间隔和缩进约定。

2.掌握调试方法【实验内容】1. 三角形、梯形和圆形的类封装。

编写一个 Java 应用程序,该程序中有3 个类:Trangle,Lader 和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。

具体要求如下:(1)Trangle 类具有类型为double 的三个边以及周长、面积属性,Trangle 类具有返回周长、面积以及修改三个边的功能,另外,Trangle 还具有一个boolean 类型的属性,该属性用来判断三个数是否构成一个三角形;(2)Lader 类具有类型为double 的上底、下底、高、面积属性,就有返回面积的功能;(3)Circle 类具有类型为double 的半径、周长和面积属性,具有返回周长、面积的功能。

[程序模版]class Trangle {double sideA,sideB,sideC,area,length;boolean boo;public Trangle(double a,double b,double c) {【代码1】 // 参数a,b,c 分别赋值给sideA,sideB,sideC。

if(【代码2】) { // a,b,c 构成三角形的条件表达式。

【代码3】 // 给boo 赋值。

}else {【代码4】 // 给boo 赋值。

}}double getLength() {【代码5】 // 方法体,要求计算出length 的值并返回。

}public double getArea() {if(boo) {double p=(sideA+sideB+sideC)/2.0;area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;return area;}else {System.out.println("不是一个三角形,不能计算面积"); return 0;}}public void setABC(double a,double b,double c) {【代码6】 // 参数a,b,c 分别赋值给sideA,sideB,sideC。

实验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。

c++类和对象实验报告

c++类和对象实验报告

实验一类和对象实验课程名:面向对象程序设计(C++)专业班级:学号:姓名:实验时间:实验地点:指导教师:2.设计一个带头结点的单链表类,要求:(1)生成一个整数线性表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。

(2)设计一个测试主函数,实际运行验证所设计单链表类的正确性。

实验代码:#include<iostream>using namespace std;template <class T>struct Node{T data;Node<T> *next; //此处<T>也可以省略};template <class T>"<<endl;L1.Insert(4, 17);cout<<"插入元素后链表为:";L1.PrintList( );L1.Delete(8);cout<<"删除第8个元素后链表变为:";L1.PrintList( );return 0;}实验结果:3.设计一个不带头结点的单链表类,要求:(1)不带头结点单链表类的成员函数包括取数据元素个数、插入元素、删除所有值为k的元素、取数据元素。

(提示:要考虑在第一个数据元素结点前插入和删除第一个数据元素结点时与在其他位置插入和删除其他位置结点时的不同情况。

)(2)设计一个测试主函数,实际运行验证所设计循环单链表类的正确性。

实验代码:#include<iostream>using namespace std;cout<<"在链表第5个位置插入元素17后链表变为:";L.PrintList();L.Delete(8);cout<<"删除第8个元素后链表变为:";L.PrintList();return 0;}实验结果为:4.设计一个带头结点的循环单链表类,实现约瑟夫环问题;问题描述:设编号为1,2,…,n(n>0)个人按顺时针方向围坐-圈,每人持有一个正整数密码。

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

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

实验 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.定义类与对象
(1)类是代表一类实体的抽象。

它包含了一个共同拥有的结构和行为。

类是面向对象程序设计的基本元素。

(2)对象是一个实例。

它拥有一个特定于其类型的属性,并表现出对应的行为。

对象是程序中实际的可操作的元素。

2.类的成员
(1)类的成员可以是变量,函数,常量等等。

(2)变量:类的成员变量可以存储数据成员和提供给类的方法,这些变量被称为实例变量;类变量存储类及其对象的信息。

(3)函数:类的成员函数用于封装一定的行为或对对象的设置,它可以访问实例变量和类变量的值,以及实现一定的功能。

多态性是指一个类可以根据不同环境要求而采用不同的行为。

接口就是把数据和逻辑封装在一起的内部接口。

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

实验二---类与对象的定义与使用
}
}
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;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验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。

为了组成一个完整的源程序,应当有包括主函数的源文件:
//main.cpp 主函数模块
#include <iostream>
#include “student.h”//将类声明头文件包含进来
int main( )
{Student stud; //定义对象
stud.display(); //执行stud对象的display函数
return 0;
}
请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value。

上机调试并运行。

(3)需要求3个长方柱的体积,请编一个基于对象的程序。

数据成员包括length(长)、width(宽)、height(高)。

要求用成员函数实现以下功能:
①由键盘分别输入3个长方柱的长、宽、高;
②计算长方柱的体积;
③输出3个长方柱的体积。

请编程序,上机调试并运行。

相关文档
最新文档