|
Программирование >> Структурное программирование
Лабораторное задание 5 по лифту 1. Для каждого класса, который вы выделили в разделах Размышления об объектах глав со 2 по 5, напишите соответствующие определения классов на С++. Для каждого класса включите как заголовочный файл, так и исходный файл определения функций-элементов. 2. Напишите программу драйвера, который проверяет каждый из этих классов и пытается запустить на выполнение полную модель лифта. ПРЕДУПРЕЖДЕНИЕ: возможно, вам придется подождать, пока вы не изучите главу 7 Классы: часть II , прежде чем вы будете в состоянии создать приемлемо работающую версию вашей модели. Так что будьте терпеливы и реализуйте только те части модели лифта, для которых вам хватает знаний, приобретенных в главе 6. В главе 7 вы узнаете о композиции, т.е. о создании классов, которые содержат другие классы в качестве элементов; эта техника могла бы помочь вам представить, например, объект кнопку внутри лифта как элемент лифта. Кроме того, в главе 7 вы узнаете, как динамически создавать и уничтожать объекты с помощью new и delete; это поможет вам создавать новые объекты пассажиров, когда они должны появиться в модели, и уничтожать эти объекты пассажиров, когда они покидают модель (после выхода пассажира из лифта). 3. Для первой версии вашей модели спроектируйте только простой вывод, ориентированный на текст, который отобразит сообщения о каждом существенном событии, которое будет происходить. Ваши сообщения могли бы включать такие строки, как Пассажир 1 прибывает на Этаж 1 , Пассажир 1 нажимает Кнопку Вверх Этажа 1 , Лифт прибывает на Этаж 1 , Пассажир 1 входит в Лифт и т.д. Заметим, что мы рекомендуем вам печатать с заглавной буквы те слова каждого сообщения, которые представляют объекты вашей модели. Заметим также, что вы можете предпочесть отложить эту часть лабораторного занятия до прочтения главы 7. 4. Наиболее амбициозные студенты захотят использовать анимизирован-ный графический выход, который показывает, как модель лифта движется на экране вверх и вниз. Резюме Структуры - это совокупности типов данных, построенные с использованием данных других типов. Ключевое слово struct начинает определение структуры. Тело структуры заключается в фигурные скобки ({ и }). Каждое определение структуры должно заканчиваться точкой с запятой. Тэг (имя-этикетка) структуры может использоваться для объявления переменных данного типа стрзпктуры. Определения структуры не резервируют место в памяти; они создают новые типы данных, которые используются далее для объявления переменных. Элементы структуры или класса доступны при использовании операций доступа к элементу - операции точка (.) и операции стрелка (->). Операция точка обеспечивает доступ к элементу структуры посредством имени переменной объекта или ссылки на объект. Операция стрелка обеспечивает доступ к элементу структуры посредством указателя на объект. Препятствиями к созданию новых типов данных с помощью struct являются: возможность существования данных, не имеющих начальных значений; возможность существования данных с неправильными начальными значениями; необходимость изменения всех программ, использующих struct, при изменении реализации struct; отсутствие средств защиты, гарантирующих, что данные не содержат несогласованных значений. Классы предоставляют программисту возможность моделировать объекты с атрибутами и различными вариантами поведения. Типы классов можно определять в С-Н- , используя ключевые слова class и struct, но обычно для этих целей используется ключевое слово class. Имя класса можно использовать для объявления объектов этого класса. Определения класса начинаются с ключевого слова class. Тело определения класса заключается в фигурные скобки ({ и }). Определение класса заканчивается точкой с запятой. Любые данные-элементы или функции-элементы, объявленные в классе после метки public:, являются открытыми и видимыми для любой функции, для которой доступен объект данного класса. Любые данные-элементы или функции-элементы, объявленные в классе после метки private:, являются закрытыми и видимыми только друзьям и другим элементам класса. Метки доступа к элементу всегда заканчиваются двоеточием (:) и могут появляться в определении класса неоднократно и в любой последовательности. Закрытые данные недоступны вне класса. Говорят, что реализация класса скрыта от его клиентов. Конструктор - это специальная функция-элемент с тем же именем, что и класс, которая используется для инициализации элементов объекта класса. Конструкторы вызываются при создании объектов соответствующих классов. Функция с тем же именем, что и класс, но предваряемая знаком тильды (-), называется деструктором. Набор открытых функций-элементов класса называется интерфейсом класса или открытым интерфейсом. Если функция-элемент определена вне определения данного класса, имя функции предваряется именем класса и бинарной операцией разрешения области действия (::). Функции-элементы, определенные с использованием операции разрешения области действия вне определения класса, имеют областью действия этот класс. Функции-элементы, определенные в определении класса, автоматически встраиваются inline. Компилятор сохраняет право не встраивать любую функцию. Вызов функций-элементов более компактен, чем вызов функций в процедурном программировании, потому, что большинство данных, используемых в функции-элементе, непосредственно доступно ей в объекте. Внутри области действия класс на элементы класса можно ссылаться просто с помощью их имен. Вне области действия класс на элементы класса можно ссылаться посредством либо имени объекта, либо ссылки на объект, либо указателя на объект. Для доступа к элементам класса используются операции . и ->. Фундаментальный принцип разработки хорошего программного обеспечения состоит в отделении интерфейса от реализации для улучшения модифицируемости программы. Определения класса обычно помещаются в заголовочных файлах, а определения функций-элементов - в файлах исходных кодов, имеющих такое же имя. По умолчанию способ доступа в классах - private, так что все элементы после заголовка класса и до первого спецификатора доступа считаются закрытыми. Открытые элементы класса предоставляют набор услуг, которыми класс обеспечивает своих клиентов. Доступом к закрытым данным класса можно эффективно управлять с помощью ф>т1кций-элементов, называемых функциями доступа. Если класс хочет позволить клиентам читать закрытые данные, он может обеспечить это с помощью функций чтения get . Изменять закрытые данные класс может позволить своим клиентам с помощью функций записи set . Данные-элементы класса обычно делаются закрытыми, а функции-элементы - открытыми. Некоторые функции-элементы могут быть закрытыми и играть роль функций-утилит для других функций класса. Данным-элементам класса нельзя задавать начальные значения в определении класса. Они должны получать начальные значения в конструкторе или же их значения могут быть установлены после создания соответствующего объекта. Конструкторы можно перегружать. После того, как объект класса получил соответствующие начальные значения, все функции-элементы, которые манипулируют объектом, должны давать гарантию, что объект остается в непротиворечивом состоянии. В объявлении объекта класса могут быть предусмотрены начальные значения. Эти начальные значения передаются конструктору класса. Конструкторы могут определять аргументы по умолчанию. Конструкторы не могут ни указывать тип возвращаемых значений, ни пытаться возвращать значения.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |