Lesson_12_HomeWork_品尝饮料

异常:

题目1品尝饮料

一、 语言和环境

1. 实现语言:Java

2. 环境要求:JDK1.4或以上版本及其联机帮助文档

二、 要求

1、 使用命令行参数(饮料类型),输出该饮料类型的味道,如:当命令行参数为1时,结果见图1

2、 如果没有该种饮料,结果见如图2

三、 推荐实现步骤

1、 建立一个Java抽象类Drink,应当:

a、 声明一个抽象方法taste(),该方法负责输出饮料的味道;

b、 声明int型常量来代表不同的饮料类型(咖啡、啤酒、牛奶),如:1 咖啡,啤酒,牛奶

c、 声明静态方法getDrink(int drinkType),根据传入的参数创建不同的饮料对象,并返回该对象,建议使用switch语句。该方法要求声明DrinkNotFoundException,当没有相对应的饮料类型时,抛出该异常。

2、 建立Drink的具体子类:

a、 分别建立Drink的子类:Coffee(代表咖啡),Beer(代表啤酒),Milk(代表牛奶);

b、 子类分别要求:

1. Coffee类  私有属性品牌(brand),带有此属性参数的构造方法;并提供相应的settergetter方法;

2. Beer类  私有属性颜色(color),带有此属性参数的构造方法;并提供相应的settergetter方法;

3. Milk类  私有属性状态(state),带有此属性参数的构造方法;并提供相应的settergetter方法;

c、 实现taste()方法,要求在控制台打印各自的味道特征。

3、 建立异常类DrinkNotFoundException

a、 继承Exception

b、 在Drink的方法getDrink(int drinkType)中声明引发DrinkNotFoundException异常,当传入的参数没有相对应的饮料类型时,抛出异常。

c、 在使用getDrink方法的类中捕捉该异常。

4、 建立Test测试类,测试以上内容的正确性

a、 编写main方法,通过命令行传参的方式传入某种饮料的类型。

b、 在main方法中,调用Drink类的getDrink方法,获得相应的饮料对象。注意捕获DrinkNotFoundException

c、 然后调用该饮料对象的taste()方法,输出该饮料的味道。

5、 编译程序,并运行。

四、 注意事项

1、 仔细审题,把题目要求理解准确;

2、 请注意多态性的运用;

3、 请注意代码的书写、命名符合规范,应有适当的注释。

 

package Lesson_12_1_teacher;

public abstract class Drink {
	public abstract void taste();//输出饮料的味道
	private static final int COFFEE=1;
	private static final int BEER=2;
	private static final int MILK=3;
	
	public static Drink  getDrink(int drinkType){
		Drink drink=null;
		switch(drinkType){
		case COFFEE:
			drink=new Coffee();
			break;
		case BEER:
			drink=new Beer();
			break;
		case MILK:
			drink=new Milk();
			break;
		default:
			try {
				throw(new DrinkNotFoundException("没有找到对应的饮料!"));
			} catch (DrinkNotFoundException e) {
				System.out.println(e.getMessage());
				System.exit(-1);
			}catch(Exception e){
				System.out.println(e.getMessage());
			}
		}
		
		return drink;
	}
}


 

package Lesson_12_1_teacher;

public class Milk extends Drink {		//Drink 的子类--Drink类
	private String state;
	
	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	@Override
	public void taste() {
		System.out.println("牛奶:酸");
	}

}


 

package Lesson_12_1_teacher;

public class Beer extends Drink {		//啤酒类
	private String color;
	
	
	
	public String getColor() {
		return color;
	}



	public void setColor(String color) {
		this.color = color;
	}



	@Override
	public void taste() {
		System.out.println("啤酒:香");
	}

}


 

package Lesson_12_1_teacher;

public class Coffee extends Drink {		//咖啡类
	private String brand;
	
	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}
	
	
//	public Coffee(String brand) {
//		super();
//		this.brand = brand;
//	}

	@Override
	public void taste() {
		System.out.println("咖啡:苦");
	}

}


 

package Lesson_12_1_teacher;

public class DrinkNotFoundException extends Exception {		//自定义异常,找不到饮料
	public DrinkNotFoundException(String errorMessage){
		super(errorMessage);
	}
}


 

package Lesson_12_1_teacher;


public class HomeWork0305 {				//测试类
	
	public static void main(String[] args) {
		int n=Integer.parseInt(args[0]);
		
			Drink.getDrink(n).taste();
	}
}


 

你可能感兴趣的:(Lesson_12_HomeWork_品尝饮料)