В настоящее время я использую язык, который абсолютно не поддерживает объектно-ориентированные конструкции. Единственное, что мне доступно, это локальные / глобальные переменные, замыкания, функции первого класса и реляционные массивы (карты).
Я хочу написать набор файлов / функций, чтобы я мог создавать классы, которые имеют 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
).
Но как я могу реализовать динамическую диспетчеризацию и истинные подклассы?