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

实验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 类和对象基础【开发语言及实现平台或实验环境】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 类和对象(一)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++)专业班级:学号:姓名:实验时间:实验地点:指导教师: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 关键字所修饰的属性在任何类中都能够被访问。
自己动手编写小程序,对上述的四句话进行验证。
[实验报告]类和对象
![[实验报告]类和对象](https://img.taocdn.com/s3/m/b372f7ee0d22590102020740be1e650e52eacfce.png)
[实验报告]类和对象
一、实验目的
通过本次实验,了解抽象的一种程序设计概念“类”和“对象”,理解类之间的继承与多态性,以及封装对对象的各种属性和行为,实现软件对象模型与真实世界对象间的映射。
二、实验内容
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、学习类与对象的定义,掌握类与对象的使用方法。
2、学习数据成员与成员函数的访问方式,理解构造函数和析构函数的定义与执行过程,学会构造函数的重载方法。
3、掌握数组与指针的定义与使用方法,理解数组与指针的存储分配与表示4、掌握用指针和引用向函数传递参数。
5、掌握静态数据成员和静态成员函数的使用。
6、理解友元与友元函数的作用与使用方法。
、实验内容1、下面是一个计算器类的定义,请完成该类成员函数的实现class Counter{public:Counter(int number);void increment(); // 给原值加1void decrement(); // 给原值减1int getValue(); // 取得计数器值int print(); // 显示计数private:int value;};#include<iostream.h>class count{public:counter(int number);void increment();void decrement();int getvalue(int);int print();private:int value;};void count::increment(){int a=value+1;}void count::decrement(){int b=value-1;}int count::getvalue(int s){value=s;return 0;}int count::print(){cout<<value<<"+1="<<value+1<<endl; cout<<value<<"-1="<<value-1<<endl; return 0; }void main(){count s;s.getvalue(5);s.print();}//2、根据注释语句的提示,实现类Date的成员函数。
实验2 类、对象

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

类和对象的实验报告类和对象的实验报告引言:在计算机科学领域,类和对象是面向对象编程(Object-Oriented Programming,简称OOP)的核心概念。
通过类和对象的使用,可以更好地组织和管理代码,提高代码的可重用性和可维护性。
本实验旨在通过实际操作,深入理解类和对象的概念以及它们在程序设计中的应用。
实验目的:1. 掌握类和对象的基本概念;2. 理解类的属性和方法的定义与使用;3. 熟悉对象的创建和使用过程;4. 学会通过类和对象实现程序的模块化和代码的重用。
实验过程:1. 定义类:首先,我们需要定义一个类来描述某个具体事物的属性和行为。
以“动物”为例,我们可以定义一个名为“Animal”的类,其中包含属性(如名称、年龄)和方法(如叫声、移动)。
2. 创建对象:在类的基础上,我们可以创建一个或多个对象,每个对象都是类的一个实例。
例如,我们可以创建一个名为“cat”的对象,代表一只猫。
3. 访问对象的属性和方法:通过对象,我们可以访问和修改类中定义的属性,并调用类中定义的方法。
例如,我们可以通过“”来获取猫的名称,通过“cat.age”来获取猫的年龄,通过“cat.meow()”来让猫发出叫声。
4. 类的继承:在某些情况下,我们可以创建一个新的类,该类继承了已有类的属性和方法,并可以在此基础上进行扩展。
例如,我们可以创建一个名为“Dog”的类,它继承了“Animal”类的属性和方法,并增加了额外的方法“bark()”。
实验结果:通过本次实验,我们成功地定义了“Animal”类和“Dog”类,并创建了相应的对象。
我们可以通过对象访问类中定义的属性和方法,实现了对动物的描述和操作。
此外,我们还学会了如何使用类的继承,提高了代码的重用性和可维护性。
实验总结:通过本次实验,我们深入理解了类和对象的概念,并掌握了它们在程序设计中的应用。
类和对象的使用可以更好地组织和管理代码,提高代码的可重用性和可维护性。
西华大学C++实验报告2 类和对象 ok

.西华大学实验报告(计算机类)开课学院及实验室:机械工程与自动化 实验时间 : 年 月 日一、实验目的1. 掌握类和对象的定义和使用方法;2. 掌握定义构造函数和析构函数、重载构造函数的方法;3. 掌握静态成员和常类型的语法;4. 能正确理解public, private 和protected 三种访问权限及继承方式的区别;5. 掌握程序多文件的组织方法。
二、内容与设计思想上机实践内容:定义学生类Student ,用于存放并输出学生的姓名、学号、年龄、程序设计的成绩并统计学生人数。
1) 定义缺省构造函数、带参数的构造函数和拷贝构造函数给学生的姓名、学号、年龄、程序设计的成绩分配内存并赋值;2) 定义函数输出学生信息;3)定义析构函数;4) 在主函数中定义多个对象并调用上述成员函数进行测试;5)采用头文件和源文件对程序进行组织。
三、使用环境操作系统:Windows XPC++环境:Visual C++ 6.0四、核心代码及调试过程#include <iostream>#include<string>using namespace std;static int count=0;class Student{private:string name;long num;int age;int score;public:Student(){name="印成波";num=224;age=21;score=95;count++;}Student(string Name,long Num,int Age,int Score){ name=Name;num=Num;age=Age;score=Score;count++;}Student(Student &a);void show(){cout<<"姓名:"<<name<<endl;cout<<"学号:"<<num<<endl;cout<<"年龄:"<<age<<endl;cout<<"成绩:"<<score<<endl;}~Student(){}};Student::Student(Student &a){name=;num=a.num;age=a.age;score=a.score;}void main() {Student student1;student1.show();Student student2("student num1",555,22,99);student2.show();Student student3(student2);student3.show();cout<<"学生人数:"<<count<<endl;}五、总结通过对本次上机的过程,使我对构造函数、析构函数、拷贝构造函数等有了一定的了解。
实验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)运行程序,输入数据,分析结果。
类与对象基础实验(一)实验报告(精品)

