@Sasha_88

Что может дать изменение иерархии классов во время выполнения?

Я сейчас изучаю чем отличается ООП в статически типизированных языках от ООП в динамически типизированных. Вот в Objective C (в книге читал, сам не программирую в нем) упоминалось, что из-за динамической природы языка, возможно иметь некоторые интересные трюки с объектами и классами. Упоминалось об изменении иерархии классов во время выполнения. Правда без примера, зато был другой пример. В этом языке объекты устроены с виду просто. Там в каждом есть указатель isa. Это простой указатель на структуру Class, которая содержит информацию такую, как наличие методов у объектов, список переменных членов данных и прочее. И к примеру есть масса системных функций для изменения этих данных. Например можно подсунуть объекту другой указатель на другой класс и вызывать другие методы, первоначально отсутствующие в этом объекте. И про изменение иерархии классов. Зачем это можно было бы использовать? Да и такие языки как Python и Ruby заявлены как имеющие размытую границу между временем компиляции и временем выполнения. То есть там тоже можно много чего потом с объектами делать. Добавлять и удалять методы, атрибуты. А поменять иерархию можно? Зачем нужна такая гибкость?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Упоминалось об изменении иерархии классов во время выполнения.

Постарайтесь найти пример. Что имелось в виду. Создание новой пары класс+объект? Или изменение
интерфейса объекта? Информатика и вычислительная техника за 20й век насоздавала столько экзотических
языков и парадигм что на любой каприз можно что-нибудь да найти. Создавались даже такие языки
цель которых - максимально усложнить (Malbolge) разработку. Поэтому если "просто так менять иерархию" - то
можно уподобляться комсомольцам которые сначала создают проблемы а потом их героически решают.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы