Реализация наследования интерфейса с нуля? - PullRequest
0 голосов
/ 17 октября 2019

В настоящее время я использую язык, который абсолютно не поддерживает объектно-ориентированные конструкции. Единственное, что мне доступно, это локальные / глобальные переменные, замыкания, функции первого класса и реляционные массивы (карты).

Я хочу написать набор файлов / функций, чтобы я мог создавать классы, которые имеют public, private, protected static и нестатические поля. Предпочтительно с синтаксисом, который не слишком громоздкий.

Я создал функцию, которая создает новый класс

function new_class(sub_class)
    public_static = { }    // new map
    private_static = { }
    protected_static = { }
    instances = { }        // Map which checks if objects belong to this class.

    // Default constructor for this class.
    public_static.new = function()
        public = { }       // create a new 'object'
        private = { }
        protected = { }
        instances[public] = true // This class made this object.
        return public, private, protected

    public_static.object_is_from_my_class(obj)
        return instances[obj] == true // check if we created it

    return public_static, private_static, protected_static

Используя замыкания, я могу защитить все карты. Я даже могу определить, был ли объект создан специально из этой функции, поэтому я могу теперь проверять классы (является ли этот объект Dog? Это Cat? Animal).

Но как я могу реализовать динамическую диспетчеризацию и истинные подклассы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...