Сообщение от Dmitry A. Soshnikov
|
Почему это? С интерфейсами пример не совсем схожий. В динамическом языке Вы подключаете плагин и он расширяет существующие объекты.
|
Подключение плагина - это этап проектирования, на котором программист ( а не программма, которой на этом этапе еще не существует ) может делать все, что угодно и в java (статическое ООП) . Поэтому это само по себе не является подходящим примером.
Цитата:
|
И даже на этапе проектирования - это уже динамика, которой нет ни в Java, ни в Cи, ни в любом статическом языке. Вы дописываете свойства/методы в существующие объекты/классы/прототипы - разве это то же самое, как в Java?
|
Не следует говорить о какой-то динамике на стадии проектирования , на которой программист может придумать на любом языке все, что угодно. Уже готовая программа должна уметь САМА изменять свои Классы.
Я не спорю, что в java не добавить методы, но реализовать, что то же , что и "изменить", абстрактные - это сплошь и рядом. Т.е. с практической точки зрения отличия мало. Кроме того классическое наследование позволяет использовать Полиморфизм, что тоже есть изменение методов, но это все заложено статически готовой программой, за исключением ДОБАВЛЕНИЯ метода, но тут вот Вы не показываете - где существенное отличие , т.к. пока я вижу только создание
новых слов для общения практически
с тем же телом метода (
"внутри тел - всё тот же стандартный find с нужным фильтром")
Или еще вот так поясню свое понимание :
Динамика / статика должно пониматься по отношению к структуре Классов, заложенной созданной и более не изменяемой программы. Если в течении жизни такой программы в зависимости от внешних условий эта структура Классов меняется (от одной статики к другой статике ), то это будет динамичной структурой. Если же при уже заложенной, но неизменной стуктуре наблюдаем проявления ее гибкости по отношению к внешним условиям , то это имено гибкость этой структуры, но не ее измение.
Критерии отличия : возможность добавления(удаления, изменения) новых членов уже существующим классам, возможность добавления новых классов (удаления старых) во время жизни неизменяемого кода программы .
Вы показали пример с возможностью добавления новых членов, но как : просто добавлялись имена методов для обращения к тому же телу. Я не спорю, что это динамика, но практически это малоэффектный пример для действительной демонстрации динамики Классовой структуры, который имеет аналоги и в ООП программе со статичной структурой Классов.