浙江大学城市学院实验报告课程名称面向对象程序设计实验项目名称类与对象基础实验(一)学生姓名专业班级学号一. 实验目的和要求1. 掌握对象与类的关系2. 掌握类的域、方法、构造器的概念3. 掌握对象的创建与初始化4. 掌握方法和域(静态和非静态)的使用方式5. 掌握Math类,掌握静态成员的使用方式6. 理解方法和构造器重载现象二. 实验内容1. 程序阅读并回答问题2. 类的使用3. 编程实验:猜数字4. 编程实验:素数判断与统计三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果)1. . 程序阅读并回答问题:阅读实验讲义的对应代码,回答以下问题。
(1)将上述代码编译运行,将运行结果截图。
(2)上述源码中共定义了几个类?分别刻画了哪些数学图形?Triangle类有哪些域和方法?Triangle的这些域和方法是静态的还是非静态的?答:定义了三个类,分别刻画了求三角形,梯形,圆的周长以及面积问题Triangle类中域有double sideA,sideB,sideC,area,length;boolean boo;域是非静态的方法有double getLength();public double getArea()以及public void setABC(double a,double b,double c)方法也是非静态的(3)类和对象是什么关系?请从上述AreaAndLength.java中举例说明如何创建对象。
答:类是对象的模版,对象是类的一个实例对象的创建利用构造器,比如在Triangle中存在着构造器Triangle(){};在最后的main函数中存在着triangle =new Triangle(3,5,4);创建函数对象并且赋值(4)Triangle类中出现的Math.sqrt是什么?请举例说明Math类中还有哪些常用域和方法?答:Math.sqrt为数学类中求开平方的静态方法area=Math.PI*radius*radius;得知math中存在Math.PI常用域常用的方法有Math.random()返回随机数字等(5)静态域和方法与非静态域和方法在使用时有什么区别?请从上述AreaAndLength.java中举例说明。
实验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.下列代码使用结构类型表示复数,输入两个复数,可以选择进行复数的+、-、×或÷运算,并输出结果,请设计复数类,实现+、-、×或÷运算并在主函数中使用复数对象进行测试。
C++实验二类与对象(附问题详解)

实验二类与对象实验目的和要求1.掌握类、类的数据成员、类的成员函数的定义方式。
2.理解类成员的访问控制方式。
3.掌握对象的定义和操作对象的方法。
4.理解构造函数和析构函数的定义与执行过程。
5.掌握重载构造函数的方法。
6.了解拷贝构造函数的定义方法。
实验容1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。
#include<iostream.h>class Aa{public:Aa(int i=0){a=i;cout<<"Constructor "<<a<<endl;}~Aa(){cout<<"Destructor "<<a<<endl;}void print(){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}2.检查下面的程序,找出其中的错误,并改正。
然后上机调试,使程序能正常运行。
(1)#include<iostream.h>class Date{void set_date();void show_date();int year;int month;int day;};Date d;int main(){set_date();show_date();}void set_date(){cin>>d.year;cin>>d.month;cin>>d.day;}void show_date(){cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl; }(2)#include<iostream.h>class A{public:void A(int i=0){m=i;}void show(){cout<<m<<endl;}void ~A(){}private:int m;};int main(){A a(5);a.m+=10;a.show();return 0;}(3)#include<iostream.h> class X{private:int a=0;int &b;void setA(int i){a=i;}X(int i){a=i;}public:int X(){a=b=0;}X(int i,int j){a=i;b=j;}void setC(int k){c=c+k;}};void main(){X x1;X x2(2);X x3(1,2);x1.setA(3);}3.调试下列程序。
实验二类和对象_参考答案

实验⼆类和对象_参考答案实验⼆类和对象(参考答案)班级:学号:姓名:成绩:⼀.实验⽬的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、程序代码:#includeusing 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="<Cuboid1.Show();cout<<"V olmue="<cout<<"Area="<cout<Cuboid2.Input();cout<<"Cuboid2 Information:"<Cuboid2.Show();cout<<"V olmue="<cout<<"Area="<cout<运⾏结果:2、程序代码://student.h 学⽣信息的头⽂件#include#includeusing 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++的成绩:"<>num>>name>>math>>english>>cprogram;}void Student::Show_Stu(){cout<<"********Student Info********"<cout<<"num="<cout<<"name="<cout<<"math="<cout<<"english="<cout<<"cprogram="<}void Student::Set(int n,string nm,double m,double e,double c)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="<cout<s1.Set(2001,"Tom",70,80,90);s1.Show_Stu ();cout<3、程序代码:#include#includeusing namespace std;class Book{public:void Input(); //图书信息输⼊;void Output(); //图书信息输出;void Borrow(); //借阅图书,并显⽰当前剩余图书数量;void Restore(); //归还图书,并显⽰当前剩余图书数量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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个长方柱的体积。
请编程序,上机调试并运行。