Метакласс

Поделись знанием:
Перейти к: навигация, поиск

Метакласс (англ. Metaclass) — в объектно-ориентированном программировании это класс, экземпляры которого в свою очередь являются классами[1][2].





Поддержка языками программирования

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

Среди языков, поддерживающих метаклассы:

Кроме того, существует целый ряд узкоспециализированных, особенно так называемых «академических» языков программирования, поддерживающих и исследующих концепцию метаклассов[4].

Особняком стоит Java, где также есть единственный метакласс — Class (описывает классы), который располагается в библиотеке java.lang. Однако, развитой концепции работы с метаклассами Java не предоставляет.

Поддержка платформами

Метаклассы могут существовать не только как сущность языка программирования, но и как сущность многоязыковой платформы. Наиболее явно метаклассы выражены в IBM System Object Model. Архитекторы SOM учитывали положительные стороны CLOS и решили один из её недостатков, несовместимость метаклассов, уникальным на то время способом. Несовместимость метаклассов — это ситуация, когда метакласс подкласса не является подклассом метакласса. В CLOS это приводит к аварийному завершению. Ситуация может возникнуть, когда разные части системы разрабатываются разными командами, и структура классов одной части системы изменилась, а в другой части системы эти изменения не синхронизированы. Одной из целей SOM являлось обеспечение максимальной совместимости на бинарном уровне между релизами. Инновационным решением, введённым в SOM 2.0 является создание анонимного подкласса нескольких метаклассов в случае, если ни один из метаклассов класса не является подклассом для остальных. В CLOS и SOM 1.0 указание метакласса является требованием. В SOM 2.0 указание метакласса является пожеланием, а реальный метакласс может быть создан во время исполнения, наследуясь от нескольких родителей: от желаемого метакласса, а также от метаклассов каждого надкласса.

См. также

Напишите отзыв о статье "Метакласс"

Примечания

  1. Мейер, Бертран «[www.intuit.ru/department/se/oopbases/7/ Основы объектно-ориентированного программирования]»
  2. Wolfgang Klas, Michael Schrefl Metaclasses and Their Application. Data Model Tailoring and Database Integration. — Berlin; Heidelberg; New York; Barcelona; Budapest; Hong Kong; London; Milan; Paris; Tokyo : Springer, 1995 (Lecture notes in computer science; Vol. 943) ISBN 3-540-60063-9
  3. Ira R. Forman and Scott Danforth Putting Metaclasses to Work — 1999. ISBN 0-201-43305-2.
  4. Noury Bouraqad [csl.ensm-douai.fr/noury/uploads/1/nouryBouraqadi.Gpce03WorkshopOnRepls.pdf Efficient Support for Mixin-Based Inheritance Using Metaclasse].

Литература

  1. И. Ю. Баженова, «Delphi 7 самоучитель программиста», «Москва» 2003

Ссылки

  • [www.ibm.com/developerworks/ru/library/l-pymeta/ Программирование метаклассов в Python (ibm.com)]
  • [sapr.mgsu.ru/biblio/ex-syst/Glava7/Index6.htm LOOPS. Метаклассы ()]
  • [kufas.ru/programming_java48.htm Java. Метакласс]
  • [www.edm2.com/index.php/Scott_H._Danforth Публикации Scott H. Danforth и Ira R. Forman, архитекторов метаклассов в System Object Model] (англ.)


Отрывок, характеризующий Метакласс

