Обсуждение: что все-таки не сделано
Обсуждение: что все-таки не сделано
Основные идеи универсализации уже представлены, но как вы могли заметить, на два важных вопроса не даны ответы.
Первое: в наших усилиях гарантирования безопасности типов мы заняли чересчур консервативную позицию. Конечно, некорректно пытаться втолкнуть круг в стек банковских счетов. Трудно вообразить, какому приложению нужен стек, содержащий точки и банковские счета. Но рассмотрим графическое приложение, для которого вполне естественен стек, содержащий круги, прямоугольники, точки. Такая потребность кажется довольно разумной, но пока мы не можем удовлетворить ее. Система типов, определенная до сих пор, отвергнет вызов figure_stack.put(that_point) если тип figure_stack был объявлен как STACK [FIGURE], а that_point - тип, отличный от FIGURE. Дадим пока имя рассматриваемым структурам и назовем их полиморфными структурами данных (polymorphic data structure). Вызов, стоящий перед нами - как поддержать эти структуры без потери преимуществ безопасности типов.
Второе: родовые параметры представляют произвольные типы. Это хорошо для стеков и массивов, поскольку объекты любого типа по своей сути являются хранимыми в различных контейнерах. Но при работе, например, с векторами, хотелось бы иметь возможность складывать элементы векторов или сами векторы. При работе с классом, задающим хеш-таблицы, хотелось бы быть уверенным, что хеш-функция применима к любому элементу таблицы. Такая форма универсализации, где формальный родовой параметр уже не может быть произвольным типом, а является типом, гарантирующим предоставление ряда операций, называется ограниченной универсализацией (constrained genericity).
Для обеих этих проблем ОО-метод обеспечивает простые и элегантные решения, оба основанные на комбинировании универсализации и наследования.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Опиум для народа: сделано в ГДР
Опиум для народа: сделано в ГДР Бесперебойная поставка развлечений с Запада сделала значительную долю населения ГДР непригодной для политической активности, и это не ускользнуло от внимания немецких диссидентов. Кристофер Хайн, известный восточногерманский писатель и
Для тех, кто все-таки боится поднимать цены
Для тех, кто все-таки боится поднимать цены Рассмотрим простой пример. Если ваш продукт стоит 4200 рублей, от того, что вы повысите цену до 4290 рублей, количество продаж, вероятнее всего, не изменится. Зато вы получите дополнительные 90 рублей чистой прибыли с каждой
8.5. Если беда все-таки случилась
8.5. Если беда все-таки случилась Как ни предохраняйся, от случайных сбоев ни один компьютер не застрахован. Время от времени в системе могут возникать критические ошибки, приводящие к проблемам в работе Windows или невозможности ее запуска. Причинами таких ошибок могут быть
Так все-таки программирование (programming) или написание скриптов (scripting)?
Так все-таки программирование (programming) или написание скриптов (scripting)? Новичков в программировании, как правило, озадачивает разница между, собственно, программированием и языками скриптов. Программы, написанные на каких-то языках программирования, обычно гораздо более
Итак, чему же все-таки соответствует истина?
Итак, чему же все-таки соответствует истина? Мы можем использовать 1 и 0 в качестве проверочных значений оператора if. Спрашивается, можем ли мы использовать другие числа. Если да, то что при этом происходит? Давайте проведем эксперимент. /* if - тест */main( ){if (200) printf("200 -
«Сделано!»
«Сделано!» Решения временныСделано! Это волшебное слово. Когда вы уже сделали — вы получили опыт и можете идти дальше.Но подождите, а что если вы сделали что-то неправильно? Это плохо. Но это не нейрохирургия, это — сетевое приложение. Нет ничего страшного. Не нужно только
13-Я КОМНАТА: Сделано вручную
13-Я КОМНАТА: Сделано вручную Автор: Илья Щуров VoyagerНекоторое время назад мне довелось поучаствовать в одном круглом столе, организованном компанией Google. Речь на нем шла об "Образовании 2.0" - вещи, пожалуй, еще более расплывчатой и непонятной, чем пресловутый "второй веб". Как
ПИСЬМОНОСЕЦ: Сперматозоидывсе-таки хондрят!
ПИСЬМОНОСЕЦ: Сперматозоидывсе-таки хондрят! 1. Прежде всего, конечно, интересует критерий отбора писем в рубрику, хотя вы и говорите, что, мол, отбираются самые интересные, но все-таки… А может, у вас стоит компьютер с ИИ, или по количеству слогов?2. Можно сказать, личный
Terralab.ru: Сделано в России
Terralab.ru: Сделано в России Автор: Сергей ЛеоновЭта рубрика возникла как дополнение к «Железному потоку», но здесь мы попробуем сопоставить несколько продуктов одного класса. На сей раз мы попросили отечественные компании подобрать (и если не лень - обосновать) конфигурацию
Если беда все-таки случилась
Если беда все-таки случилась Как ни предохраняйся, от случайных сбоев ни один компьютер не застрахован. Время от времени в системе могут возникать критические ошибки, приводящие к проблемам в работе Windows или невозможности ее запуска. Причинами таких ошибок могут быть
опыты: Таки yellow submarine!..
опыты: Таки yellow submarine!.. Автор: Юрий Смирнов smir@kvidex.ruКогда я учился в четвертом классе, отец сделал мне из фанеры резиномоторную подводную лодку по чертежам из журнала "Моделист-конструктор". Лодка забавно ныряла на 50-100 см, проходила под водой метров десять, а потом