Home - ZhenyaKh/object-model GitHub Wiki
Объектная модель
Проектная документация
Сведения
Поле | Значение |
---|---|
Авторы | Хасина Евгения, Петренко Евгений |
Язык | Clojure |
Требования
Определите для языка Clojure объектную модель.
- Обеспечите поддержку следующих элементов:
- класс;
- атрибут (свойство, слот);
- одиночное наследование классов;
- множественное наследование классов;
- диспетчеризацию обработки сообщений относительно одного аргумента (динамический полиморфизм).
- Определите соответствующие функции и/или макросы для работы с перечисленными выше элементами.
Дополнительные требования
Определите поддержку следующих элементов:
- диспетчеризацию обработки сообщений в иерархии с множественным наследованием (классов или примесей); реализуйте аналог call-next-method из CLOS (с фиксированной стратегией диспетчеризации по одному параметру);
- включите вспомогательные методы (before, after) в механизм диспетчеризации;
- обобщенные функции (диспетчеризация по нескольким параметрам);
- поддержка изменяемого состояния на основе транзакционной памяти (можно испольовать встроенную в Clojure поддержку STM); обеспечьте реализацию принципа Command-Query Separation на уровне декларации классов (и/или других элементов объектной модели).
- статическая типизация [не сделана].