2013-11-30 4 views
0

Я пытаюсь разработать систему бронирования онлайн-отелей. У меня есть основной класс, который вводит данные от пользователя, такие как их имя, их платежную информацию и другие поля данных, и делает объект Reservation, используя эту информацию. У меня есть другой класс под названием Room, который имеет список Reservations для каждого объекта Room. Проблема, которую я испытываю, заключается в том, что я не могу найти способ добавить объект Reservation в список в объекте Room. Вот некоторые из кода:Как передать объект, созданный в одном классе, другому в java?

public class HotelReservationSystem 
{ 
    private Reservation reservation; 

    public void makeReservation(int checkIn, int checkOut)//Other parameters 
    { 
     reservation = new Reservation(checkIn, checkOut); 
    } 
} 

public class Room 
{ 
    private ArrayList<Reservation> reservations; 

    public void addReservation(//parameters?) 
    { 
     reservations.add(//parameter?); 
    } 
} 

Я не знаю, как получить новый объект Reservation быть передан в качестве параметра для метода add в Room классе. Я просто не могу обернуть вокруг себя голову и надеялся, что кто-то поможет пробегать мой процесс мышления.

Благодарим за помощь.

+0

Эту ссылку можно использовать. Вероятно, передайте его как параметр addReservation. –

+0

И, скорее всего, вы не должны иметь переменную экземпляра 'reservation', но должны переносить эту ссылку (то же самое, что вы переходите на addReservation) в качестве локального параметра в свой метод, который организует всю операцию« создать резервирование ». –

+1

Подумайте о HotelReservationSystem как о физическом столе. Было бы только одно. На столе есть куча трубок, по одному для каждой комнаты. Когда вы создаете резервную копию, вы вставляете ее в соответствующую папку. На столе нет ни одного места, которое является одной оговоркой, за исключением случаев, когда клерк ('makeReservation') записывает его, и это резервирование полностью сохраняется в' makeReservation', пока оно не будет помещено в комнату. –

ответ

1

Пусть makeReservation возвращает созданный объект Reservation:

public Reservation makeReservation(int checkIn, int checkOut)//Other parameters 
{ 
    reservation = new Reservation(checkIn, checkOut); 
    return reservation; 
} 

(Вы также можете создать геттер для reservation)

Затем изменить свой addReservation так:

public void addReservation(Reservation res) 
{ 
    reservations.add(res); 
} 

А потом просто добавить его так:

HotelReservationSystem hrs = new HotelReservationSystem(); 
Reservation res = hrs.makeReservation(); 
Room room = new Room(); 
room.addReservation(res); 

Однако, вы можете переосмыслить вашу модель. Прямо сейчас ваш HotelReservationSystem создает резервную копию и сохраняет только одну, перезаписывая старые. Что произойдет, если вы создадите более одного? Также как вы можете получить оговорки для определенной комнаты с учетом объекта HotelReservationSystem? Просто некоторые вещи, о которых нужно подумать ...

+0

Я знаю из информации, которую я представил, что модель не выглядит такой замечательной, но мне просто нужен был ответ на конкретный вопрос. Я оставил много другого кода, который действительно не касался вопроса. Способ, которым я настроен, - это клиент, который вводит свою информацию. Эта информация используется для резервирования. Это резервирование хранится в списке, который содержит сама комната. После его сохранения остальная часть реализации сбрасывается для следующего пользователя, но список комнат остается. – DaveMcFave

0

Я считаю, что вы должны пытались это

public void addReservation(Reservation reservation) 
{ 
    reservations.add(reservation); 
} 

, но проблема в том, что ваш список reservations является недействительным и не выбросит исключения нулевого указателя. Так что лучше инициализируйте его при объявлении. Таким образом изменить

private ArrayList<Reservation> reservations; 

в

private ArrayList<Reservation> reservations = new ArrayList<Reservation>(); 

И в вашем makeReservation методе Hotel класса это сделать:

Room room = new Room(); 
room.addReservation(reservation); 
Смежные вопросы