I tried to desing BMS, if you have suggestion you can comment down
update
checkout Low Level Design Approach
Please Upvote it will motivate me write more :)
public class BMS {
List<Theater> theaters;
List<Movie> getmovie(Date date, String city);
List<Theater> getCenams(String city);
}
public class Theater {
Address adress;
List<Audi> audi;
public Map<Date, Movie> getMovie(List<Date> dateList);
public Map<Date, Show> getShow(List<Date> dateList);
}
public class Address {
String name;
String city;
String state;
int pin;
int contact;
}
public class Audi {
int audiId;
String audiName;
List<Show> shows;
int totalSeat;
}
public class Show {
int showId;
Movie movieName;
int startTime;
int endTime;
List<Seat> seat;
Theater playedAt;
}
public class Seat {
int id;
SeatStatus status;
}
public enum SeatStatus {
AVAILABLE, RESERVED, BOOKED
}
public class BoxSeat extends Seat {
int cost;
}
public class GoldSeat extends Seat {
int cost;
}
abstract class person {
int userId;
Search obj;
string name;
Address address;
String mobile;
Gender gender;
}
public enum Gander {
MALE, FEMALE
}
public class Actor extends Person {
List<Movie> movie;
}
public class Movie {
string title;
List<Actor> actors;
Date releaseDate;
int duration;
String language;
Genre movieType;
MovieRating movieRating;
Map<String, List<Show>> cityShow;
}
public enum Genre {
COMEDY, ACTION, ROMENTIC, HORROR
}
public enum MovieRating {
U, UA, A, S
}
public class Booking {
int bookingId;
Show bookedShow;
Date bookingDate;
Customer customerName;
Audi audi;
BookingStatus bookingStatus;
double totalAmount;
List<Seat> bookedseat;
Payment paymentObj;
public boolean makePayment(Pyment paymentObj);
}
public enum BookingStatus {
REQUESTED, CONFIRMED, CANCELLED
}
public class Payment {
double amount;
Date date;
int transactionId;
}
public class Customer extends Person {
List<Movie> getMovies(String title);
List<Movie> getMovies(Genre genre);
List<Movie> getMovies(String city);
List<Movie> getMovies(String language);
public Booking makeBooking(Booking booking);
public List<Booking> getBooking();
}Also check out my other blog on LLD LRU Cache