文档库 最新最全的文档下载
当前位置:文档库 › 实验二:类与对象

实验二:类与对象

实验二:类与对象
实验二:类与对象

实验二:类与对象

一、实验目的

1.掌握面向对象程序设计的方法和Java作为面向对象程序设计语

言的特点;

2.掌握如何构造一个类和如何创建一个对象,了解类与对象的关系;

3.掌握修饰符和构造方法的使用规则;

4.掌握如何创建包,通过包如何管理类;

5.掌握Java的继承机制和实现多态的方法。

二、实验要求

1.编写一个体现面向对象思想的程序。

2.编写一个创建对象和使用对象的方法的程序。

3.编写不同成员变量、成员方法修饰方法的程序。

4.编写创建自定义包的程序。

三、实验内容

(一)创建 Applet 应用小程序

1.创建一个Applet 应用程序SY2_1.java 文件。

●程序功能:建立一个Applet 小程序,使其可以进行简单的加

法运算。该程序要包含类、接口、属性、方法、事件等面向对

象的基本元素。

●程序源代码如下:

import java.awt.*;

import java.awt.event.*;

import java.applet.Applet;

public class SY2_1 extends Applet implements ActionListener {

Label label1=new Label("+");

Label label2=new Label("=");

TextField field1=new TextField(6);

TextField field2=new TextField(6);

TextField field3=new TextField(6);

Button button1=new Button("相加");

public void init() { // 初始化

add(field1);

add(label1);

add(field2);

add(label2);

add(field3);

add(button1);

button1.addActionListener(this);

}

public void actionPerformed(ActionEvent e) { // 处理按钮事件

int

x=Integer.parseInt(field1.getText())+Integer.parseInt(field 2.getText());

field3.setText(Integer.toString(x)); // 数值

转换为字符串

}

}

2.编写一个浏览Applet 应用程序的页面文件SY2_1.HTML,源代码如。

3.将SY2_1.java 源程序编译为SY2_1.class 文件

4.使用浏览器或使用小程序查看器浏览SY2_1.HTML 文件(即在

命令提示符窗口输入:appletviewer SY2_1.HTML),运行。

(二)创建对象并使用对象

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, 100);

g.drawString("矩形 1 的Y 位置: "+b1.getY(), 20, 120);

b2.draw(g);

g.drawString("矩形 2 的X 位置: "+b2.getX(),

b2.getX(), b2.getY()+80);

g.drawString("矩形 2 的Y 位置: "+b2.getY(),

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) {

x=xPos;

y=yPos;

width=w;

height=h;

}

public void setPosition (int xPos, int yPos) {

x=xPos;

y=yPos;

}

public void setSize (int w, int h) {

width=w;

height=h;

}

public int getX() {

return x;

}

public int getY() {

return y;

}

public void draw(Graphics g) {

g.drawRect(x, y, width, height);

}

}

2.编写一个浏览Applet 应用程序的页面文件SY3_2.HTML

3.将SY2_2.java 源程序编译为SY2_2.class 文件

4.使用浏览器或使用小程序查看器浏览SY2_2.HTML文件(即在命令提示符下输入:appletviewer SY2_2.HTML),运行.

思考:程序的结构。类与对象的关系。对象创建、使用、销毁的过程。(三)使用修饰符

有时需要公开一些变量和方法,有时需要禁止其他对象使用变量和方法,这时可以使用修饰符来实现这个目的。常用的修饰符如下。Public,private,protected,package,static,final,transient,volatile

1.程序功能:通过两个类StaticDemo、SY2_3 说明静态变量/方法与实例变量/方法的区别。

2.编写类文件SY2_3.java,程序源代码如下:

class StaticDemo {

static int x;

int y;

public static int getX(){

return x;

}

public void setX(int x ) {

this.x = x;

}

public int getY() {

return y;

}

public void setY(int newY) {

y = newY;

}

}

