Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

For the next four problems, consider the task of representing types of tickets t

ID: 3802084 • Letter: F

Question

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 print in a ticket object as a String. An example String would be "Number: 17, Price: 50.0".

Explanation / Answer

//Ticket.java

public abstract class Ticket {

    private int number;
    protected double price;
   
    public Ticket(int number) {
        this.number = number;
    }
   
    public double getPrice() {
        return price;
    }
   
    public String toString() {
        return "Number "+number+", price: "+price;
    }
   
    public static void main(String[] args) {
        // Some testing code
        Ticket sat = new StudentAdvanceTicket(1,11);
        Ticket satLate = new StudentAdvanceTicket(2,9);
        Ticket wt = new WalkupTicket(3);
        Ticket at = new AdvanceTicket(4,10);
        System.out.println("price of ticket purchased 10 days in advance: "+at.getPrice());
        System.out.println(sat);
        System.out.println(satLate);
        System.out.println(wt);
        System.out.println(at);

    }

}

//AdvanceTicket.java

public class AdvanceTicket extends Ticket {

    public AdvanceTicket(int number,int daysInAdvance) {
        super(number);
        if (daysInAdvance < 10) {
            price = 40;
        } else {
            price = 30;
        }
    }

}

//StudentAdvanceTicket.java

public class StudentAdvanceTicket extends AdvanceTicket {

    public StudentAdvanceTicket(int number, int daysInAdvance) {
        super(number, daysInAdvance);
        price = price/2;
    }

}

//WalkupTicket.java

public class WalkupTicket extends Ticket {

    public WalkupTicket(int number) {
        super(number);
        price = 50;
    }

}