1// Aim: Program to perform Abstract Class operations (Train TrainCompartmentTask).
2import java.util.Scanner;
3abstract class TrainCompartmentTask {
4 protected int availableSeats;
5
6 public TrainCompartmentTask(int availableSeats) {
7 this.availableSeats = availableSeats;
8 }
9
10 public abstract void notice();
11
12 public void bookTicket(int seats) {
13 if (seats <= availableSeats) {
14 availableSeats -= seats;
15 System.out.println(seats + " seats booked successfully.");
16 } else {
17 System.out.println("Not enough seats available.");
18 }
19 }
20}
21
22class FirstClass extends TrainCompartmentTask {
23
24 public FirstClass(int availableSeats) {
25 super(availableSeats);
26 }
27
28 public void notice() {
29 System.out.println("First Class TrainCompartmentTask: " + availableSeats + " seats available.");
30 }
31}
32
33class GeneralClass extends TrainCompartmentTask {
34
35 public GeneralClass(int availableSeats) {
36 super(availableSeats);
37 }
38
39 public void notice() {
40 System.out.println("General Class TrainCompartmentTask: " + availableSeats + " seats available.");
41 }
42}
43
44public class TrainCompartment {
45 public static void main(String[] args) {
46 Scanner sc = new Scanner(System.in);
47
48 FirstClass firstClass = new FirstClass(50);
49 GeneralClass generalClass = new GeneralClass(100);
50
51 firstClass.notice();
52 generalClass.notice();
53
54 while(true){
55 System.out.println("Choose an option: 1. Book First Class Ticket 2. Book General Class Ticket 3. show available seats 4. Exit");
56 int choice = sc.nextInt();
57 switch (choice) {
58 case 1:
59 System.out.println("Enter number of seats to book:");
60 int firstClassSeats = sc.nextInt();
61 firstClass.bookTicket(firstClassSeats);
62 break;
63 case 2:
64 System.out.println("Enter number of seats to book:");
65 int generalClassSeats = sc.nextInt();
66 generalClass.bookTicket(generalClassSeats);
67 break;
68 case 3:
69 firstClass.notice();
70 generalClass.notice();
71 break;
72 case 4:
73 System.exit(0);
74 sc.close();
75 default:
76 System.out.println("Invalid choice.");
77 }
78 }
79 }
80}