×
Traktatov.net » Освой самостоятельно С++ за 21 день » Читать онлайн
Страница 440 из 448 Настройки

На стороне клиента (помимо административного модуля) существует две основные подсистемы: интерфейс пользователя и система связей. На стороне сервера — три основные подсистемы: связей, планирования и почтового интерфейса, который объявляет пользователю об изменениях в расписании.

4. Спроектируйте интерфейсы к классам той части программы, обсуждаемой в упражнении 3, которая относится к резервированию гостиничных номеров.

Для организации конференции или деловой встречи необходимо зарезервировать помещение на определенное время. Этим занимается организационный комитет, который должен знать конкретное время проведения встречи и список участников.

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

Приведем прототипы перечисленных выше классов.

class Calendar_Class; // ссылка на класс

class Meeting, // ссылка на класс

class Configuration

{

   public:

      Configuration();

      ~Configuration();

      Meeting Schedule( ListOfPerson&, Oelta Time duration );

      Meeting Schedule( ListOfPerson&, Delta Time duration, Time );

      Meeting Schedule( ListOfPerson&, Delta Time duration, Room );

      ListOfPerson& People(); // открытые методы доступа

      ListOfRoom& Rooms(); // открытые методу доступа

   protected:

      ListOfRoom rooms;

      ListOfPerson people;

};

typedef long Room_ID;

class Room

{

   public:

      Room( String name, Room_ID id, int capacity. String directions description = "" );

      ~Room();

      Calendar_Class Calendar();

   protected:

      Calendar_Class calendar;

      int capacity;

      Room_ID id;

      String name;

      String directions; // где этот гостиничный номер?

      String description;

};

typedef long Person_ID;

class Person

{

   public:

      Person ( String name, Person_ID id );

      ~Person();

      Calendar_Class Calendar(); // место доступа для добавления встреч

   protected:

      Calendar_Class calendar;

      Person_ID id;

      String name;

};

class Calendar_Class

{

   public:

      Calendar_Class();

      ~Calendar_Class();

      void Add( const Meeting& ); // добавляем встречу в календарь

      void Delete( const Meeting& );

      Meeting* Lookup( Time ); // проверяем, не назначена ли уже встреча на это чис-

      Block( Time, Duration, String reason = "" );

      // резервируем время...

   protected:

      OrderedListOfMeeting meetings;

};

class Meeting

{

   public:

      Meeting( ListOfPerson&, Room room, Time when, Duration duration, String purpose = "" );

      ~Meeting();

   protected:

      ListOfPerson people;

      Room room;

      Time when;

      Duration duration;

      String purpose;

};

День 19

 Контрольные вопросы

1. Какова разница между шаблоном и макросом?

Шаблоны являются средствами программирования языка C++, поддерживающими контроль за соответствием типов данных. Макросы выполняются препроцессором и не обеспечивают безопасности работы с типами.