|
Программирование >> Структурное программирование
cout Длина строки \ stringl \ - strlen(stringl) endl Длина строки \ string2 \ - strlen(string2) endl << Длина строки \ strings \ - strlen(strings) endl; return 0; Длина строки abcdefghijklmnopqrstuvwxyz - 26 Длина строки три - 3 Длина строки Бостон - 6 Рис. 5.34. Использование strlen 5.13. Размышления об объектах: взаимодействие объектов Это последнее из наших заданий на объектно-ориентированное проектирование, перед тем как мы начнем изучение объектно-ориентированного программирования на C-f-f в главе 6. После того как вы завершите это задание и закончите чтение главы 6, вы будете готовы (и, возможно, будете полны страстного желания) начать кодирование вашей модели лифта. Чтобы завершить модель лифта, определенную в главе 2, вам необходима технология C4-I-, обсуждаемая в главах 6, 7, и 8. Затем мы предложим модификации модели, которые потребуют применения наследования и полиморфизма, обсуждаемых в главах 9 и 10. В этом разделе мы займемся взаимодействием объектов. Мы надеемся, что раздел поможет вам связать все вместе . Возможно, вы пополните списки объектов, их атрибутов и вариантов поведения, разработанные вами в лабораторных заданиях глав 2, 3 и 4. Типичная ошибка программирования 5.20 Непонимание того, что strtok изменяет разбиваемую на лексемы ароку, и последующая попытка использовать эту ароку, как если бы она была исходной неизмененной арокой. Функция strlen получает в качестве аргумента строку и возвращает количество символов в строке - завершающий нулевой символ в длину не включается. Программа на рис. 5.34 демонстрирует функцию strlen. Использование strlen #include <iostream.h> #include <string.h> main () { char *stringl = abcdefghijklmnopqrstuvwxyz ; char *string2 = три ; char *string3 = Бостон ; Мы узнаем, что большинство объектов в С++ работают отнюдь не спонтанно. Правильнее сказать, что объекты отзываются на стимулы в форме сообщений, которые на самом деле являются вызовами функций-элементов объектов. Рассмотрим некоторые взаимодействия объектов при моделировании лифта. Постановка задачи гласит: Пассажир нажимает на этаже кнопку вниз или кнопку вверх . Субъект этого предложения - пассажир, а объект - кнопка. Это пример взаимодействия между объектами. Объект-пассажир посылает сообщение объекту-кнопке. Мы назвали это сообщение pushButton (нажатие кнопки). В последней главе мы сделали это сообщение функцией-элементом объекта кнопки. Теперь в разделах Другие Факты для каждого объекта в вашей модели вы должны указать взаимодействия между объектами. Некоторые из них легко увидеть. Но рассмотрим утверждение пассажир ждет открытия дверей лифта В последней главе мы рассмотрели два варианта поведения дверей лифта, а именно, openDoor (открывание двери) и closeDoor (закрывание двери). Но теперь мы хотим определить, какие объекты посылают соответствующие сообщения. Это неявно указано в предыдущем утверждении, заключенном в кавычки. Немного подумав, мы сделаем вывод, что лифт сам посылает эти сообщения дверям. Подобные взаимодействия объектов неявно подразумеваются в формулировке задачи. Теперь продолжите совершенствование разделов Другие Факты для каждого объекта в вашей модели лифта. Эти разделы должны теперь содержать большинство взаимодействий объектов. Представим каждое из них в виде 1. объект-отправитель 2. посылает конкретное сообщение 3. конкретному объекту-получателю. Для каждого объекта добавим раздел Сообщения, посылаемые другим объектам и внесем в него соответствующие взаимодействия, например, для объекта пассажир внесем запись Пассажир посылает сообщение pushButton кнопке на этом этаже Под объектом кнопка в раздел Сообщения, посылаемые другим объектам поместим сообщение Кнопка посылает сообщение comeGetMe (иди ко мне) лифту Когда вы сделали эти записи, вы можете добавить вашим объектам атрибуты и варианты поведения. Это совершенно естественно. После того, как вы завершите это лабораторное задание, вы будете иметь вполне приемлемое перечисление объектов, которые вам нужны для реализации вашей модели лифта. Для каждого объекта вы получите вполне приемлемое перечисление атрибутов, вариантов поведения объекта и сообщений, которые данный объект посылает другим объектам. В следующей главе мы начнем изучение объектно-ориентированного программирования на С++. Вы научитесь создавать новые классы. Когда вы прочтете главу 6, вы будете готовы написать существенную часть модели лифта на С++. После освоения глав 7 и 8 вы будете достаточно обучены, чтобы реализовать действующую модель лифта. Резюме Указатели - это переменные, которые содержат в качестве своих значений адреса других переменных. Указатели должны быть объявлены до того, как они могут быть использованы. Объявление int *ptr; объявляет ptr указателем на объект типа int и читается как ptr - это указатель на int . Символ * в объявлении указывает, что переменная является указателем. Давайте вспомним основные моменты процесса объектно-ориентированного проектирования, рассмотренного в главах 2-5. 1. Постановка задачи записывается в текстовый файл. 2. Исключается малосущественный текст. 3. Извлекаются все факты. Факты размещаются по одному в строке в файле фактов. 4. Просматриваются все факты, описанные существительными; они образуют наиболее вероятное множество необходимых вам объектов. Создается по одному элементу верхнего уровня схемы для каждого объекта. 5. Остальные факты размещаются в качестве элементов второго уровня ниже соответствующего объекта. Если факт относится к нескольким объектам (как получается для многих фактов), он помещается ниже каждого объекта, к которому он относится. 6. Теперь совершенствуется множество фактов, относящихся к каждому объекту. Ниже каждого объект создаются три списка с подзаголовками Атрибуты, Варианты поведения и Сообщения, посылаемые другим объектам. 7. В списке Атрибуты перечисляются данные, связанные с каждым объектом. 8. В списке Варианты поведения перечисляются действия объектов, которые производятся в ответ на принятые сообщения. Каждый вариант поведения является функцией элементом объекта. 9. В списке Сообщения, посылаемые другим объектам перечисляются сообщения, посылаемые данным объектом другим объектам, а также объекты, которые принимают эти сообщения. 10. К этому моменту ваш проект еще имеет, возможно, некоторые белые пятна. Они, вероятно, станут проявляться по мере того, как вы будете продолжать реализацию вашей системы на С-Ы- после чтения главы 6.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |