SHARE
SPREAD
HELP

The Tradition of Sharing

Help your friends and juniors by posting answers to the questions that you know. Also post questions that are not available.


To start with, Sr2Jr’s first step is to reduce the expenses related to education. To achieve this goal Sr2Jr organized the textbook’s question and answers. Sr2Jr is community based and need your support to fill the question and answers. The question and answers posted will be available free of cost to all.

 

#
Authors:
Stuart Reges, Marty Stepp
Chapter:
Inheritance And Interfaces
Exercise:
Exercises
Question:4 | ISBN:9780136091813 | Edition: 2

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

TextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbook

Answer

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) 

 

0 0

Discussions

Post the discussion to improve the above solution.