Create an abstract class Ticket with the following constructor: public Ticket(St
ID: 3662998 • Letter: C
Question
Create an abstract class Ticket with the following constructor:
public Ticket(String venue, String event, String date, double basePrice)
provide getters for the venue, event, date and basePrice
provide a method
int getNumberOfHolders()
that returns 1.
provide a toString method
provide an abstract method to return the actual cost of this transaction
double getPrice()
Create a subclass AdvanceTicket for tickets bought in advance at a discount.
The constructor for AdvanceTicket should be
public AdvanceTicket(String venue, String event, String date, double basePrice, double discount)
Create a subclass ComplementaryTicket for tickets given away for free.
The constructor for ComplementaryTicket should be
public ComplementaryTicket(String venue, String event, String date)
Create a subclass DayOfTicket for tickets purchased the day of the event for full price.
The constructor for DayOfTicket should be
public DayOfTicket(String venue, String event, String date, double basePrice)
Create a subclass GroupTicket for a group of tickets purchased together at a discount.
The constructor for GroupTicket should be
public GroupTicket(String venue, String event, String date, double basePrice, double discount, int quantity)
You will need to supply additional instance variables, methods and overridden methods as appropriate. Do as much of this as necessary, but no more. (And don't forget toString.)
Hint: For some classes, you may be able to save some work by extending a class other than Ticket.
Write a tester class that tests each method for objects of each class. The following is an example:
public class TicketTester {
public static void main(String[] args) {
Ticket t;
t = new AdvanceTicket("venue1", "party", "1/1/16", 10, .1);
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
t = new ComplementaryTicket("venue2", "show", "1/2/16");
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
t = new DayOfTicket("venue3", "club", "1/3/16", 11.0);
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
t = new GroupTicket("venue4", "reunion", "1/4/16", 12, .15, 8);
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
}
public static String evalTicket(Ticket t) {
String s = "event: " + t.getEvent() + " ";
s += "venue: " + t.getVenue() + " ";
s += "date: " + t.getDate() + " ";
s += "number of holders: " + t.getNumberOfHolders() + " ";
s += "base price: " + t.getBasePrice() + " ";
s += "price: " + t.getPrice() + " ";
return s;
}
}
Explanation / Answer
//Ticket.java
//Create an abstract class called Ticket
public abstract class Ticket
{
//instance variables of class
private String venue;
private String event;
private String date;
private double basePrice;
//Constructor to set venue, event, date and base price
public Ticket(String venue, String event, String date, double basePrice)
{
this.venue=venue;
this.event=event;
this.date=date;
this.basePrice=basePrice;
}
//Returns venue
public String getVenue()
{
return venue;
}
//Returns event
public String getEvent()
{
return event;
}
//Returns date
public String getDate()
{
return date;
}
//Returns base price
public double getBasePrice()
{
return basePrice;
}
//Returns 1 number of holder
public int getNumberOfHolders()
{
return 1;
}
//abstract getPrice method
public abstract double getPrice();
//Overriede the toString method
@Override
public String toString()
{
return "Venue : "+venue+" "+
"Event : "+event+" "+
"Date : "+date+" "+
"Base Price : "+basePrice;
}
}
--------------------------------------------------------------------------------------------------
//AdvanceTicket.java
//AdvanceTicket that extends the Ticket class and overrides
//getPrice method subtract discount value
public class AdvanceTicket extends Ticket
{
private double discount;
//Constructor of AdavanceTicket
public AdvanceTicket(String venue, String event, String date, double basePrice,
double discount) {
//call super class constructor
super(venue, event, date, basePrice);
//set discount
this.discount=discount;
}
//Overirde getPrice method
@Override
public double getPrice()
{
return getBasePrice()-getBasePrice()*discount;
}
}
--------------------------------------------------------------------------------------------------
//ComplementaryTicket.java
//ComplementaryTicket that extends the Ticket class and overrides
//getPrice method subtract discount value
public class ComplementaryTicket extends Ticket
{
//call super class constructor
public ComplementaryTicket(String venue, String event, String date)
{
//set base price to zero since complementary ticket is of free cost
super(venue, event, date, 0);
}
//Overirde getPrice method
@Override
public double getPrice()
{
return getBasePrice();
}
}
--------------------------------------------------------------------------------------------------
//DayOfTicket.java
//DayOfTicket that extends the Ticket class and overrides
//getPrice method subtract discount value
public class DayOfTicket extends Ticket
{
//Constructor of DayOfTicket
public DayOfTicket(String venue, String event, String date, double basePrice)
{
super(venue, event, date, basePrice);
}
//Overirde getPrice method
@Override
public double getPrice() {
return getBasePrice();
}
}
--------------------------------------------------------------------------------------------------
//GroupTicket.java
//GroupTicket that extends the Ticket class and overrides
//getPrice method subtract discount value
public class GroupTicket extends Ticket
{
private double discount;
private int quantity;
//Constructor of GroupTicket
public GroupTicket(String venue, String event, String date, double basePrice,
double discount, int quantity)
{
super(venue, event, date, basePrice);
this.discount=discount;
this.quantity=quantity;
}
@Override
public double getPrice() {
return getBasePrice()*quantity-getBasePrice()*quantity*discount;
}
}
--------------------------------------------------------------------------------------------------
//Tester java program
//TicketTester.java
public class TicketTester
{
public static void main(String[] args)
{
//Create a Ticket class variable
Ticket t;
//Create an instace of AdvanceTicket
t = new AdvanceTicket("venue1", "party", "1/1/16", 10, .1);
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
//Create an instace of ComplementaryTicket
t = new ComplementaryTicket("venue2", "show", "1/2/16");
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
//Create an instace of DayOfTicket
t = new DayOfTicket("venue3", "club", "1/3/16", 11.0);
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
//Create an instace of GroupTicket
t = new GroupTicket("venue4", "reunion", "1/4/16", 12, .15, 8);
System.out.print(evalTicket(t));
System.out.println(t.toString());
System.out.println();
}
public static String evalTicket(Ticket t)
{
String s = "event: " + t.getEvent() + " ";
s += "venue: " + t.getVenue() + " ";
s += "date: " + t.getDate() + " ";
s += "number of holders: " + t.getNumberOfHolders() + " ";
s += "base price: " + t.getBasePrice() + " ";
s += "price: " + t.getPrice() + " ";
return s;
}
}
--------------------------------------------------------------------------
Sample output:
event: party
venue: venue1
date: 1/1/16
number of holders: 1
base price: 10.0
price: 9.0
Venue : venue1
Event : party
Date : 1/1/16
Base Price : 10.0
event: show
venue: venue2
date: 1/2/16
number of holders: 1
base price: 0.0
price: 0.0
Venue : venue2
Event : show
Date : 1/2/16
Base Price : 0.0
event: club
venue: venue3
date: 1/3/16
number of holders: 1
base price: 11.0
price: 11.0
Venue : venue3
Event : club
Date : 1/3/16
Base Price : 11.0
event: reunion
venue: venue4
date: 1/4/16
number of holders: 1
base price: 12.0
price: 81.6
Venue : venue4
Event : reunion
Date : 1/4/16
Base Price : 12.0
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.