Устранение традиционной путаницы
Устранение традиционной путаницы
Класс - это модель, а объект - экземпляр такой модели. Эта особенность настолько очевидна, что обычно не требует дополнительных комментариев. Тем не менее, в определенной категории специальной литературы имеет место весьма небрежное обращение с этими понятиями, - смешиваются понятие отдельного объекта и концепция объектов в целом, которую характеризует класс. У этой путаницы два источника. Один - возникает из-за широкого толкования термина "объект" в естественном языке. Другой источник недоразумений связан с метаклассами, - с ситуациями, когда классы сами выступают в роли объектов. Классическим примером может служить транслятор объектного языка, для которого классы языка являются объектами трансляции.
Некоторые ОО-языки, особенно Smalltalk, для выхода из рассмотренной ситуации используют понятие метакласс (metaclass). Метакласс - это класс, экземпляры которого сами являются классами. В романе "Имя Розы", отрывок из которого приведен в эпиграфе к данной лекции, встречается понятие "знаки знаков". По сути, это и есть неформальное определение метаклассов.
Мы будем избегать введения метаклассов, поскольку создаваемых ими проблем больше, чем тех, которые они решают. В частности, введение метаклассов создает трудности при проведении статической проверки типов, что является необходимым условием разработки надежного ПО. Основные функции метаклассов могут быть гораздо лучше реализованы с помощью других средств:
[x]. Метаклассы можно использовать для задания свойств, доступных многим или всем классам. Тот же результат можно достичь, создавая семейство классов, наследников общего предка - класса ANY, содержащего объявления универсальных свойств.
[x]. Некоторые операции характерны, скорее, для класса в целом, а не для отдельных его экземпляров, так что их можно рассматривать как методы метакласса. Но этих операций обычно немного и они хорошо известны. Опять-таки, их можно ввести при определении класса ANY, или реализовать введением специальных языковых конструкций. Наиболее очевидным примером является конструктор класса, выполняющий операцию создания объектов.
[x]. Метакласс может использоваться для получения дополнительной информации о классе - имени, списке свойств, списке родителей и т.д. Но и здесь нет необходимости в метаклассе. Достаточно разработать специальный библиотечный класс E_CLASS, экземпляры которого представляют классы и их свойства. При создании такого экземпляра необходимо передать в качестве параметра соответствующий класс C и далее использовать этот экземпляр для получения информации о классе C, обращаясь к соответствующим компонентам E_CLASS.
В данной книге не используется самостоятельная концепция метакласса. Присутствие метаклассов в том или ином языке или среде разработки не оправдывает смешение понятий моделей и их экземпляров - классов и объектов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Устранение затора
Устранение затора Переполнение, или затор, может возникнуть в сети по многим причинам. Например, если данные поступают к шлюзу по высокоскоростному каналу и должны быть переданы в низкоскоростной канал. Или данные нескольких каналов мультиплексируются в один канал,
VoIP: наведение мостов между традиционной и сетевой телефонией
VoIP: наведение мостов между традиционной и сетевой телефонией Хотя передача голоса по IP-протоколу (Voice over IP, VoIP) часто рассматривается как своего рода бесплатная междугородняя телефонная связь, настоящая ценность VoIP в том, что с его помощью голос становится всего лишь
Устранение неполадок
Устранение неполадок С помощью данного механизма можно решать и устранять практически любые неполадки и сбои в работе аппаратных или программных средств, которые установлены и используются на компьютере. При этом все сбои и неполадки разделены на пять категорий:?
От традиционной архитектуры к архитектуре убеждения
От традиционной архитектуры к архитектуре убеждения Лоррейн Джонстон в своей книге Learning from Traditional Architects пишет: В исторических хрониках архитекторами называли мастеров, сооружавших оригинальные постройки… В течение XVIII и XIX веков их роль изменилась, архитекторы уже не
Устранение негатива
Устранение негатива Личное общение, как известно, устраняет негатив. Однако социальные сети дают возможность безнаказанно говорить все, что думаешь И очень часто в таких соцсетях люди выплескивают весь накопившийся негатив Запомните: если хорошее о вас могут написать в
Устранение чересстрочной развертки
Устранение чересстрочной развертки Иногда приходится обрабатывать изображения, захваченные из видеофильма, ролика или мультфильма. Особенность кадра видео в том, что за один кадр передаются не все строки, из которых состоит изображение, а только четные или нечетные (это
R.8.1.1 Устранение неоднозначности
R.8.1.1 Устранение неоднозначности Неоднозначность, отмеченная в §R.6.8, которая возникает из-за сходства между приведением, заданным в функциональном стиле, и описанием, может также появиться в контексте описания. В этом контексте она проявляется как сходство между
Устранение мерцания
Устранение мерцания Несмотря на то что мы проделали уже очень большую работу, наша программа по-прежнему не лишена недостатков. При запуске программы изображения постоянно мерцают, раздражая пользователя. Это связано с перерисовкой экрана через заданные интервалы
6.3. Переход к традиционной учетной записи root
6.3. Переход к традиционной учетной записи root Несмотря на то, что в дистрибутиве Ubuntu традиционная учетная запись root отключена, возможность восстановить ее имеется. После чего режим ее использования будет таким же, как и в прочих дистрибутивах, — вы сможете заходить в
3.1. Ограничения и проблемы традиционной графологии
3.1. Ограничения и проблемы традиционной графологии Возражения против графологии В свое время Роберт Саудек в своей работе «Научная графология» (Wissenschaftliche Graphologie) сформулировал шесть основных возражений, обычно выдвигаемых против графологического анализа. Они во многом
Проблемы традиционной графологии
Проблемы традиционной графологии Возможности графологии, как и всякой конкретной науки, ограничены. Поэтому важно знать, что следует в действительности ожидать от графологического анализа. Зачастую графологию переоценивают, но еще чаще недооценивают ее
17.11. Устранение JPEG-дефектов
17.11. Устранение JPEG-дефектов Начиная с момента появления первых графических форматов программисты ищут способ, как записать в файл максимальное количество информации об изображении при минимально возможном размере файла. В качестве решения данной проблемы применяются
Устранение неполадок
Устранение неполадок По той же причине, по которой невозможно создать универсальное руководство по прошивке мобильных телефонов, не существует и универсальных рекомендаций по устранению неполадок.Самая частая и пугающая ситуация – после перепрошивки телефон не