上机实验3-1 Java面向对象编程(一)

实验1 类的结构

一、实验目的

1、掌握类的结构,能够创建类

2、掌握对象的创建

3、掌握成员变量、成员方法和构造方法的创建及调用

二、实验内容

1、编写一个教师类Teacher,成员变量有姓名和年龄,成员方法有授课和吃饭。

public class Teacher {
	    private String name;
	    private int age;
	    public Teacher(String name, int age) {
			this.name = name;
			if (age<=0)
			{age=-age;}
			this.age = age;
		}
		public void setName(String name) {
			this.name = name;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public String getName() {
			return name;
		}
		public int getAge() {
			return age;
		}
		public void teach(){
			System.out.println(name+"老师在授课");
		}
		public void eat(){
			System.out.println(name+"老师在吃饭");
		}	
	}

并编写测试类创建教师类对象,输出对象的成员变量,并调用成员方法授课和吃饭。

public class Teach {
public static void main(String[] args) {
	System.out.println("以下是教师的姓名和年龄:");
	Teacher teacher = new Teacher("青玉案",24);
	System.out.println("姓名为:"+teacher.getName());
	System.out.println("年龄为:"+teacher.getAge());
	System.out.println("以下是教师的成员方法:");
	teacher.teach();
	teacher.eat();
	}
}

2、编写一个课程类Course,包括课程编号,课程名称和学分信息;设计两个成员方法,一个用来修改课程的学分信息,一个方法输出课程的所有信息;给出该类的构造方法,包括一个无参构造方法和一个三个参数的构造方法。

public class Course {
	private int CNo;
	private String CN;
	private double SC;
	public  Course(){}
	public Course(int CNo,String CN,double Score){
		this.CNo=CNo;
		this.CN=CN;
		this.SC=Score;
	}
	public void setCNo(int CNo){
		this.CNo=CNo;
	}
	public void setCN(String CN){
		this.CN=CN;
	}
	public void setScore(double Score){
		this.SC=Score;
	}
	public int getCNo() {
		return CNo;
	}
	public String getCN() {
		return CN;
	}
	public double getSC() {
		return SC;
	}
	public void alSC(){
		if(SC<=4)
			System.out.println("学分�?"+SC);
		else  
			{while(SC>4){SC--;}
				System.out.println("学分修改后为"+SC);}
	}
	public void outPut(){
		System.out.println("课程信息"+CNo+","+CN+","+SC);
	}
}

并编写测试类通过不同的构造方法创建该类对象和调用该类方法。

public class Cour {
	public static void main(String[] args){
	Course course=new Course();
	course.setCNo(126316);
	course.setCN("Java程序设计");
	course.setScore(5);
	System.out.println("编号:"+course.getCNo());
	System.out.println("名称:"+course.getCN());
	System.out.println("学分:"+course.getSC());
	course.alSC();
	course.outPut();
	}
}

实验2 机动车

一、实验目的

         通过实验让学生使用类来封装对象的属性和功能

二、实验内容

         编写一个Java应用程序,改程序中有两个类:Vehicle(用于描述机动车)和User(主类)。具体要求如下:

1、Vehicle类有一个double类型的变量speed,用于描述机动车的速度;一个int类型的变量power,用于描述机动车的功率。

2、Vehicle类定义了一个speedUp(int s)方法,体现机动车有加速功能;定义了一个speedDown(int d)方法,体现机动车有减速功能;定义了一个setPower(int p)方法,用于设置机动车的功率;定义了一个getPower()方法,用于获取机动车的功率。

三、程序代码

Vehicle.java文件内容

public class Vehicle {
	double speed;//声明double型变量speed,刻画速度
    int power;//声明int型变量power,刻画功率
    void speedUp(int s) {      
       speed=s+speed;} //将参数s的值与成员变量speed的和赋值给成员变量
    void speedDown(int d) {   
       speed=speed-d;} //将成员变量speed与参数d的差赋值给成员变量speed
    void setPower(int p) {
       power=p;}//将参数p的值赋值给成员变量power
    int getPower() {
       return power;}//返回成员变量power的值
    double getSpeed() {
       return speed;
       }
    }

User.java文件内容

public class User {
	public static void main(String args[]) {
	      Vehicle car1,car2;    
	      car1=new Vehicle();//使用new 运算符和默认的构造方法创建对象car1
	      car1.setPower(128);
	      System.out.println("car1的功率为:"+car1.getPower());
	      car1.speedUp(80);//car1调用speedUp方法将自己的speed的值增加80
	      System.out.println("car1当前加速为:"+car1.getSpeed());
	      car1.speedDown(10);
	      System.out.println("car1当前减速为:"+car1.getSpeed());
	      car2=new Vehicle();//使用new 运算符和默认的构造方法创建对象car2  
	      car2.setPower(76);
	      System.out.println("car2的功率为:"+car2.getPower());
	      car2.speedUp(80);//car2调用speedUp方法将自己的speed的值增加80
	      System.out.println("car2当前加速为:"+car2.getSpeed());
	      car2.speedDown(20);
	      System.out.println("car2当前减速为:"+car2.getSpeed());
	      }
	}

四、实验指导

1、创建一个对象,会为对象在栈内存创建引用对象的空间,并在堆内存中为成员创建相应的内存空间。

2、空对象不能使用成员变量和方法,否则运行时会出现异常:NullPointerException。

3、实验完成后的改进

