实验五 类和对象

该文提供了一系列Java编程实验,涉及类的定义、对象的创建及方法的使用。包括自动铅笔类(AutoPencil)的按压操作,汽车类(Car)的加油和行驶,数字类(Number)的四则运算,长方形类(Rectangle)的面积和周长计算,以及时间类(MyTime)的时间增减操作。此外,还展示了复数类(Complex)的相加功能。
摘要由CSDN通过智能技术生成

实验目的

  1. 掌握Java语言中类的定义、对象的创建、对象引用方法。
  2. 初步了解面向对象设计方法。

实验学时

实验内容

1.设计一个自动铅笔类AutoPencil,有1个属性boolean penPoint(笔尖是否伸出),有4个函数:
(1)构造函数AotoPencil(),将penPoint置为false
(2)按压操作函数void knock(),将penPoint置反
(3)获取笔尖状态函数 boollean getPenPoint()
(4)main函数
创建对象并对实例对象进行按压操作,显示笔尖的状态。
实验代码:

package test5;

public class exp1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		AotoPencil p=new AotoPencil();
		p.knock();
		System.out.println("笔尖状态:"+p.penPoint);
	}
	
}
class AotoPencil{
	boolean penPoint=false;
	public void knock() {
		penPoint=true;
	}
	public boolean getPenPoint() {
		return penPoint;
	}
}

在这里插入图片描述
2.设计一个汽车类Car,有2个属性车主owner和油量oil,有7个函数:
(1)构造函数Car(String owner,double oil)
(2)构造函数Car(String owner),油量置为0
(3)加油操作函数void addOil(double oil)
(4)行驶操作函数void drive(int distance)
假设每100公里的耗油量为定值(自己设置),根据行驶的公里数更新油量。
(5)获得车主信息函数String getOwner()
(6)获得油量函数double getOil()
(7)main函数
创建对象并对实例对象进行加油、行驶操作,显示车主、油量。
实验代码:

package test5;

public class exp2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Car p=new Car("张三",10);
		p.addOil(10);
		p.drive(400);
		System.out.println("车主:"+p.getOwner()+",油量:"+p.getOil());
		Car a=new Car("小明");
		a.addOil(30);
		a.drive(600);
		System.out.println("车主:"+a.getOwner()+",油量:"+a.getOil());
	}

}
class Car{
	private String owner;
	private double oil;
	Car(String owner,double oil){
		this.owner=owner;
		this.oil=oil;
	}
	Car(String owner){
		this.owner=owner;
		oil=0;
	}
	void addOil(double oil){
		this.oil+=oil;
	}
	void drive(int distance){
		oil=oil-distance/100.0*3;
	}
	String getOwner(){
		return owner;
	}
	double getOil(){
		return oil;
	}
}

在这里插入图片描述
3. 编写Java程序模拟简单的计算器。 定义名为Number的类,其中有两个私有的整型数据成员x和y。有5个函数:
(1)构造函数Number(int x,int y)
(2)加法运算函数 int addition( )
(3)减法运算函数 int subtration( )
(4)乘法运算函数 int multiplication( )
(5)除法运算函数 int division( )
另外编写一个测试类,对Number类进行测试。
实验代码:

package test5;

public class exp3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a=10,b=5;
		Number s=new Number(a,b);
		System.out.println("x+y="+s.addition());
		System.out.println("x-y="+s.subtration());
		System.out.println("x*y="+s.multiplication());
		System.out.println("x/y="+s.division());
	}

}
class Number{
	private int x;
	private int y;
	Number(int x,int y){
		this.x=x;
		this.y=y;
	}
	public int addition(){
		return x+y;
	}
	public int subtration(){
		return x-y;
	}
	public int multiplication(){
		return x*y;
	}
	public int division(){
		return x/y;
	}
}

在这里插入图片描述
4. 定义长方形类Rectangle,含:
(1)属性
int width;
int height;
(2)方法
Rectangle():宽、高默认值为1;
Rectangle(int val):宽、高均为参数值;
Rectangle(int width,int height):
int getSquare():计算面积;
int getPerimeter():计算周长;
另外编写测试类进行测试。
实验代码:

package test5;

public class exp4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Rectangle a=new Rectangle();
		System.out.println("宽、高的默认值分别为:"+a.width+"、"+a.height);
		Rectangle b=new Rectangle(7);
		System.out.println("宽、高均为参数值:"+b.width+"、"+b.height);
		int x=10,y=5;
		System.out.println("当宽为:"+x+",高为:"+y+"的时候");
		Rectangle p=new Rectangle(x,y);
		System.out.println("面积="+p.getSquare());
		System.out.println("周长="+p.getPerimeter());
	}

}
class Rectangle{
	int width;
	int height;
	Rectangle(){
		width=1;
		height=1;
	}
	Rectangle(int val){
		width=val;
		height=val;
	}
	Rectangle(int width,int height){
		this.width=width;
		this.height=height;
	}
	int getSquare(){
		return width*height;
	}
	int getPerimeter(){
		return 2*(width+height);
	}
}

在这里插入图片描述
5. 定义一个时间类MyTime,有三个属性hour,minute,second。为MyTime类定义构造方法,以便创建对象时初始化成员变量。除了构造函数外,还要创建以下方法:
(1)nextSecond( ):时间经过1秒
(2)nextMinute( ):时间经过1分
(3)nextHour( ):时间经过1小时
(4)prevSecond( ):前1秒
(5)prevMinute( ):前1分
(6)prevHour( ):前一小时
(7)display( ):以HH:MM:SS格式显示时间
另外编写测试类,进行测试。

提示:格式输出要用到Formatter类。
import java.util.Formatter;//格式输出类
public class MyTime {
void display( ){
//先创建格式输出对象
Formatter f = new Formatter(System.out);
//format方法按照格式输出
f.format(“%02d:%02d:%02d\n”,hour,minute,second);
}
}
实验代码:

package test5;
import java.util.Formatter;
public class exp5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyTime a=new MyTime(8,30,29);
		System.out.print("原始时间:");
		a.display();
		System.out.print("后一秒:");
		a.nextSecond();
		a.display();
		System.out.print("前一秒:");
		a.prevSecond();
		a.display();
		System.out.print("前一分钟:");
		a.prevMinute();
		a.display();
		System.out.print("后一分钟:");
		a.nextMinute();
		a.display();
		System.out.print("前一小时:");
		a.prevHour();
		a.display();
		System.out.print("后一小时:");
		a.nextHour();
		a.display();
	}

}
class MyTime{
	int hour;
	int minute;
	int second;
	MyTime(int x,int y,int z){
		hour=x;
		minute=y;
		second=z;
	}
	void nextSecond(){
		second+=1;
	}
	void nextMinute(){
		minute+=1;
	}
	void nextHour(){
		hour+=1;
	}
	void prevSecond() {
		second-=1;
	}
	void prevMinute() {
		minute-=1;
	}
	void prevHour() {
		hour-=1;
	}
	void display() {
		Formatter f=new Formatter(System.out);
		f.format("%02d:%02d:%02d\n",hour,minute,second);
	}
}

在这里插入图片描述
6. 编写程序使用复数类Complex验证两个复数 2+2i 和3+3i 相加产生一个新的复数5+5i 。复数类Complex满足如下要求:
(1)属性
int realPart :复数的实部;
int imaginPart:复数的虚部;
(2)方法
Complex( ) : 构造方法,将复数的实部和虚部都置0;
Complex( int r , int i ) :
Complex complexAdd(Complex a) : 将当前复数对象与形参复数对象相加,所得的结 果仍是一个复数值,返回给此方法的调用者。
String toString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中 a 和 b分别为实部和虚部的数据。
另外编写一个测试类Test,对Complex类进行测试。
实验代码:

package test5;

public class exp6 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Complex a=new Complex(2,2);
		System.out.println(a.toString());
		Complex b=new Complex(3,3);
		System.out.println(b.toString());
		Complex c=a.complexAdd(b);
		System.out.println("新复数:"+c.toString());
	}

}
class Complex{
	int realPart;
	int imaginPart;
	Complex(){
		realPart=0;
		imaginPart=0;
	}
	Complex(int r,int i){
		realPart=r;
		imaginPart=i;
	}
	Complex complexAdd(Complex a) {
		Complex b=new Complex();
		b.realPart=a.realPart+realPart;
		b.imaginPart=a.imaginPart+imaginPart;
		return b;
	}
	public String toString() {
		return (realPart+"+"+imaginPart+"i");
	}
}

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值