CLOS

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

CLOS (англ. Common Lisp Object System — «объектная система Common Lisp’а») — система объектно-ориентированного программирования, являющаяся частью Common Lisp — стандарта языка Лисп. Кроме того, её встраивают в другие диалекты, такие как EuLisp или Emacs Lisp[1]. Вначале предложенная как дополнение, CLOS была принята в качестве части стандарта ANSI CommonLisp.

CLOS имеет следующие особенности :

  • Множественная диспетчеризация (то есть вызываемый метод определяется всеми аргументами, а не только первым), или «мультиметоды».
  • Поэтому методы не определяются внутри классов. Они концептуально группируются в «обобщённые функции».
  • CLOS не обеспечивает сокрытия. Сокрытие обеспечивается другой частью Common Lisp — пакетами.
  • Наследование может приводить к тому, что методы суперклассов комбинируются различными способами по выбору программиста, а не только простым переопределением.
  • CLOS является динамическим, то есть не только содержимое, но и структура объектов может меняться во время работы программы. CLOS поддерживает изменение структуры класса на лету (даже если экземпляры данного класса уже существуют), равно как и смену класса данного экземпляра с помощью метода CHANGE-CLASS.
  • Множественное наследование

Большинство реализаций Common Lisp поддерживают метаобъектный протокол, описанный в книге «The Art of the Metaobject Protocol »[2], но не включенный в стандарт.

[править] Примечания

  1. «CLOS это стандарт. Многие поставщики предлагают CLOS. CLOS (или его части) используется для добавления объектно-ориентированных возможностей в другие диалекты Лиспа, такие как EuLisp или Emacs Lisp.» стр. 110 Вейча
  2. Часть книги, непосредственно описывающая MetaObject Protocol
  1. «История и описание CLOS», Джим Вейч. Страницы 107—158 книги Handbook of Programming Languages, Volume IV: Functional and Logic Programming Languages, под ред. Питера Салюса. 1998 (1st edition), Macmillian Technical Publishing; ISBN 1-57870-011-6
Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Участие
Печать/экспорт
Инструменты
На других языках