Горизонтальное и вертикальное обобщение типа
Горизонтальное и вертикальное обобщение типа
Рис. 10.1. Размерности обобщения
Уже изученные механизмы позволяют написать класс, помещенный в центр рисунка - LIST_OF_BOOKS, экземпляр которого представляет список книг. У класса следующие компоненты: put для вставки элемента, remove для удаления элемента, count для подсчета числа элементов и т.д. Очевидны два пути обобщения понятия LIST_OF_BOOKS.
[x]. Списки являются специальным видом структур, представляющих контейнеры. Из многих других примеров контейнеров отметим деревья, стеки и массивы. В сравнение со списком LIST_OF_BOOKS, более абстрактным вариантом контейнера является класс SET_OF_BOOKS (множество книг). Более специализированным вариантом является класс LINKED_LIST_OF_BOOKS, определяющий связный список книг - специализированный вариант списка. Три класса задают вертикальную размерность на рисунке - размерность наследования.
[x]. Списки книг являются, с другой стороны, специальным случаем списков объектов некоторого вида. Из многих других видов отметим списки журналов, списки людей, списки целых чисел. Это горизонтальная размерность на нашем рисунке - размерность универсализации, тема нашего изучения в последующей части этой лекции. Если задать параметр класса, представляющий произвольный тип, то можно не создавать почти идентичные классы, такие как LIST_OF_BOOKS и LIST_OF_PEOPLE, не жертвуя при этом безопасностью, вносимой статической типизацией.
Отношение между двумя этими механизмами - трудный вопрос для изучающих ОО-концепции. Как рассматривать наследование и параметризацию, как соперников или как соратников, когда целью является построение более гибкого ПО?10.1)
Данная лекция посвящена универсализации, кроме того, мы подробно рассмотрим один из наиболее общих примеров родовых структур: массивы. Заметьте, термины универсальный класс, родовой класс, параметризованный класс являются синонимами. Во всех случаях речь идет о классе с параметрами, задающими некоторый тип (класс).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Вертикальное выравнивание
Вертикальное выравнивание Свойство vertical-align каждой ячейки таблицы определяет вертикальное выравнивание ее содержимого. Содержимое каждой ячейки имеет базовую линию, верх, середину и низ. В контексте таблиц свойство vertical-align может принимать следующие значения.• baseline –
Горизонтальное выравнивание
Горизонтальное выравнивание Горизонтальное выравнивание содержимого ячейки устанавливается свойством text-align. Если в качестве значения свойства text-align для нескольких ячеек в столбце задана строка текста, то содержимое этих ячеек выравнивается относительно
24.4.7 Обобщение
24.4.7 Обобщение Мы рассмотрели некоторые конкретные примеры, чтобы познакомится с основной структурой безопасности. В целом можно использовать обычный набор механизмов для защиты пересылаемого трафика:? Между хостами? Между маршрутизаторами? Между хостом и
Обобщение mem_fun
Обобщение mem_fun Проблемы с интерфейсом mem_fun_t Для начала обратим внимание на то, что mem_fun_t::operator() принимает только указатель на объект класса, чьим членом является функция pm. От этого было бы неплохо избавиться. Рассмотрим такой вариант:template<class TT, class R, class T> struct gen_mem_fun_t
Глава 6. ОБОБЩЕНИЕ ДАННЫХ С ПОМОЩЬЮ АГРЕГАТНЫХ ФУНКЦИЙ
Глава 6. ОБОБЩЕНИЕ ДАННЫХ С ПОМОЩЬЮ АГРЕГАТНЫХ ФУНКЦИЙ В ЭТОЙ ГЛАВЕ, ВЫ ПЕРЕЙДЕТЕ ОТ ПРОСТОГО использования запросов к извлечению значений из базы данных и определению, как вы можете использовать эти значения чтобы получить из них информацию. Это делается с помощью
R.7.1.6 Спецификация типа
R.7.1.6 Спецификация типа К спецификации типа относятся:спецификация-типа: имя-простого-типа спецификация-класса спецификация-перечисления спецификация-сложного-типа :: имя-класса const volatileПри описании объекта служебные слова const и volatile можно добавить к любой законной
R.14 ШАБЛОНЫ ТИПА
R.14 ШАБЛОНЫ ТИПА R.14.1 Шаблоны типа Шаблон типа определяет целое семейство типов или функций.описание-шаблона-типа: template ‹ список-параметров-шаблона-типа › описаниесписок-параметров-шаблона-типа: параметр-шаблона-типа список-параметров-шаблона-типа ,
R.14.1 Шаблоны типа
R.14.1 Шаблоны типа Шаблон типа определяет целое семейство типов или функций.описание-шаблона-типа: template ‹ список-параметров-шаблона-типа › описаниесписок-параметров-шаблона-типа: параметр-шаблона-типа список-параметров-шаблона-типа ,
R.17.8 Шаблоны типа
R.17.8 Шаблоны типа описание-шаблона-типа: template ‹ список-параметров-шаблона-типа › описаниесписок-параметров-шаблона-типа: параметр-шаблона-типа список-параметров-шаблона-типа ,
Отличия процедур типа Function от процедур типа Sub
Отличия процедур типа Function от процедур типа Sub Между процедурами типа Function и типа Sub есть одно существенное отличие: в процедуре типа Function обязательно где-то должен присутствовать по крайней мере один оператор, задающий значение этой функции. При этом используется имя
Вертикальное выравнивание
Вертикальное выравнивание Вертикальное выравнивание, в отличие от горизонтального (см. разд. 4.4), применяется не к строкам и абзацам, а к тексту целиком, поэтому относится к атрибутам, задающим компоновку страниц.Для установки параметров вертикального выравнивания
Три типа «одежки»
Три типа «одежки» Все многообразие видов кейсов для ноутбуков можно свести к трем позициям:Сумка. Классическими портфелями-сумками заполнено более 90 % рынка. Может иметь вид женской сумочки, портфеля, кофра, саквояжа, дипломата, чемодана. Имейте в виду, что элементы
3.2.5 Преобразование типа
3.2.5 Преобразование типа Бывает необходимо явно преобразовать значение одного тпа в значение другого. Явное преобразование типа дает значние одного типа для данного значения другого типа. Например:float r = float(1);перед присваиванием преобразует целое значение 1 к знчению с
7.2.7 Поля Типа
7.2.7 Поля Типа Чтобы использовать производные классы не просто как удобную сокращенную запись в описаниях, надо разрешить следющую проблему: Если задан указатель типа base*, какому проиводному типу в действительности принадлежит указываемый обект? Есть три основных
8.2 Спецификаторы Типа
8.2 Спецификаторы Типа Спецификаторами типов (спецификатор_типа) являются:спецификатор_типа:простое_имя_типа спецификатор_класса enum-спецификатор сложный_спецификатор_типа constСлово const можно добавлять к любому допустимому спецфикатору_типа. В остальных случаях в
8.2.2. Обобщение
8.2.2. Обобщение Часто бывает полезно обобщить исходную задачу таким образом, чтобы полученная более общая задача допускала рекурсивную формулировку. Исходная задача решается, тогда как частный случай ее более общего варианта. Обобщение отношения обычно требует введения