#1 PetrDolan93
v tomhle případě nepotřebuješ dědičnost vůbec...
public class Main
{
static class Passenger
{
private String name;
}
static class Place
{
private int number;
private Passenger reserved; // bude null, pokud neni zadna rezervace
}
static class Coupe
{
private final List<Place> places = new ArrayList<>();
private int number;
}
static class Wagon
{
private final List<Coupe> coupes = new ArrayList<>();
private int number;
}
static class Train
{
private final List<Wagon> wagons = new ArrayList<>();
}
private static Train createTrain(int wagons, int coupes, int coupePlaces)
{
Train train = new Train();
int coupeCounter = 1;
int placeCounter = 1;
for (int i = 0; i < wagons; i++) {
Wagon wagon = new Wagon();
wagon.number = i + 1;
for (int j = 0; j < coupes; j++) {
Coupe coupe = new Coupe();
coupe.number = coupeCounter++;
for (int k = 0; k < coupePlaces; k++) {
Place place = new Place();
place.number = placeCounter++;
coupe.places.add(place);
}
wagon.coupes.add(coupe);
}
train.wagons.add(wagon);
}
return train;
}
private static boolean reservePlace(Train train, Passenger passenger, int placeNumber)
{
for (Wagon w : train.wagons) {
for (Coupe c : w.coupes) {
for (Place p : c.places) {
if (p.number == placeNumber && p.reserved == null) {
p.reserved = passenger;
return true;
}
}
}
}
return false;
}
public static void main(String[] args)
{
Train train = createTrain(5, 12, 6);
Passenger p = new Passenger();
p.name = "Hulk";
if (reservePlace(train, p, 20)) {
System.out.printf("Místo %s bylo rezervováno pro: %s%n", 20, p.name);
} else {
System.out.printf("Místo %s nelze rezervovat%n", 20);
}
}
}
je potřeba to trochu rozházet do tříd, ošetřit vstupy, přidat metody pro přidání/odebrání pasažerů, případně wagonu a lepší správu rezervací
+ by bylo dobrý to trochu optimalizovat, např. držet ještě mapu s referencema na místa resp. Map<Integer, Place>, aby se rychlejí a líp pracovalo s rezervacema