Class design problem for JAVA.(2 CLASSES 1 DRIVER)
Please Follow the directions. This is an intro to computer science class.
NO ARRAYLIST, NO IMPORTS(ONLY SCANNER).KEEP EVERYTHING AS SIMPLE AS YOU CAN.
Class Design: Donut (Suggested Time Spent: < 15 minutes)
The Donut class is intended to be an abstract and simplified representation of a yummy edible donut.
Class Properties (MUST be private)
• Name of the donut
• Type of donut
• Price of the donut Class Invariants
• Donut name must not be empty (Default: “Classic”)
• Type of donut can only be one of the following: “Plain,” “Filled,” or “Glazed” (Default: “Plain”)
Class Components
• Public Getter and Private Setter for name, type, and price – enforce invariants
• A constructor that takes in as argument the name and type of the donut (enforce invariants)
o Determine the price of the donut based on the type:
▪ $0.99 for plain
▪ $1.29 for glazed
▪ $1.49 for filled
• A toString() method that returns the name, type, and price of the donut.
• An equals() method that returns true if it’s the same name and type (regardless of price).
Class Design: DonutBox (Suggested Time Spent: < 15 minutes)
The DonutBox class is intended to be an abstract and simplified representation of a box of donuts. Among other things, this object should be able to list the price of the donuts.
Class Properties (MUST be private)
• Donuts (Donut[]) – an array of donuts
• Count – number of donuts in the box Class Invariants
• A box can have at most a dozen donuts Class Components
• Public getter ONLY for count • public void addDonut (Donut order) {}
• public double getPrice() {}
o Returns the total price (before tax) of the donuts in the box, with applicable discount:
▪ Under 6 donuts, no discount
▪ 6 to 12 donuts, 10% discount
▪ 12 donuts exactly, 20% discount
• public String toString() {} – returns a String containing all the donuts in the box
• (Extra Credit: 1 point)
An enum for box type (Small, Medium, Large)
• (Extra Credit: 1 point)
A public method that returns the size of the box as an enum constant.
o Small box fits exactly one donut, medium fits up to six donuts, large fits up to 12.
Driver Class: DonutBoxDriver (Suggested Time Spent: < 10 minutes)
The DonutBoxDriver class is intended to be a simple driver to test the Donut and DonutBox objects and should include a main() method as well as other helper methods. At minimum, the driver class should:
• Create a box with only one donut
• Create a box of up to six donuts
• Create a box of more than six but less than twelve donuts
• Create a box of dozen donuts
• For each box created
o Print out the contents
o Print out the price (before tax) of the donuts in the box
Grading Criteria
• Donut class object (Total: 15 Points)
o [1 Point] Proper class definition syntax
o [3 Points] Implements all required properties
o [1 Points] Implements required getters
o [2 Points] All invariants properly enforced
o [3 Points] Constructor properly implemented
o [3 Points] toString method properly implemented
o [2 Points] equals method properly implemented
• DonutBox class object (Total: 15 Points) o
[1 Point] Proper class definition syntax
o [2 Points] Implements all required properties
o [1 Point] Implements required getter
o [2 Points] All invariants properly enforced
o [9 Points] Methods (addDonut, getPrice, toString) properly implemented (3 points per method)
• DonutBoxDriver program (Total: 10 Points)
o [1 Point] Proper class definition syntax
o [1 Point] Proper main method syntax
o [8 Points] Create, print contents and price of the four boxes (2 points per box created)