public class SY2_3 {

public static void main(String[] args){

System.out.println("静态变量

x="+StaticDemo.getX());

//System.out.println("实例变量y="+StaticDemo.getY()); // 非法,编译时将出错

StaticDemo a= new StaticDemo();

StaticDemo b= new StaticDemo();

a.setX(1);

a.setY(2);

b.setX(3);

b.setY(4);

System.out.println("静态变量a.x="+a.getX());

System.out.println("实例变量a.y="+a.getY());

System.out.println("静态变量b.x="+b.getX());

System.out.println("实例变量b.y="+b.getY());

}

}

3.对上面的源程序进行编译,排错并运行。

(四)包的使用

1.了解并使用Java 的系统包

包是类和接口的集合。利用包可以把常用的类或功能相似的类

放在一个包中。Java 语言提供系统包,其中包含了大量的类,可以在编写Java 程序时直接引用它们。为便于管理和使用它们,将这些类分为了不同的包。包又称类库或API 包,所谓API(Application Program Interface)即应用程序接口。API 包—方面提供丰富的类与方法供大家使用,如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API 包都以“java.”开头,以区别用户创建的包。

接口解决了Java 不支持多重继承的问题,可以通过实现多个接口达到与多重继承相同的功能。

处理程序运行时的错误和设计程序同样重要,只有能够完善处理运行时出错的程序,软件系统才能长期稳定地运行,异常处理就是说明如何处理程序运行时出错的问题。

2.创建并使用自定义包

●自定义包的声明方式

<自定义包名>

声明包语句必须添加在源程序的第一行,表示该程序文件声明的全部类都属于这个包。

●创建自定义包Mypackage

在存放源程序的文件夹中建立一个子文件夹Mypackage。例如,在“C:\j2sdk1.4.2_01\lib ”文件夹之中创建一个与包同名的子文件夹Mypackage(C:\j2sdk1.4.2_01\lib \Mypackage),并将编译过的class 文件放入该文件夹中。注意:包名与文件夹名大小写要一致。再添加环境变量classpath 的路径,例如:

C:\j2sdk1.4.2_01\lib;

●在包中创建类

?YMD.java 程序功能:在源程序中,首先声明使用的包名Mypackage,然后创建YMD 类,该类具有计算今年的年份,

可以输出一个带有年月日的字符串的功能。

?编写YMD.java 文件,源代码如下:

package Mypackage; //声明存放类的包

import java.util.*; //引用java.util 包

public class SY2_4_YMD {

private int year,month,day;

public static void main(String[] arg3){}

public SY2_4_YMD(int y,int m,int d) {

year = y;

month = (((m>=1) & (m<=12)) ? m : 1);

day = (((d>=1) & (d<=31)) ? d : 1);

}

public SY2_4_YMD() {

this(0,0,0);

}

public static int thisyear() {

return

Calendar.getInstance().get(Calendar.YEAR);//返回当年的年份}

public int year() {

return year;//返回年份

}

public String toString(){

return year+"-"+month+"-"+day;//返回转化

为字符串的年-月-日

}

}

?编译SY2_4_YMD.java 文件,然后将SY2_4_YMD.class 文件存放到Mypackage 文件夹中。

3.编写使用包Mypackage 中SY2_4_YMD 类的程序

?SY2_5.java 程序功能:给定某人姓名与出生日期,计算该人年龄,并输出该人姓名,年龄,出生日期。程序使用了

SY2_4_YMD 的方法来计算年龄。

?编写SY2_5.java 程序文件,源代码如下:

import Mypackage.SY2_4_YMD; //引用Mypackage 包中的SY2_4_YMD 类

public class SY2_5{

private String name;

private SY2_4_YMD birth;

public static void main(String args[]) {

SY2_5 a = new SY2_5("吴斌",1993,10,10);

a.output();

}

public SY2_5(String n1,SY2_4_YMD d1) {

name = n1;

birth = d1;

}

public SY2_5(String n1,int y,int m,int d) {

this(n1,new SY2_4_YMD(y,m,d));//初始化变量与对象

}

public int age()

{ //计算年龄

return SY2_4_YMD.thisyear() - birth.year();

//返回当前年与出生年的差即年龄

}

public void output() {

System.out.println("姓名: "+name);

System.out.println("出生日期:

"+birth.toString());

System.out.println("今年年龄: "+age());

}

}

●编译并运行程序。

(五)构造方法的重载

构造方法的名称和类同名,没有返回类型。尽管构造方法看起来和一般的成员方法没有差别,但它不是方法,也不是类的成员。

因此,构造方法不能直接调用,只能由new 操作符调用。

构造方法对于类是十分重要的,对象的初始化任务要靠构造方法来完成。重载构造方法的目的是提供多种初始化对象的能力,使程序员可以根据实际需要选用合适的构造方法来初始化对象。

●编写构造方法RunDemo 的重载程序文件SY2_6,源代码如

下:

class RunDemo {

private String userName, password;

RunDemo() {

System.out.println("全部为空!");

}

RunDemo(String name) {

userName=name;

}

RunDemo(String name, String pwd) {

this(name);

password=pwd;

check();

}

void check() {

String s=null;

if (userName!=null)

s="用户名:"+userName;

else

s="用户名不能为空!";

if (password!="12345678")

s=s+" 口令无效!";

else

s=s+" 口令:********";

System.out.println(s);

}

}

public class SY2_6 {

public static void main(String[] args) {

new RunDemo();

new RunDemo("吴斌");

new RunDemo(null,"郝书华");

new RunDemo("周璐","12345678");

}

}

●编译并运行程序。

●三个构造方法,其中第一个无参构造方法RunDemo() 的实

际作用是对成员变量赋缺省初值,由于userName和password

都是String 类,所以它们的缺省初值为null。第二个构造方

法RunDemo(String) 只有一个参数,用来对成员变量

userName 赋初值。第三个构造方法RunDemo(String, String) 有两个参数,并有更多的内容,首先调用this(name),其实

际作用就是调用当前类的构造方法RunDemo(String name);

然后对成员变量password 赋值;最后调用check 方法来检查

userName 和password,类似于一般程序的口令验证。重载构

造方法的执行由对象根据实际参数的个数、类型和顺序确定。

四、实验练习题(1-3题写在实验报告上并进行上机检查)

1.定义一个表示二维空间中点的类Point,其中包含点的坐标x和坐标y,以及相应的输出点坐标(x,y)的方法printInfo。

public class SY2_Test1 {

public static void main(String[] args) {

Point p=new Point();

p.printInfo(20,30);

}

}

class Point{

private int x,y;

public void setX(int x){

this.x=x;

}

public int getX(){

return x;

}

public void setY(int y){

this.y=y;

}

public int getY(){

return y;

}

public void printInfo(int x,int y){

setX(x);

setY(y);

System.out.println("输出点的坐标

是:"+"x="+getX()+",y="+getY());

}

}

2.创建一个学生类,该类包含学生的信息:学号、姓名、年龄、专业。创建2个学生对象:(本人和一个同学),输出你们的学号、姓名、年龄和专业信息。

public class Student {

private String sNum, name,specialty;

private int age;

public Student(String sNum,String name,int age,String specialty) {

this.sNum=sNum;

https://www.wendangku.net/doc/5b6557538.html,=name;

this.age=age;

this.specialty=specialty;

}

public String getSNum(){

return sNum;

}

public String getName(){

return name;

}

public int getAge(){

return age;

}

public String getSpecialty(){

return specialty;

}

public static void main(String[] args) { Student zww=new Student("1114040127","周维维",20,"电子信息科学与技术");

Student wqq=new Student("1114040232","吴强强",19,"电子信息科学与技术");

System.out.println("我和同学的信息是:");

System.out.println(" 学号 "+" 姓名"+" 年龄"+" 专业");

System.out.println (zww.getSNum()+

zww.getName()+zww.getAge()+zww.getSpecialty());

System.out.println (wqq.getSNum()+

wqq.getName()+wqq.getAge()+wqq.getSpecialty());

}

}

3.定义类PerfectNum,其中包含一个方法用于判读某个数是否为完全数。编写代码测试输出1000以内的所有完全数。

public class Test4_3 {

public static void main(String[] args) { PerfectNum perfectNum=new PerfectNum();

for(int i=2;i<1000;i++){

if(perfectNum.prime(i))

System.out.println(i);

}

System.out.println();

}

}

class PerfectNum{

public boolean prime(int x){

boolean flag=false;

int sum=0;

for(int i=1;i

if(x%i==0)

sum=sum+i;

}

if (sum==x) {

flag=true;

}

return flag;

}

}

4.选做:编写一个Java应用程序,要求能处理银行业务中简单的帐户存款、取款及查询等功能。

实验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.wendangku.net/doc/5b6557538.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;

实验四 类与对象

宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告

}*/ // ~CPU() {cout<<"析构了一个CPU!"<

C++语言程序设计实验答案_类与对象

实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。

4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。

实验:类和对象1

实验一:类和对象 【实验目的】 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.wendangku.net/doc/5b6557538.html,=name; this.agr=agr; this.page=page; } public void evagre(){ System.out.println("水果名为:"+https://www.wendangku.net/doc/5b6557538.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.wendangku.net/doc/5b6557538.html,="苹果"; s.agr =10; s.page=1.0; s.evagre(); text c=new text(); https://www.wendangku.net/doc/5b6557538.html,="香蕉"; s.agr =10; s.page=1.0; s.evagre(); text d=new text(); https://www.wendangku.net/doc/5b6557538.html,="橘子"; s.agr =10; s.page=1.0; s.evagre(); 2. 编写一个学生类,封装学生的学号、姓名、成绩等信息。再编写一个主类,

实验报告_实验3 类与对象

实验报告_实验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。

实验2 类和对象(一)

实验2 类和对象(一) 1、实验目的 (1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。 (2)初步掌握用类和对象编制基于对象的程序。 (3)学习检查和调试基于对象的程序。 2、实验内容 (1)有以下程序: #include 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<

实验一 类和对象

实验一类和对象 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 目录结构

C++实验二类与对象(附答案)

实验二类与对象 实验目的和要求 1.掌握类、类的数据成员、类的成员函数的定义方式。 2.理解类成员的访问控制方式。 3.掌握对象的定义和操作对象的方法。 4.理解构造函数和析构函数的定义与执行过程。 5.掌握重载构造函数的方法。 6.了解拷贝构造函数的定义方法。 实验容 1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。#include class Aa { public: Aa(int i=0) { a=i; cout<<"Constructor "<

(1) #include 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< class A { public: void A(int i=0) { m=i; } void show() { cout<

实验一.类与对象实验报告

浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的定义与使用学时安排: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 #include #include using namespace std;

实验四 类与对象

实验四类与对象 一、实验目的 1. 掌握类的声明和使用。 2. 掌握类的声明和对象的声明。 3.复习具有不同访问属性的成员的访问方式。 4. 观察构造函数和析构函数的执行过程。 5.学习类的组合使用方法。 6. 使用 VC++的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、#include using namespace std; enumCPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { private: ?CPU_Rank rank; ?int frequency; ?float voltage; public: CPU (CPU_Rank r, intf, float v) ?{ ?rank = r; ?frequency = f; ?voltage = v; ?cout << "构造了一个CPU!" << endl; ?}

c++类和对象实验报告

实验一类和对象 实验课程名:面向对象程序设计(C++) 专业班级:学号:姓名: 实验时间:实验地点:指导教师: 一、实验目的和要求 (1) 理解类和对象的概念,掌握声明类和定义对象的方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。 二、实验内容 1.设计一个静态数组存储结构的顺序表类,要 求编程实现如下任务:建立一个线性表,首先 依次输人数据元素1,2,3,…,10,然后删除 数据元素6,最后依次显示当前线性表中的数 据元素。要求采用顺序表实现,假设该顺序表 的数据元素个数在最坏情况下不会超过50个。实验代码:#include using namespace std; const int MaxSize=100; //100只是示例性的数据,可根据实际问题具体定义 template //定义模板类SeqList class SeqList { public:

SeqList( ) {length=0;} //无参构造函数 SeqList(T a[ ], int n); //有参构造函数 ~SeqList( ) { } //析构函数为空 int Length( ) {return length;} //求线性表的长度 T Get(int i); //按位查找,取线性表的第i个元素 int Locate(T x ); //按值查找,求线性表中值为x的元素序号 void Insert(int i, T x); //在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素 void PrintList( ); //遍历线性表,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 }; template SeqList::SeqList(T a[ ], int n) { int i; if (n>MaxSize) throw "参数非法";

C实验报告第四章类与对象

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单步调试后,明白其中道理。 源程序:

实验四-类与对象

实验四类与对象 1.实验目的 1、使用类来封装对象的属性和行为; 2、掌握对象的组合以及参数传递; 3、掌握类变量与实例变量,以及类方法与实例方法的区别 2.实验内容 1、参考教科书,完成下面实验: 1)实验1 Tank类 2)实验2 计算机与光盘 3)实验3 家族的姓氏 4)实验4 三角形、梯形和圆形的类封装 5)实验5 实例成员与类成员 2、完成习题: 1)根据要求修改实验1,改进speedUP方法,使得Tank类的对象加速时不能将speed值超过220;增加一个刹车方法:void brake(),Tank类的对象调用它能将speed的值变成0。 2)根据要求修改实验2,主类中再增加一个CD的对象,然后将计算机中的数据(data数组)复制到CD对象中。 3、提高题 编写储蓄账户类及测试类,模拟存款,参考以下运行方式: (1)新开5个储蓄账户,各储蓄账户的编号、户名在新开储蓄账户时初始化,假设每位用户新开储蓄账户时都存入了一笔钱。 (2)提示用户从键盘输入储蓄账户编号。 (3)若输入的储蓄账户编号与新开的5个储蓄账户编号之一匹配,则提示用户从键盘输入存款金额,存款金额必须大于0,否则显示错误提示,直到用户输入的存款金额大于0为止。 (4)相应储蓄账户的余额被更新。 (5)存款完成后,提示存款成功,显示该储蓄账户的编号、户名、余额。 (6)若输入的储蓄账户编号与新开的5个储蓄账户编号均无法匹配,显示错误提示,并询问是否还要继续存款。 (7)用户输入yes,继续执行步骤(2),否则显示退出信息。 最基本要求:绘制UML类图;储蓄账户的余额必须确保大于等于0。 3.实验步骤 参考教材中相关的实验。 4.评分标准

