В главах с 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.
Значение не найдено
Комментариев нет:
Отправить комментарий