Общая объектная система Lisp

Объектная система Common Lisp Объектная система Common Lisp (CLOS) CLOS — это средство объектно-ориентированного программирования в ANSI Common Lisp   CLOS […]

Объектная система 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  

Полный текст статьи:

Общая объектная система Lisp

Оставьте комментарий

Прокрутить вверх