S>>>Если это скриптовый язык с динамической типизацией, который позволяет в массив складывать объекты разных типов
Z>>Да, в массив можно сложить объекты любых типов.
S>Этот язык позволяет пройтись по такому массиву и вызвать для каждого элемента одноимённые методы?
Да, это возможно.
По массиву можно прийтись и вызвать одинаковый метод для разных объектов, даже если это объекты разного типа (разных классов).
S>Есть такая идиома pimpl S>Вы можете сделать внешний класс (обёртка), который хранит в своём свойстве экземпляр другого класса (реализация). S>Делаете разные классы реализаций, которые друг с другом не связаны. Но чтобы они все имели схожие наборы методов. S>Из метода обёртки можно будет вызывать методы реализаций. S>По сути это обычная инкапсуляция. Зато не требует наследования.
Спасибо, идею понял. Попробую.
S>Но если у вас уже чётко прописана иерархия классов, на которую вы повлиять не можете — то думаю это вам не поможет)
Иерархия классов — это моя разработка. Я сам создавал все классы, начиная от базового.
В базовом(-ых) классе(-ах) задан некий универсальный алгоритм, который вызывает абстрактные (виртуальные) функции.
Эти "абстрактные" функции должны быть реализованы реальными виртуальными функциями в классах-наследниках. На C#, например, никакой проблемы с этим не было.
А вот на моем "новом" скриптовом языке я столкнулся с тем, что это невозможно сделать.
S>Кстати если из метода класса реализации нужен метод внешней обёртки, то можно попробовать передать обёртку (this) в метод реализации в качестве параметра.