For the next four problems, consider the task of representing types of tickets to campus events. Each ticket has a unique number and a price. There are three types of tickets: walk-up tickets, advance tickets, and student advance tickets. Figure 9.10 illustrates the types:
• Walk-up tickets are purchased the day of the event and cost $50.
• Advance tickets purchased 10 or more days before the event cost $30, and advance tickets purchased fewer than
10 days before the event cost $40.
• Student advance tickets are sold at half the price of normal advance tickets: When they are purchased 10 or more
days early they cost $15, and when they are purchased fewer than 10 days early they cost $20.
Implement a class called Ticket that will serve as the superclass for all three types of tickets. Define all common
operations in this class, and specify all differing operations in such a way that every subclass must implement them.
No actual objects of type Ticket will be created: Each actual ticket will be an object of a subclass type. Define the
following operations:
• The ability to construct a ticket by number.
• The ability to ask for a ticket’s price.
• The ability to println a ticket object as a String. An example String would be "Number: 17, Price: 50.0".
public class Ticket {
int ticketNumber;
int ticketPrice;
public Ticket(int ticketNumber) {
this.ticketNumber = ticketNumber;
}
public Ticket() {
}
public int getTicketNumber() {
return ticketNumber;
}
public void setTicketNumber(int ticketNumber) {
this.ticketNumber = ticketNumber;
}
public int getTicketPrice() {
return ticketPrice;
}
public void setTicketPrice(int ticketPrice) {
this.ticketPrice = ticketPrice;
}
}
public class WakeUpTicket extends Ticket {
static int price = 50;
public WakeUpTicket(int ticketNumber) {
super(ticketNumber);
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
WakeUpTicket.price = price;
}
@Override
public String toString() {
return "Ticket number: " + this.getTicketNumber() + ", price: " + this.getPrice() + ".";
}
}
public class AdvanceTicket extends Ticket {
int ticketNumber;
int numberOfDaysBeforeEvent;
int price = 40;
public int getTicketNumber() {
return ticketNumber;
}
public void setTicketNumber(int ticketNumber) {
this.ticketNumber = ticketNumber;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getNumberOfDaysBeforeEvent() {
return numberOfDaysBeforeEvent;
}
public void setNumberOfDaysBeforeEvent(int numberOfDaysBeforeEvent) {
this.numberOfDaysBeforeEvent = numberOfDaysBeforeEvent;
}
public AdvanceTicket(int ticketNumber, int daysBeforeEvent) {
this.ticketNumber = ticketNumber;
this.numberOfDaysBeforeEvent = daysBeforeEvent;
}
public AdvanceTicket() {
}
@Override
public String toString() {
if (this.getNumberOfDaysBeforeEvent() > 10)
this.setPrice(30);
return "Ticket number: " + this.getTicketNumber() + ", price: " + this.getPrice() + "." + " purchased "
+ this.getNumberOfDaysBeforeEvent() + " days before the event. \n";
}
}
public class StudentAdvanceTicket extends AdvanceTicket {
int price = 20;
int ticketNumber;
int numberOfDaysBeforeEvent;
public int getTicketNumber() {
return ticketNumber;
}
public void setTicketNumber(int ticketNumber) {
this.ticketNumber = ticketNumber;
}
public int getPrice() {
return price;
}
public int getNumberOfDaysBeforeEvent() {
return numberOfDaysBeforeEvent;
}
public void setNumberOfDaysBeforeEvent(int numberOfDaysBeforeEvent) {
this.numberOfDaysBeforeEvent = numberOfDaysBeforeEvent;
}
public void setPrice(int price) {
this.price = price;
}
public StudentAdvanceTicket(int ticketNumber, int days) {
this.ticketNumber = ticketNumber;
this.numberOfDaysBeforeEvent = days;
}
public StudentAdvanceTicket() {
}
@Override
public String toString() {
if (this.getNumberOfDaysBeforeEvent() > 10)
this.setPrice(15);
return "Ticket number: " + this.getTicketNumber() + ", price: " + this.getPrice() + ".(ID required) \n";
}
public static void main(String args[]) {
StudentAdvanceTicket ad = new StudentAdvanceTicket(86, 12);
StudentAdvanceTicket ad1 = new StudentAdvanceTicket(24, 4);
StudentAdvanceTicket ad2 = new StudentAdvanceTicket(37, 15);
StudentAdvanceTicket ad3 = new StudentAdvanceTicket(31, 2);
System.out.println(ad);
System.out.println(ad1);
System.out.println(ad2);
System.out.println(ad3);
}
}
Output:
Ticket number: 52, price: 15.(ID required)
Ticket number: 24, price: 20.(ID required)
Ticket number: 68, price: 15.(ID required)
Ticket number: 78, price: 20.(ID required)