Я сталкивался с этой очень простой вещью несколько раз, но я никогда не знал, как решить ее наиболее эффективным способом.
У меня есть класс «Студент» и класс «Курс». Студент должен знать все свои курсы, которые он посещает, по списку курсов, а курс должен знать всех студентов, которые его посещают, по списку студентов.
Теперь предположим, что я хочу, чтобы студент посетил новый курс, поэтому я создаю метод «addCourse(курс курса)», чтобы добавить новый курс в список курсов студента — нет проблем. Но я также хочу, чтобы курс знал о том, что студент посещает его сейчас. Поэтому я создаю метод «addStudent (Студент)» для класса курса и вызываю его в методе «addCourse» студента.
Проблема в том, что я хочу сделать эти обновления данных возможными с обеих сторон - студентов и курсов, но если бы я добавил соответствующий другой метод в собственный метод, я бы, конечно, столкнулся с переполнением стека. Итак, как я могу предотвратить это наиболее эффективно?
Кроме того, если я буду хранить эти данные в объектах обоих классов, я думаю, что заполнил бы свою память большим количеством данных, чем мне нужно. Есть ли способ предотвратить это, не теряя доступа к данным?