         1)改进speedUp()方法,使得Vehicle类的对象在加速时不能将速度speed值超过200;

         2)改进speedDown()方法,使得Vehicle类的对象在减速时不能将速度speed值小于0;

         3)增加一个刹车方法void brake(),使得Vehicle类的对象调用它会将speed值变成0。

实验3 设计一个小学生加法练习程序

一、实验目的

1、熟练掌握类的字段、构造方法和成员方法的定义以及在程序中创建类的对象,访问类的成员的编程技巧

2、理解封装的概念和重载含义

二、实验内容

1、每次练习出5道题,也可以在用户输入0后,强行退出程序

2、程序运行显示题目,要求[1-100)之间的随机整数

3、用户输入答案,正确打√,错误打×

三、程序代码

import java.util.Scanner;//导入Scanner
class Exercise {//声明自定义Exercise类,与主类并列,使用缺省修饰符
	private int num1,num2;//封装的私有字段成员
	Exercise(){//类的构造方法,使用缺省修饰符
		//使用数学random(),随机输入
		num1=(int)(1+Math.random()*100);
		num2=(int)(1+Math.random()*100);
	}
	void show(){//用于显示一个算式的show()方法
		System.out.print(num1+"+"+num2+"=");
	}
	int getResult(){
		//用于获取正确答案的getResult()方法
		return num1+num2;
	}
}
public class 加法练习{ 
	public static void main(String[] args){//主方法
		Scanner val=new Scanner(System.in);
		int i,right=0;//i循环变量,right为做对的题数
		long start=System.currentTimeMillis();//记录开始做题的时间
		for(i=1;i<=10;i++)//每次练习3道题
			  {
            Exercise exe=new Exercise();
			exe.show();//调用对象的show()方法显示一个算式
			int sum=val.nextInt();//接受用户的键盘输入
			if(sum==0) //用户输入0,退出程序
			{System.out.println("用户退出程序");
				break;
			}
			if(exe.getResult()==sum)//调用对象的getResult()方法获取答案并比较答案是否正确
			{
				System.out.println("v");
				right+=1;//答案正确,继续进行
			}
			else
			{
				System.out.println("×");//答案错误
			}
		}
		long end=System.currentTimeMillis();//记录结束时间
		System.out.println("共出题:"+(i-1)+",做对:"+right+",用时:"+(end-start)/1000+"秒");
		val.close();//关闭Scanner对象
	}

}

实验4 方法及方法重载应用

一、实验目的

1、掌握类中的方法的定义

2、掌握重载方法的定义及使用

二、实验内容

  创建一个程序,根据yoghurt选择及输入的参数,调用重载方法,分别计圆的面积、圆柱体体积和圆柱体表面积。

1、创建一个area方法,接收一个double类型的参数,返回double类型圆的面积

2、创建area方法的重载方法,接收两个float类型的参数,返回double类型的圆柱体体积

3、创建area方法的重载方法,接收两个double类型的参数,返回一个double类型的圆柱体表面积。