Но чистая, полная печаль так же невозможна, как чистая и полная радость. Княжна Марья, по своему положению одной независимой хозяйки своей судьбы, опекунши и воспитательницы племянника, первая была вызвана жизнью из того мира печали, в котором она жила первые две недели. Она получила письма от родных, на которые надо было отвечать; комната, в которую поместили Николеньку, была сыра, и он стал кашлять. Алпатыч приехал в Ярославль с отчетами о делах и с предложениями и советами переехать в Москву в Вздвиженский дом, который остался цел и требовал только небольших починок. Жизнь не останавливалась, и надо было жить. Как ни тяжело было княжне Марье выйти из того мира уединенного созерцания, в котором она жила до сих пор, как ни жалко и как будто совестно было покинуть Наташу одну, – заботы жизни требовали ее участия, и она невольно отдалась им. Она поверяла счеты с Алпатычем, советовалась с Десалем о племяннике и делала распоряжения и приготовления для своего переезда в Москву.
Наташа оставалась одна и с тех пор, как княжна Марья стала заниматься приготовлениями к отъезду, избегала и ее.
Княжна Марья предложила графине отпустить с собой Наташу в Москву, и мать и отец радостно согласились на это предложение, с каждым днем замечая упадок физических сил дочери и полагая для нее полезным и перемену места, и помощь московских врачей.
– Я никуда не поеду, – отвечала Наташа, когда ей сделали это предложение, – только, пожалуйста, оставьте меня, – сказала она и выбежала из комнаты, с трудом удерживая слезы не столько горя, сколько досады и озлобления.
После того как она почувствовала себя покинутой княжной Марьей и одинокой в своем горе, Наташа большую часть времени, одна в своей комнате, сидела с ногами в углу дивана, и, что нибудь разрывая или переминая своими тонкими, напряженными пальцами, упорным, неподвижным взглядом смотрела на то, на чем останавливались глаза. Уединение это изнуряло, мучило ее; но оно было для нее необходимо. Как только кто нибудь входил к ней, она быстро вставала, изменяла положение и выражение взгляда и бралась за книгу или шитье, очевидно с нетерпением ожидая ухода того, кто помешал ей.
Ей все казалось, что она вот вот сейчас поймет, проникнет то, на что с страшным, непосильным ей вопросом устремлен был ее душевный взгляд.
В конце декабря, в черном шерстяном платье, с небрежно связанной пучком косой, худая и бледная, Наташа сидела с ногами в углу дивана, напряженно комкая и распуская концы пояса, и смотрела на угол двери.
Она смотрела туда, куда ушел он, на ту сторону жизни. И та сторона жизни, о которой она прежде никогда не думала, которая прежде ей казалась такою далекою, невероятною, теперь была ей ближе и роднее, понятнее, чем эта сторона жизни, в которой все было или пустота и разрушение, или страдание и оскорбление.
Она смотрела туда, где она знала, что был он; но она не могла его видеть иначе, как таким, каким он был здесь. Она видела его опять таким же, каким он был в Мытищах, у Троицы, в Ярославле.
Она видела его лицо, слышала его голос и повторяла его слова и свои слова, сказанные ему, и иногда придумывала за себя и за него новые слова, которые тогда могли бы быть сказаны.
Вот он лежит на кресле в своей бархатной шубке, облокотив голову на худую, бледную руку. Грудь его страшно низка и плечи подняты. Губы твердо сжаты, глаза блестят, и на бледном лбу вспрыгивает и исчезает морщина. Одна нога его чуть заметно быстро дрожит. Наташа знает, что он борется с мучительной болью. «Что такое эта боль? Зачем боль? Что он чувствует? Как у него болит!» – думает Наташа. Он заметил ее вниманье, поднял глаза и, не улыбаясь, стал говорить.
«Одно ужасно, – сказал он, – это связать себя навеки с страдающим человеком. Это вечное мученье». И он испытующим взглядом – Наташа видела теперь этот взгляд – посмотрел на нее. Наташа, как и всегда, ответила тогда прежде, чем успела подумать о том, что она отвечает; она сказала: «Это не может так продолжаться, этого не будет, вы будете здоровы – совсем».
Она теперь сначала видела его и переживала теперь все то, что она чувствовала тогда. Она вспомнила продолжительный, грустный, строгий взгляд его при этих словах и поняла значение упрека и отчаяния этого продолжительного взгляда.