суббота, 5 декабря 2009 г.

7.10. Размышления об объектах: использование композиции и динамического управления объектом в модели лифта

В главах с 2 по 5 вы проектировали модель лифта, а в главе 6 начали программирование этой модели. На протяжении главы 7 мы обсуждали ме­тоды, необходимые для завершения полной рабочей модели лифта. В част­ности, мы обсудили методику динамического управления объектами, которая позволяет использовать new и delete для создания и уничтожения объектов, необходимых для функционирования модели лифта. Мы обсудили также ком­позицию, которая позволяет создавать классы, содержащие в качестве эле­ментов другие классы. Композиция позволяет вам создать класс здание, ко­торый содержит лифт и этажи, и, в свою очередь, создать класс лифт, который содержит кнопки.
Лабораторное задание 6 по лифту
       Каждый раз, когда в модели появляется очередной пассажир, вы долж­ны использовать new, чтобы создать представляющий его объект Пас­сажир. Заметим, что new активизирует конструктор создаваемого объ­екта и, конечно, конструктор должен задать объекту соответствующие начальные значения. Каждый раз, когда пассажир покидает модель (после выхода из лифта), вы должны использовать delete, чтобы унич­тожить объект пассажира и восстановить память, занятую этим объ­ектом.
        Перечислите отношения композиции между классами, которые вы ре­ализовали для вашей модели лифта. Модифицируйте описания классов, которые вы создали в разделе «Размышления об объектах» в главе 6, чтобы отразить эти отношения композиции.

3. Завершите реализацию работающей моделирующей программы. В пос­ледующих главах мы подскажем, как расширить модель лифта.
Резюме
       Ключевое слово const указывает, что объект константный его нельзя изменять.
       Компилятор С++ не позволяет вызывать неконстантную функцию-эле- мент константного объект.
       Функция указывается как const и в ее объявлении, и в ее описании.
       Константная функция-элемент может быть перегружена неконстант­ным вариантом. Выбор того, какая из перегруженных функций-эле­ментов будет использоваться, осуществляется компилятором автомати­чески в зависимости от того, был объявлен объект как const или нет.
       Константный объект должен получить начальные значения в своем объявлении.
       Если класс содержит константные данные-элементы, конструктор этого класса должен быть обеспечен инициализаторами элементов.
       Классы могут быть композицией объектов других классов.
       Объекты-элементы создаются в том порядке, в котором они объявлены, и до того, как будут созданы объекты включающего их класса.
       Если объект-элемент не имеет инициализатора элементов, вызывается конструктор объекта-элемента с умолчанием.
       Дружественная функция класса это функция, определенная вне класса, но имеющая право доступа к элементам класса, объявленным как private и protected.
       Объявление дружественности может помещаться в любом месте опре­деления класса.
       Каждая перегруженная функция, предназначенная быть другом, долж­на быть явно объявлена как друг класса.
       Каждый объект поддерживает указатель на самого себя, называемый указателем this, который является неявным аргументом во всех ссыл­ках на элементы внутри этого объекта. Указатель this неявно исполь­зуется при ссылках и на функции-элементы, и на данные-элементы объекта.
       Каждый объект может определить свой собственный адрес путем ис­пользования ключевого слова this.
       Указатель this можно использовать явно, но чаще он используется неявно.
        Операция new автоматически создает объект соответствующего размера и возвращает указатель правильного типа. Чтобы освободить область памяти, занимаемую этим объектом, используется операция delete.
       Массив объектов можно размещать автоматически с помощью операции new, например, оператор
int *ptr = new int[100];

выделяет место для массива из 100 целых чисел и присваивает адрес начала массива указателю ptr. Этот массив может быть уничтожен оператором
delete [ ] ptr;
       Статические данные-элементы имеют только одну копию для всех объ­ектов класса и содержат информацию «для всего класса». Объявление статического элемента начинается с ключевого слова static.
       Статические данные-элементы имеют областью действия класс.
       Статические элементы класса доступны через объект этого класса или по имени класса с использованием операции разрешения области дей­ствия (если этот элемент открытый).
       Функция-элемент может быть объявлена как static, если она не должна иметь доступ к нестатическим элементам класса. В отличие от неста­тических функций-элементов статическая функция-элемент не имеет указателя this, потому что статические данные-элементы и статические функции-элементы существуют независимо от каких-либо объектов класса.

Терминология
бинарная операция разрешения
области действия (::) вложенный класс деструктор
деструктор по умолчанию динамические объекты друг класса
дружественная функция инициализатор элемента итератор
классы контейнеры композиция
константная функция-элемент константный объект конструктор
конструктор объекта-элемента конструктор по умолчанию
область действия класс объект-элемент операция delete операция delete [ ] операция new
операция доступа к элементу (.) операция доступа к элементу по указателю (->) принцип наименьших привилегий расширяемость языка спецификаторы (метки) доступа к элементам статическая функция-элемент статические данные-элементы сцепленные вызовы функций-элементов указатель this

Типичные ошибки программирования
Описание константной функции-элемента, которая изменяет дан­ные-элементы объекта.
Описание константной функции-элемента, которая вызывает некон­стантную функцию-элемент.
Вызов неконстантной функции-элемента для константного объекта.
Попытка изменить константный объект.
Нет инициализаторов константных данных-элементов.

   Различные устройства (такие как экран, диски, клавиатура, память и процессор) которые входят в состав компьютера, называются аппарат­ными средствами.
     Программы, которые выполняет компьютер, называются программным обеспечением.
     Входной блок является «воспринимающей» частью компьютера. Ос­новная информация вводится сегодня в компьютеры с помощью кла­виатур, подобных пишущей машинке.
  Объекты это фактически повторно используемые компоненты про­граммного обеспечения, моделирующие элементы реального мира.
1.1.            Однострочный комментарий начинается с символа //. Программисты вставляют комментарии, чтобы документировать программу и улуч­шить ее читаемость. Комментарии не вызывают никаких действий ком­пьютера при выполнении программы.
1.2.            Строка #include <iostream.h> дает указание препроцессору С++ вклю­чить в программу содержание головного файла потоков ввода-вывода. Этот файл содержит информацию, необходимую, чтобы компилировать программу, которая использует cin и cout.
1.3.            Обычно программа на С++ начинает выполнение с функции main.
1.4.            Объект потока вывода cout, обычно подключенный к экрану, исполь­зуется для вывода данных. Множество элементов данных может быть выведено с помощью сцепленной операции поместить в поток («).
1.5.            Объект потока ввода cin, обычно подключенный к клавиатуре, исполь­зуется для ввода данных. Множество элементов данных может быть введено с помощью сцепленной операции взять из потока (»).
1.6.            Все переменные в программе на С++ должны быть объявлены перед тем, как они могут быть использованы.
  Научиться использовать операторы программного уп­равления break и continue.
****
Введите ключ поиска - целое число:
2.1.                   
Найдено значение в элементе 18
Введите ключ поиска - целое число:
2.2.                   
Значение не найдено

Комментариев нет:

Отправить комментарий