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

Comments (10)