» » » Джесс Либерти - Освой самостоятельно С++ за 21 день.


Авторские права

Джесс Либерти - Освой самостоятельно С++ за 21 день.

Здесь можно скачать бесплатно "Джесс Либерти - Освой самостоятельно С++ за 21 день." в формате fb2, epub, txt, doc, pdf. Жанр: Программирование. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Джесс Либерти - Освой самостоятельно С++ за 21 день.
Рейтинг:
Название:
Освой самостоятельно С++ за 21 день.
Издательство:
неизвестно
Год:
неизвестен
ISBN:
нет данных
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "Освой самостоятельно С++ за 21 день."

Описание и краткое содержание "Освой самостоятельно С++ за 21 день." читать бесплатно онлайн.



В книге широко представлены возможности новейшей версии программного продукта Microsoft Visual C++. Подробно описаны средства и подходы программирования современных профессиональных приложений. Материалы книги дополнены многочисленными демонстрационными программами, в процессе разработки которых максимально используются возможности программных инструментов Microsoft Visual Studio. Особое внимание уделено новинкам версии 6.0 и новейшим технологиям объектно-ориентированного программирования, включая использование библиотеки MFC и шаблонов классов, а также создание связанных списков. Отдельное занятие посвящено вопросам объектно-ориентированного анализа и проектирования приложений. Подробно рассмотрены все средства и подходы конструирования собственных пользовательских классов.

Книга рассчитана на широкий круг читателей, интересующихся современными проблемами программирования.






Как эти соображения изменят модель?

Вероятно, целесообразно начать с создания производных объектов, которые моделируют разновидности рассмотренных выше объектов:

class Local_Car : public Car...;

class Tourist_Car : public Car...;

class Taxi : public Car...;

class Local_Pedestrian : public Pedestrian...;

classTourist_Pedestrian : public Pedestrian...;

class Local_Bicycle . public Bicycle...;

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

3. Вам заказали программу планирования времени конференций и встреч, а также бронирования мест в гостинице для визитеров компании и для участников конференций. Определите главные подсистемы.

Для этого проекта нужно написать две отдельные программы: программу-клиент, которую будут запускать пользователи, и программу-сервер, которая будет работать на отдельном компьютере. Кроме того, компьютер клиента должен иметь административный компонент, позволяющий системному администратору добавлять новых людей и новые помещения.

Если вы решили реализовать этот проект в виде модели типа клиент/сервер, то программа-клиент должна принимать данные, веодимые пользователем, и генерировать запрос к программе-серверу. Сервер должен обслужить запрос и отправить результаты назад клиенту. С помощью этой модели многие участники конференции смогут одновременно планировать свои встречи.

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

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++, поддерживающими контроль за соответствием типов данных. Макросы выполняются препроцессором и не обеспечивают безопасности работы с типами.

2. В чем состоит отличие параметра шаблона от параметра функции?

Параметр шаблона используется для создания экземпляра шаблона для каждого типа. Если создать шесть экземпляров шаблонов, то будут созданы шесть различных классов или функций. Параметры функций определяют, какие данные передаются в функцию при ее вызове, но не могут использоваться для создания разных экземпляров одной функции.

3. Чем отличается обычный дружественный шаблонный класс от дружественного шаблонного класса, специализированного по типу?

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

4. Можно ли обеспечить особое выполнение для определенного экземпляра шаблона?

Да. Создайте для конкретного экземпляра шаблона функцию, специализированную по типу. Чтобы изменить выполнение, например, для массивов целых чисел, помимо функции Array<t>::SomeFunction(), создайте также функцию Array<int>::SomeFunction().

5. Сколько создается статических переменных-членов, если поместить один статический член в определение класса шаблона?

По одной для каждого экземпляра класса.

6. Что представляют собой итераторы?

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

7. Что такое объект функции?

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

Упражнения 

1. Создайте шаблон на основе данного класса List:

class List

{

   public:

      List():head(0),tail(0), tbeCount(0) { }

      virtual ~List();

      void insert( int value );

      void append( int value );

      int is_present( int value ) const;

      int is_empty() const { return head == 0: }

      int count() const { return theCount; }

   private:

      class ListCell

      {

         public:

            ListCell(int value, ListCell *cell = ):val(value),next(cell){ }

            int val;

            ListCell *next;

      };

      ListCell *head;

      ListCell *tail;

      int theCount;

};

Вот один из способов выполнения этого шаблона:

template <class Type>

class List

{

   public:

      List():head(0),tail(0),theCount(0) { }

      virtual ~List();

      void insert( Type value );

      void append( Type value );

      int is_present( Type value ) const;

      int is_empty() const { return head == 0; }

      int count() const { return theCount; }

   private:

      class ListCell

      {

         public:

            ListCell(Type value, ListCell *cell = O):val(value),next(cell) { }

            Type val;

            ListCell *next;

      };

      ListCell *head;

      ListCell *tail;

      int theCount;

};

2. Напишите выполнение обычной (не шаблонной) версии класса List.

void List::insert(int value)

{

   ListCell *pt = new ListCell( value, head );

   assert (pt ! = 0);

   // эта строка добавляется для обработки хвостового узла

   if ( head -= 0 ) tail = pt,

      head = pt;

   theCount++;

}

void List::append( int value )

{

   ListCell *pt = new ListCell( value );

   if ( head — 0 )

      head = pt;

   else

      tail->next = pt:

   tail = pt;

   theCount++;

}

int List::is_present( int value ) const

{

   if ( head == 0 )

      return 0;

   if ( head->val — value || tail->val == value )

      return 1;

   ListCell *pt = head->next;

   for (; pt != tail; pt = pt->next)

      if ( pt->val == value )

         return 1;

   return 0;

}

3. Напишите шаблонный вариант выполнения.

template <class Type>

List<Type>::~List()

{

   ListCell *pt = head;

   while ( pt )

   {

      ListCell *tmp = pt;

      pt = pt->next;

      delete tmp;

   }

   head = tail = 0;

}

template <class Type>

void List<Type>::insert(Type value)

{

   ListCell *pt = new ListCell( value, head );

   assert (pt ! = 0);

   // эта строка добавляется для обработки хвостового узла


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "Освой самостоятельно С++ за 21 день."

Книги похожие на "Освой самостоятельно С++ за 21 день." читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Джесс Либерти

Джесс Либерти - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Джесс Либерти - Освой самостоятельно С++ за 21 день."

Отзывы читателей о книге "Освой самостоятельно С++ за 21 день.", комментарии и мнения людей о произведении.

А что Вы думаете о книге? Оставьте Ваш отзыв.