Должны ли родительские классы включать дочерние классы или просто идентификаторы?

#class #oop

#класс #ООП

Вопрос:

При определении классов объектов для связанных объектов, каков «правильный» или «предпочтительный» способ обработки отношений в ООП?

Например, у нас есть User класс, который определяет пользователя, и у нас есть Meeting класс, который представляет собрание, на котором пользователь будет ведущим, а несколько пользователей-гостями.

 class User {  private int uid;  private string uname;  private int privs;  // constructor, getters, setters }  
 class Meeting {  private int mid;  private string mname;  private string start_dtime;  private string end_dtime;  private int host_uid; // This?  private User host; // Or This?  // constructor, getters, setters }  

Если я выберу вариант только host_uid в Meeting классе, то в коде использование может быть:

 Meeting mtg = new Meeting(23); // 23 is a meeting ID User husr = new User(mtg-gt;getHostUID() ); cout lt;lt; "Meeting " lt;lt; mtg-gt;getMName() lt;lt; " hosted by " lt;lt; husr-gt;getUName();  

Если я использую встроенный класс, использование становится:

 Meeting mtg = new Meeting(23); // 23 is a meeting ID cout lt;lt; "Meeting " lt;lt; mtg-gt;getMName() lt;lt; " hosted by " lt;lt; mtg-gt;getHost()-gt;getUName();  

Второй кажется более аккуратным, более удобным, но более кодирующим и сложным в классе для построения отношений. Если бы мы также подумали о необходимости иметь множество User для гостей.

Вопрос в том, должен ли родительский класс, представляющий родителя в реляционной модели, иметь эти отношения, встроенные в него (в виде массивов), или лучше упростить его и просто иметь идентификаторы для дочерних объектов.

При каких обстоятельствах один из подходов предпочтительнее другого?