Объектная система Common Lisp
-
Объектная система Common Lisp (CLOS)
- CLOS — это средство объектно-ориентированного программирования в ANSI Common Lisp
- CLOS отличается от ООП в статичных языках, таких как C++ или Java
- Вдохновлена более ранними объектными системами Lisp, такими как MIT Flavors и CommonLoops
-
Основные строительные блоки CLOS
- Методы, классы, экземпляры и универсальные функции
- Макросы для определения: defclass, defmethod и defgeneric
- Экземпляры создаются с помощью make-instance
- Классы могут иметь суперклассы, слоты и метакласс
- Слоты могут быть распределены по классу или экземпляру
- Методы не «принадлежат» классам, определяются отдельно
-
Особенности диспетчеризации
- CLOS — многопользовательская диспетчерская система
- Методы могут быть специализированы на любом или всех аргументах
- Методы не имеют специального доступа к слотам классов
- Методы сгруппированы в общие функции
- Диспетчеризация работает во время выполнения
-
Инкапсуляция и доступ к слотам
- CLOS не обеспечивает принудительную инкапсуляцию
- Доступ к слотам через slot-value или методы доступа
- Программисты используют package для определения экспортируемых функций
-
Методы и комбинации методов
- Существуют :before, :after и :around методы
- Можно определять новые комбинации методов
- CLOS допускает множественное наследование
-
Динамичность и изменения
- CLOS поддерживает изменение определений классов и методов во время выполнения
- Проблема круг-эллипс легко решается
-
Протокол метаобъектирования (MOP)
- MOP определяет стандартный интерфейс для реализации CLOS
- Позволяет определять новые метаклассы и изменять поведение CLOS
- MOP предопределяет аспектно-ориентированное программирование
-
Влияние старых объектных систем
- Flavors и CommonLoops повлияли на разработку CLOS
- Flavors добавила множественное наследование и миксины
- CommonLoops был реализован для Common Lisp
-
CLOS на других языках
- CLOS используется в различных реализациях Lisp и других языках
- Примеры: COS, Dylan, Dynace, EIEIO, OSHIBKI, ILOS, Meroon, Стрелец, ScmObj, STklos, VCLOS, Крошечные КЛОЗЕТЫ, Классы S4
-
Стили и форматирование
- Использование различных шрифтов и переносов слов
- Применение различных стилей для цитат и идентификаторов
- Настройка цвета и фона для различных элементов
-
Идентификаторы и значки
- Идентификаторы для различных типов блокировок
- Использование значков для обозначения различных типов блокировок
-
Библиографическое описание и ссылки
- Настройка шрифта и веса для ссылок
- Использование различных стилей для библиографического описания
-
Рекомендации и литература
- Ссылки на различные источники и книги по CLOS
- Примеры использования CLOS в различных диалектах Lisp
- Рекомендации по использованию и изучению CLOS