import java.util.Scanner;
public class Yoghurt {
	public static void main(String args[]){
		Scanner val=new Scanner(System.in);//显示供选择菜单
		System.out.println("圆的面积--1    圆柱体积--2    圆柱表面积--3");
		int n=val.nextInt();
		switch(n){
		case 1://用户选择了1
				System.out.println("请输入圆的半径r1");
				double r1=val.nextDouble();//读取圆半径
				double s1=area(r1);//调用area()方法计算圆面积
				System.out.println("圆的面积为:"+String.format("%.2f", s1));
				break;//输出面积
		case 2://用户选择了2
				System.out.println("请输入圆柱的半径r2和高h1");
				float r2=val.nextFloat();//读取半径和高
				float h2=val.nextFloat();
				double v=area(r2,h2);//调用area()方法计算圆柱体积
				System.out.println("圆柱体积为:"+String.format("%.2f", v));
				break;
		case 3://用户选择了3
				System.out.println("请输入圆柱的半径r3和高h2");
				double r3=val.nextDouble();//读取半径和高
				double h3=val.nextDouble();
				double s2=area(r3,h3);//调用area()方法计算圆柱表面积
				System.out.println("圆柱体积为:"+String.format("%.2f", s2));
				break;
		}
		val.close();//关闭Scanner对象
	}
public static double area(double r){//area()方法计算圆面积
	return r*r*Math.PI;}//r为半径
//area()方法的重载形式,计算圆柱体积
public static double area(float r,float h){//r为半径,h为圆柱的高
	return Math.PI*r*r*h;}
//area()方法的重载形式,计算圆柱表面积
public static double area(double r,double h){
	return 2*Math.PI*r*h+2*Math.PI*r*r;
	}
}

  • 10
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【练习题】01.类的成员变量 猜数字游戏 一个类A有一个成员变量v 有一个初值100。定义一个类 对A类的成员变量v 进行猜。如果大了则提示大了 小了则提示小了。等于则提示猜测成功。 【练习题】02.类的成员变量 请定义一个交通工具(Vehicle)的类 其中有: 属性 速度(speed) 体积(size)等等 方法 移动(move()) 设置速度(setSpeed(int speed)) 加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象 并通过方法给它初始化sp eed,size的值 并且通过打印出来。另外 调用加速 减速的方法对速度进行改变。 【练习题】03.类的成员变量与方法、构造方法 在程序中 经常要对时间进行操作 但是并没有时间类型的数据。那么 我们可以自己实现 一个时间类 来满足程序中的需要。 定义名为MyTime的类 其中应有三个整型成员 时 hour 分 minute 秒 second 为了保 证数据的安全性 这三个成员变量应声明为私有。 为MyTime类定义构造方法 以方便创建对象时初始化成员变量。 再定义diaplay方法 用于将时间信息打印出来。 为MyTime类添加以下方法 addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】04.构造方法 编写Java程序 模拟简单的计算器。 定义名为Number的类 其中有两个整型数据成员n1和n2 应声明为私有。编写构造方法 赋 予n1和n2初始值 再为该类定义加 addition 、减 subtration 、乘 multiplication 、 除 division 等公有成员方法 分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象 调用各个方法 并显示计算结果。 【练习题】05.构造方法 编写Java程序 用于显示人的姓名和年龄。 定义一个人类 Person 该类中应该有两个私有属性 姓名 name 和年龄 age 。定义构造 方法 用来初始化数据成员。再定义显示 display 方法 将姓名和年龄打印出来。 在main方法中创建人类的实例 然后将信息显示。 【练习题】06.get方法和set方法 定义一个类 该类有一个私有成员变量 通过构造方法将其进行赋初值 并提供该成员的g etXXX()和setXXX()方法 提示 假设有private String name。则有 public void setName(String name){ this.name = name。 } public String getName(){ return this.name。 } 【练习题】07.构造方法与重载 为"无名的粉"写一个类 class WuMingFen 要求 1.有三个属性 面码:String theMa 粉的分量(两) int quantity 是否带汤 boolean likeSoup 2.写一个构造方法 以便于简化初始化过程 如 WuMingFen f1 = new WuMingFen("牛肉",3,true)。 3.重载构造方法 使得初始化过程可以多样化 WuMingFen f2 = new WuMingFen("牛肉",2)。 4.如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的 WuMingFen f3 = new WuMingFen()。 5.写一个普通方法 check() 用于查看粉是否符合要求。即 将对象的三个属性打印在控 制台上。 【练习题】08.构造方法的重载 定义一个名为Vehicles 交通工具 的基类 该类中应包含String类型的成员属性brand 商 标 和color 颜色 还应包含成员方法run 行驶 在控制台显示"我已经开动了" 和showI nfo 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 编写Car 小汽车 类继承于Vehicles类 增加int型成员属性seats 座位 还应增加成员方 法showCar 在控制台显示小汽车的信息 并编写构造方法。 编写Truck 卡车 类继承于Vehicles类 增加float型成员属性load 载重 还应增加成员 方法showTruck 在控制台显示卡车的信息 并编写构造方法。 在main方法中测试以上各类。 【练习题】09.构造方法与重载 定义一个网络用户类 要处理的信息有用户ID、用户密码、email地址。在建立类的实例 时 把
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meteor.792

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值