ОО концепция

Группа функций (переменных, символов …), с помощью которых реализуется “объектно-ориентированное расширение” (обращаю внимание, что автор системы старается избегать термина ООП, то есть объектно-ориентированного программирования или проектирования как это интерпретировал Гради Буч?) - *Class class dm rel var var: new type isa method meth send try object extend super extra with This can dep
Некоторые уже были акцентированы: new - Symbol Function, can и ООП, *Class и class и object.
Теперь еще и таблица связей между собой.
https://picolisp.tiddlyhost.com/#Object%20Orientation
И нескоько принципиальных аспектов как цитата из документации - PicoLisp реализует как объекты, так и классы с помощью символов. Локальные данные объекта хранятся в списке свойств символа, в то время как код (методы) и ссылки на суперклассы хранятся в VAL символа (инкапсуляция) … Фактически, нет формальной разницы между объектами и классами (за исключением того, что объекты обычно являются анонимными символами, содержащими в основном локальные данные, в то время как классы называются внутренними символами с акцентом на определения методов). В любое время классу могут быть назначены его собственные локальные данные (переменные класса), и любой объект может получить индивидуальные определения методов в дополнение к (или переопределяя) определения, унаследованные от его (супер)классов … PicoLisp поддерживает множественное наследование. VAL каждого объекта — это (возможно, пустой) список ассоциаций символов сообщений и тел методов, объединенный со списком классов. Когда сообщение отправляется объекту, оно ищется в собственном списке методов объекта, а затем (с помощью поиска в глубину слева направо) в дереве его классов и суперклассов. Выполняется первый найденный метод, и поиск останавливается. Поиск может быть явно продолжен с помощью функций extra и super … Таким образом, какой метод фактически выполняется при отправке сообщения объекту, зависит от классов, с которыми объект в данный момент связан (полиморфизм). Поскольку поиск метода полностью динамический (позднее связывание), тип объекта (т. е. его классы и определения методов) можно изменить даже во время выполнения! … Во время выполнения тела метода глобальная переменная This устанавливается на текущий объект, что позволяет использовать сокращенные функции свойств \=:, : и ::.
Subscribe to my newsletter
Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Sergey Shishkin
Sergey Shishkin
Всегда чему-то учусь!