Программирование >>  Структурное программирование 

1 ... 75 76 77 [ 78 ] 79 80 81 ... 342


компилятор обнаруживает вызов maximum в исходном коде программы, этот тип данных, переданных в maximum, подставляется вместо Т всюду в определении шаблона и C-t-+ создает законченную функцию для определения максимального из трех значений указанного типа данных. Затем заново созданная функция компилируется. Таким образом, шаблоны в действительности играют роль средств генерации кода. В программе на рис. 3.27 обрабатываются три функции - одна ожидает три значения int, вторая ожидает три значения double и третья ожидает три значения char. Обработка для типа int имеет вид:

int maximuin(int valuel, int value2, int valueS)

int max = valuel;

if {value2 > max) max = value2;

if (value3 > max) max = values;

return max;

Каждый формальный параметр в определении шаблона должен хотя бы однажды появиться в списке параметров функции. Каждое имя формального параметра в списке определения шаблона должно быть уникальным.

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

Типичная ошибка программирования 3.31

Отсутствие ключевого слова class перед каждым формальным параметром шаблона функции.

Типичная ошибка программирования 3.32

В сигнатуре функции не используются все формальные параметры шаблона функции.

Использование шаблонов функций #include <iostream.h>

template <class Т>

Т maximum(Т valuel, Т value2, Т value3) {

Т max = valuel;

if (value2 > max) max = value2;

if (values > max) m.ax = values;

return max;

Рис. 3.27. Использование шаблонов функций (часть 1 из 2)



Введите три целых значения: 1 2 3 Максимальное целое значение равно: 3 Введите три значения double: 3.3 2.2 1.1 Максимальное значение double равно: 3.3 Введите три символа: А В С Максимальное значение символа равно: С

Рис. 3.27. Использование шаблонов функций (часть 2 из 2)

3.22. Размышления об объектах: идентификация атрибутов объектов

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

В нашем введении в объекты в главе 1 мы указали, что объекты имеют атрибуты и способы поведения. Атрибуты объекта представляются в программе на С4-4- данными; варианты поведения объекта представляется функциями. Сейчас мы сконцентрируем внимание на атрибутах объектов, необходимых для разработки модели лифта. В главе 4 мы перейдем к поведению. В главе 5 мы сосредоточимся на взаимодействии между объектами в модели лифта.

main() ri {

I int intl, int2, int3;

cout Введите три целых значения: ; cin intl int2 intS;

cout Максимальное целое значение равно:

<< maximum(intl, int2, int3); версия int

double doublel, double2, doubles, cout << endl << Введите три значения double: ; cin doublel double2 doubleS; cout << Максимальное значение double равно:

<< maximum(doublel, double2, doubleS); версия double

char charl, char2, charS; cout << endl << Введите три символа: ; cin charl char2 char3;

cout << Максимальное значение символа равно:

<< maximum(charl, char2, charS) << endl; версия char

return 0;



Перед началом выполнения нашего задания давайте обсудим атрибуты объектов реального мира. Атрибуты человека включают его рост и вес. Атрибуты радиоприемника включают частотный диапазон, вид модуляции - амплитудную или частотную, напряжение сети. Атрибуты автомобиля включают текущие показания спидометра и счетчика пройденного расстояния. Атрибуты дома включают стиль ( колониальный , ранчо и т.д.), количество комнат, площадь, размер участка. Атрибуты персонального компьютера включают фирму-изготовителя (Apple, IBM, Compaq и т.д.), тип экрана (монохромный или цветной), объем основной памяти (в мегабайтах), объем дисковой памяти (в мегабайтах) и т.д.

Лабораторное задание 2 по лифту

1. Начните с того, что напечатайте в любом текстовом редакторе текст постановки задачи моделирования лифта (из раздела 2.22).

2. Извлеките из постановки задачи все факты. Исключите весь не относящийся к сути дела текст и поместите каждый факт в отдельной строке вашего текстового файла (в постановке задачи содержится около 60 фактов). Первая группа фактов в файле может выглядеть примерно следующим образом:

Файл фактов двухэтажное здание офиса лифт

пассажир лифта

двери

этаж 1

направления - вверх и вниз

часы

время О

отсчет времени с тактом, соответствующим 1 секунде компонент планировщик программы

случайное планирование появления первого пассажира на любом этаже время первого появления моделирующая программа

создание нового пассажира для указанного этажа размещение пассажира на этом этаже

пассажир нажимает на этаже кнопку вверх или вниз

кнопка вверх или вниз

этаж, нужный пассажиру

этаж, на котором появился пассажир

первый пассажир каждый день появляется на этаже 1

пассажир появляется на этаже 1

пассажир входит в лифт

пассажир нажимает кнопку вверх

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



1 ... 75 76 77 [ 78 ] 79 80 81 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика