Due: Monday, November 19
Goal: More practice with inheritance
Here is an alcoholic beverage class. It has expanded on our previous definition of the Beer class to include wine. There is a 'type' variable set to 0 if it is beer and 1 if it is wine. This is used to calculate the number of drinks, because there are only 5 ounces in a glass of wine but 12 ounces in a glass of beer.
public class AlcoholicBeverage { private String name; private double alcohol; private int type; // 0 for Beer, 1 for Wine // Constructors public AlcoholicBeverage() { name = ""; alcohol = 0.0; } public AlcoholicBeverage(String newName, double newAlcohol, int newType) { name = newName; alcohol = newAlcohol; type = newType; } // Accessors public String getName() { return name; } public double getAlcohol() { return alcohol; } // Mutators public void setName(String newName) { name = newName; } public void setAlcohol(double newAlcohol) { alcohol = newAlcohol; } // This method returns the number of drinks that a person // of (weight) pounds can drink using the alcohol percentage in this // drink. Beer is 12 ounces while wine is 5 ounces. // It is an estimate. It assumes the legal limit is 0.08 BAC. public double intoxicated(double weight) { double numDrinks; // This is a simplification of the Widmark formula if (type == 0) { // Beer numDrinks = (0.08 + 0.015) * weight / (12 * 7.5 * alcohol); } else { // Wine numDrinks = (0.08 + 0.015) * weight / (5 * 7.5 * alcohol); } return numDrinks; } ///////////////////////////////////////////////////////////////// // Main Method ///////////////////////////////////////////////////////////////// public static void main(String[] args) { AlcoholicBeverage drink1 = new AlcoholicBeverage("Guiness",0.074, 0); // 0 for beer AlcoholicBeverage drink2 = new AlcoholicBeverage("Zinfandel", 0.20, 1); // 1 indicates wine double drinks; // How many drinks that Bubba can drink drinks = drink1.intoxicated(250); System.out.printf("Bubba at 250 pounds can drink about " + drinks + " " + drink1.getName() + "'s in one hour until intoxicated.\n"); drinks = drink2.intoxicated(250); System.out.printf("Bubba at 250 pounds can drink about " + drinks + " " + drink2.getName() + "'s in one hour until intoxicated.\n"); } }
This program will run but it is not very convenient to add a new type of drink - we'd have to add a new code to the 'type' variable. And what if type gets set to an invalid number, like 3? A better organization is to use inheritance.
Show your completed program to your instructor or email it to kenrick@uaa.alaska.edu by the end of the day.