Устранение традиционной путаницы

Устранение традиционной путаницы

Класс - это модель, а объект - экземпляр такой модели. Эта особенность настолько очевидна, что обычно не требует дополнительных комментариев. Тем не менее, в определенной категории специальной литературы имеет место весьма небрежное обращение с этими понятиями, - смешиваются понятие отдельного объекта и концепция объектов в целом, которую характеризует класс. У этой путаницы два источника. Один - возникает из-за широкого толкования термина "объект" в естественном языке. Другой источник недоразумений связан с метаклассами, - с ситуациями, когда классы сами выступают в роли объектов. Классическим примером может служить транслятор объектного языка, для которого классы языка являются объектами трансляции.

Некоторые ОО-языки, особенно Smalltalk, для выхода из рассмотренной ситуации используют понятие метакласс (metaclass). Метакласс - это класс, экземпляры которого сами являются классами. В романе "Имя Розы", отрывок из которого приведен в эпиграфе к данной лекции, встречается понятие "знаки знаков". По сути, это и есть неформальное определение метаклассов.

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

[x]. Метаклассы можно использовать для задания свойств, доступных многим или всем классам. Тот же результат можно достичь, создавая семейство классов, наследников общего предка - класса ANY, содержащего объявления универсальных свойств.

[x]. Некоторые операции характерны, скорее, для класса в целом, а не для отдельных его экземпляров, так что их можно рассматривать как методы метакласса. Но этих операций обычно немного и они хорошо известны. Опять-таки, их можно ввести при определении класса ANY, или реализовать введением специальных языковых конструкций. Наиболее очевидным примером является конструктор класса, выполняющий операцию создания объектов.

[x]. Метакласс может использоваться для получения дополнительной информации о классе - имени, списке свойств, списке родителей и т.д. Но и здесь нет необходимости в метаклассе. Достаточно разработать специальный библиотечный класс E_CLASS, экземпляры которого представляют классы и их свойства. При создании такого экземпляра необходимо передать в качестве параметра соответствующий класс C и далее использовать этот экземпляр для получения информации о классе C, обращаясь к соответствующим компонентам E_CLASS.

В данной книге не используется самостоятельная концепция метакласса. Присутствие метаклассов в том или ином языке или среде разработки не оправдывает смешение понятий моделей и их экземпляров - классов и объектов.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Устранение неполадок

Из книги Компьютер + мобильник: эффективное взаимодействие автора Гольцман Виктор Иосифович

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


R.8.1.1 Устранение неоднозначности

Из книги Справочное руководство по C++ автора Страустрап Бьярн

R.8.1.1 Устранение неоднозначности Неоднозначность, отмеченная в §R.6.8, которая возникает из-за сходства между приведением, заданным в функциональном стиле, и описанием, может также появиться в контексте описания. В этом контексте она проявляется как сходство между


Устранение чересстрочной развертки

Из книги Photoshop. Мультимедийный курс автора Мединов Олег

Устранение чересстрочной развертки Иногда приходится обрабатывать изображения, захваченные из видеофильма, ролика или мультфильма. Особенность кадра видео в том, что за один кадр передаются не все строки, из которых состоит изображение, а только четные или нечетные (это


VoIP: наведение мостов между традиционной и сетевой телефонией

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

VoIP: наведение мостов между традиционной и сетевой телефонией Хотя передача голоса по IP-протоколу (Voice over IP, VoIP) часто рассматривается как своего рода бесплатная междугородняя телефонная связь, настоящая ценность VoIP в том, что с его помощью голос становится всего лишь


От традиционной архитектуры к архитектуре убеждения

Из книги Добавьте в корзину. Ключевые принципы повышения конверсии веб-сайтов автора Айзенберг Джеффри

От традиционной архитектуры к архитектуре убеждения Лоррейн Джонстон в своей книге Learning from Traditional Architects пишет: В исторических хрониках архитекторами называли мастеров, сооружавших оригинальные постройки… В течение XVIII и XIX веков их роль изменилась, архитекторы уже не


Устранение мерцания

Из книги Программирование КПК и смартфонов на .NET Compact Framework автора Климов Александр П.

Устранение мерцания Несмотря на то что мы проделали уже очень большую работу, наша программа по-прежнему не лишена недостатков. При запуске программы изображения постоянно мерцают, раздражая пользователя. Это связано с перерисовкой экрана через заданные интервалы


6.3. Переход к традиционной учетной записи root

Из книги Ubuntu 10. Краткое руководство пользователя автора Колисниченко Д. Н.

6.3. Переход к традиционной учетной записи root Несмотря на то, что в дистрибутиве Ubuntu традиционная учетная запись root отключена, возможность восстановить ее имеется. После чего режим ее использования будет таким же, как и в прочих дистрибутивах, — вы сможете заходить в


Устранение негатива

Из книги Социальные сети [Источники новых клиентов для бизнеса] автора Парабеллум Андрей Алексеевич

Устранение негатива Личное общение, как известно, устраняет негатив. Однако социальные сети дают возможность безнаказанно говорить все, что думаешь И очень часто в таких соцсетях люди выплескивают весь накопившийся негатив Запомните: если хорошее о вас могут написать в


Устранение затора

Из книги Операционная система UNIX автора Робачевский Андрей М.

Устранение затора Переполнение, или затор, может возникнуть в сети по многим причинам. Например, если данные поступают к шлюзу по высокоскоростному каналу и должны быть переданы в низкоскоростной канал. Или данные нескольких каналов мультиплексируются в один канал,


3.1. Ограничения и проблемы традиционной графологии

Из книги Графология XXI века автора Щеголев Илья Владимирович

3.1. Ограничения и проблемы традиционной графологии Возражения против графологии В свое время Роберт Саудек в своей работе «Научная графология» (Wissenschaftliche Graphologie) сформулировал шесть основных возражений, обычно выдвигаемых против графологического анализа. Они во многом


Проблемы традиционной графологии

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

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


Устранение неполадок

Из книги Цифровая фотография. Трюки и эффекты автора Гурский Юрий Анатольевич

Устранение неполадок С помощью данного механизма можно решать и устранять практически любые неполадки и сбои в работе аппаратных или программных средств, которые установлены и используются на компьютере. При этом все сбои и неполадки разделены на пять категорий:?


17.11. Устранение JPEG-дефектов

Из книги автора

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