实验1 类和简单对象(4学时)

实验一 (2010-3-23) 一、实验名称: 类和简单对象。 二、实验目的: (1)理解类和对象的概念; (2)掌握类与对象的定义方法; (3)理解类的成员的访问控制的含义,公有和私有成员的区别; (4)掌握构造函数和析构函数的含义与作用、定义方式和实现; (5)能够根据给定的要求定义类并实现类的成员函数; (6)掌握string类的使用方法 (7)了解C++面向对象程序设计的基本思想、基本方法和基本步骤; (8)掌握MS Visual C++6.0调试C++程序的基本方法、基本步骤。 三、练习项目 1. 输入下列程序,按要求进行实验,并记录实验的结果。 #include using namespace std; class Coordinate { public: Coordinate(int x1, int y1){x=x1; y=y1;} Coordinate(Coordinate &p); ~Coordinate(){cout<<"Destructor is called."<

} int main(){ Coordinate p1(3,4); Coordinate p2(p1); Coordinate p3=p2; cout<<"p3=("< class Date{ public: void printDate(); //显示日期 void setDay(int); //设置日的值 void setMonth(int); //设置月的值 void setYear(int); //设置年的值 private: int day, month, year; }; int main(){ Date testDay; testDay.setDay(5); testDay.setMonth(10); testDay.setYear(2010); testDay.printDate(); return 0; }; 3. 下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试

实验一、类与对象

实验一类与对象 一、实验目的 1.掌握类的定义和使用。 2.掌握类的对象的声明。 3.复习具有不同访问属性的成员的访问方式。 4.观察构造函数和析构函数的执行过程。 5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。 二、实验课时 4学时 三、实验任务 1.定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run(提示信息“CPU开始运行”)、stop(提示信息“CPU停止运行”)。其中,为枚举类型CPU_Rank,定义为enum CPU_Rank{P1=1,P2,P3,P4,P5,P6,P7},frequency为单位是MHz的整型数,voltage 为浮点型的电压值。在main函数中定义该类的一个对象,并调用其公有成员函数,观察构造函数和析构函数的调用顺序。试试能不能在主函数中打印该对象的属性值,并分析原因。 2.在上述CPU类中添加成员函数,分别用于设置及获取各属性的值,并在main函数中调用这些函数。观察当这些函数被设置成private或public时会有什么不同。 3.定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram 为RAM类的一个对象,cdrom为CDROM类的一个对象。CPU类的定义为实验任务1,RAM、CDROM类可以自由设置一些属性,并提供类似的run、stop这两个成员函数。在main函数中测试这个类,分析成员函数的运行顺序。 4.定义一个Point类,属性为坐标X、Y的值,包含有如下成员函数:构造函数、析构函数、设置与获取X和Y的值的函数,并测试程序的输出结果。

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

实验二类和对象的使用 班级:学号:姓名:成绩: 一.实验目的 1.掌握类和对象的概念、定义和使用方法。 2.掌握不同特性对象成员的访问方法。 二.使用的设备和仪器 计算机+Windows XP +Visual C++6.0 三.实验内容及要求 1.定义一个Book类,在该类定义中包括以下数据成员和成员函数: 数据成员:bookname(书名)、price(价格)、number(存书数量) 成员函数:set()输入图书信息;display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。 在主函数中,要求创建某一图书对象,并对该图书进行简单的显示、借阅和归还等管理。 2.定义一个中国好声音歌手类。其中,包括每个歌手的名字、年龄、来自哪个省份、所唱的曲目等。可以实现报名、显示、修改等功能。 3.定义一个时间类,实现课堂中第五节中的例2.2。 数据成员:时、分、秒 成员函数:输入时间、设置时间、按12小时制显示时间、按24小时制显示时间、增加1小时、减少1小时等功能。 4.定义一个学生类Student,要求如下: (1)数据成员包括学号、姓名、数学成绩、英语成绩和C++成绩;要求对所输入的成绩的合法性进行判断。 成员函数包括:设置学生的信息函数;输入学生的信息函数;输出学生的信息函数; 计算学生平均成绩的函数。 (2)添加新的数据成员:出生年月日;实现多个学生信息的添加、成绩的修改(一次只能修改一科成绩)等功能。要求单独定义一个日期类,并对所输入的出生年月日的合法性进行判断。 (3)设计一个菜单函数。 ****************************************************************** * * * 1.添加 2.设置 3.显示 4.修改成绩 5.计算平均分0.退出* * *

实验报告4类与对象

实验名称:类与对象 一.实验目的: (1)理解C#语言是如何体现面向对象编程基本思想; (2)掌握类对象的定义; (3)了解类的封装方法,以及如何创建类和对象; (4)了解成员变量和成员方法的特性; (5)掌握静态成员的用法; (6)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; (7)掌握参数传递的用法; (8)掌握属性的作用和使用。 二.上机内容: 1)创建MyDataTime类,熟悉构造函数、析构函数的定义方法、属性的定义方法以及一般方法的定义过程。 (2)创建Fraction类,掌握运算符重载、静态方法的使用及其与实例方法的区别。(3)创建Swap类,掌握C#方法中参数的传递。 (4)整理上机步骤,总结经验和体会。 (4)完成实验报告。 四.上机步骤: 类的创建与应用: 创建一个MyDataTime类,要求如下:

(1)私有字段:year,month,day; (2)属性:Year,Month,Day。注意在定义Month和Day的settor时要检验设置值的有效性,其中,,同时在对Day进行设置的时候要注意闰 年和平年的2月的天数。 (3)方法:构造函数:根据需求确定不同参数列表的构造方法。 析构函数:提示析构对象。 PrintMyDataTime:以“2011/4/24”、“2011年4月24日”、“2011.4.24”、“二〇一一年四月二十四日”的形式输出Year,Month和Day。 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class MyDataTime { private int year; public int Year { set { year = value; } get { return year; } }

实验3 类与对象

实验3 类与对象 一、实验目的 本实验的目的用于指导读者掌握Java语言面向对象的程序设计方法,理解对象的封装等概念,要求读者在调试实例程序后,总结出面向对象的事务定义以及以对象的形式进行封装等内容。 二、实验内容 1、课本P221,8-6 和课本P237,8.1题 2、编写一个名为“复数”的类,包含复数的实部和虚部(数据成员),以及复数之间的基本算术运算:加、减(方法成员),并要求复数加减运算,程序运行中能对给定的复数进行运算,并打印运算的结果。 3、用类来描述游戏角色的交手次数、经验值、生命值之间的关系,并断定角色决斗的胜负。 三、实验要求 1、加减运算能够接收不同类型的参数既可以实现复数与实数的加减、复数与复数的加减运算。 2、两游戏角色决斗。角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。 3、给定二个不同的角色,判定交手的胜负关系。 4、实验报告给出决斗结果和交手次数 5、实验报告给出所有源代码。 四、实验环境 1、PC微机; 2、DOS操作系统或 Windows 操作系统; 3、Eclipse程序集成环境。 五、实验步骤 内容一: 1、创建“复数”类Complex,定义实部、虚部成员 2、定义构造函数接收二个double参数用来初始化数据成员

3、定义二个复数运算函数plus()以及minus()各接收一个复数类型以实现复数与复数的加减运算。 4、定义二个复数运算函数plus()以及minus()各接收一个double类型以实现复数与与实数的加减运算。 4、定义一个打印方法。 5、在main()方法中创建复数对象并调用相关方法来验证。 内容二: 1、建立角色类Role,给出相应的成员,并能以生命值、经验值初始化角色对象。 2、在角色类中建立fight方法,接收一个角色类型的参数并与之“战斗”,返回胜者信息。 3、在主函数中初始化二个角色,调用fight方法。 六、测试数据 略 七、实验报告(学生完成) 实验报告应包括以下几个部分: 1、程序流程图; 2、程序的数据结构设计; 3、程序的源代码及相关注释 4、程序运行结果的分析。 八、思考题(学生完成) 1.定义一个点类“Point”。Point 类的属性有x 轴和y 轴坐标,可以通过方法setX()设置x轴坐标,方法setY()设置y 轴坐标,方法getX()获得x 轴坐标,方法getY()获得y 轴坐标。编写一个测试类PointTest 来创建Point 类的对象,测试该类。 2.编程定义一个栈类,它封装了栈数组,判断栈空方法、判断栈满方法以及进栈和出栈。

实验二-类与对象(二)

实验二-类与对象(二)

实验三类与对象(2) 【实验类型】验证性实验【实验课时】2学时 【实验目的】 (1)掌握对象数组定义与使用方法。 (2)理解对象指针的概念,学会用指针引用对象。 (3)了解this指针的工作方式。 (4)掌握静态数据成员和静态成员函数的基本使用方法。 (5)理解友元与友元函数的作用,掌握其使用方法。 【实验环境】 硬件:计算机 软件:Microsoft Visual C++ 6.0 【实验内容】 1、按要求阅读、修攺、调试和运行以下程序。 (1)实验内容 ① 定义一个类Stock,记录一支股票交易的基本信息,信息包括交易日序号(表示本月的第几个交易日,用整数表示)、当日最高价、当日

最低价、当日开盘价和当日收盘价。尽量发挥想象力,为该类设计成员函数。 ② 在主函数中建立两个股票对象,分别存储该股票昨天和今天两天的信息,以当日收盘价计算该股票今天的涨幅。 ③ 使用股票类Stock,定义一个对象数组存放连续5个交易日的股票信息。编写一个主函数,计算两个Stock对象(前后两日)的当日收盘价计算当日涨幅。用指针引用对象数组中的两个对象。在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。 ④ 在Stock类中定义一个静态数据成员,记录当前Stock对象的数量。 ⑤ 设计一个成员函数Assign_stock为对象赋值,其中的形式参数是对另一个Stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用Assign_stock赋值的对象。 ⑥ 定义一个友元函数计算Stock对象的当日开盘价是否高于当日收盘价。若是,返回真,否则,返回假。 (2)实验程序及运行结果(参考) ①以当日收盘价计算该股票今天的涨幅

实验二 类与对象

实验二类与对象(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; //类的成员变量

相关文档