实验四 类和对象

实验四 类和对象
一、实验目的
1.学习类的一般结构和类的定义。
2. 学习类的成员变量和成员方法的声明格式。
3. 学习对象的创建和调用对象的成员变量和成员方法。
4. 理解和学习类的构造方法的作用。
二、实验类型及课时
验证/设计/综合:验证;课时:2。
三、实验环境
装有JAVA语言工具软件 (Eclipse)的微机若干
四、实验内容
1、定义一个Student类,包含的内容如下:
 成员变量——姓名、性别、班干部否、数学、语文、外语;
 成员方法——求总分、求平均分。
 编程实现这个类,利用键盘输入三门课的成绩并调用相应的计算总分和平均分,输出结果。
源码:

package work02;

import java.util.Scanner;
// 定义一个测试类
public class StudentTest {
	public static void main(String[] args) {
		// 创造一个对象
		Student stu = new Student();
		Scanner cc = new Scanner(System.in);
		System.out.println("请输入学生姓名:");
		stu.name = cc.next();
		System.out.println("请输入学生性别:");
		stu.sex = cc.next();
		System.out.println("请输入学生是否为班干:");
		stu.isBan = cc.next();
		System.out.println("请输入学生数学成绩为:");
		stu.math = cc.nextFloat();
		System.out.println("请输入学生语文成绩为:");
		stu.chinese = cc.nextFloat();
		System.out.println("请输入学生英语成绩为:");
		stu.english = cc.nextFloat();
		stu.sumSorce();
		stu.average();
	}
}
class Student{
	// 成员变量
	String name; // 姓名
	String sex;  // 性别
	String isBan; // 是否为班干
	double math;  //数学成绩
	double chinese; //语文成绩
	double english; //英语成绩
	// 成员方法
	// 求总分
	public void sumSorce() {
		double sum = math + chinese + english;
		System.out.println(name + "总成绩为:" + sum);
	}
	// 求平均分
	public void average() {
		double average = (math + chinese + english) / 3;
		System.out.println(name + "平均成绩为:" + average);
	}
}

2、定义一个“点”(Point)类用来表示三维空间的点(有三个坐标)。要求如下:
 可以生成具有特定坐标的点对象(利用构造方法)。
 提供可以设置三个坐标的方法。
 提供可以计算该“点”到某点距离平方的方法。
 编写程序验证上述三条。
源码:

package work02;
import java.util.*;
public class PointTest {
	public static void main(String[] args) {
		Point p = new Point(0, 0, 0);
		p.distance(1,1,0);
	}
}
class Point {
	double x; // x坐标
	double y; // y坐标
	double z; // z坐标
	public Point(double x,double y,double z) {
	}
	public double getX() {
		return x;
	}
	public double getY() {
		return y;
	}
	public double getZ() {
		return z;
	}
	public void setPoint(double x,double y,double z) {
		this.x = x;
		this.y = y;
		this.z = z;
	}

	// 计算一个点到该点的距离
	public void distance(double x,double y,double z) {
		double distance;
		// 假设某点坐标为(0,0,0)
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入该点的x坐标:");
		double x1 = sc.nextDouble();
		System.out.println("请输入该点的y坐标:");
		double y1 = sc.nextDouble();
		System.out.println("请输入该点的z坐标:");
		double z1 = sc.nextDouble();
		distance = Math.sqrt((z-z1)*(z-z1)+Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1))*Math.sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1)));
		System.out.println("("+x+","+y+","+z+")" + "到("+x1+","+y1+","+z1+")的距离为:" + distance );
		
	}
	
}

3、写一个如图所示的风扇类Fan,其有speed,on,radius和color属性以及相应的取值和设值方法,toString方法应返回由所有属性的值所构成的字符串。另写一测试类测试该风扇类。

源码:

package work02;

public class FanTest {
	public static void main(String[] args) {
		Fan fan1 = new Fan();
		fan1.setAll(10,true, 30, "白色");
		System.out.println(fan1.toString());
	}

}
class Fan {
	int speed;
	boolean on;
	double radius;
	String color;
	public int getSpeed() {
		return speed;
	}
	public double getRadius() {
		return radius;
	}
	public String getColor() {
		return color;
	}
	public boolean isOn() {
		return on;
	}
	public void setAll(int speed,boolean on,double radius,String color) {
		this.speed = speed;
		this.on = on;
		this.radius = radius;
		this.color = color;
	}
	public String toString() {
		String str = "转速为:" + speed + "rad/s;\r\n" 
				+ "运行状态为:" + on  + "状态;\r\n"
				+ "风扇片叶半径为:" + radius + "cm;\r\n"
				+ "风扇颜色为:" + color ;
		return str;
	}
}

4、在程序中定义一个Student类,Student类有三个构造方法,分别对不同的属性进行初始化,按模版要求将【代码1】~【代码5】替换为相应的Java程序代码,使之输出如图所示的结果。

//文件名:Student.java
public class Student {
String name;
int age;
public Student() {
System.out.println("Student()构造方法被调用");
}
【代码1// 定义一个Student类构造方法,该方法接收一个字符串参数,在方法体中,把该参数赋给name属性,并显示“Student(String name)构造方法被调用”
public Student(String name){
 this.name = name;
System.out.println("Student(String name)构造方法被调用");
}
【代码2// 定义一个Student类构造方法,该方法接收一个字符串参数与一个整型参数,在方法体中,把该字符串参数赋给name属性,把整型参数赋给age属性,并显示“Student(String name,int  age)构造方法被调用”
public Student(String name,int age){
 this.name = name;
 this.age = age;
System.out.println("Student(String name,int age)构造方法被调用");
}

【代码3//创建Student类的一个对象s1,不传参数
Student s1 = new Student();
【代码4//创建Student类的一个对象s2,传入一个参数“张三”
Student s1 = new Student(“张三”);

【代码5//创建Student类的一个对象s3,传入一个参数“李四”和15
Student s1 = new Student(“张三”,15);

}
}

五、实验报告要求
1. 整理实验结果。
2. 小结实验心得体会。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值