Здравствуйте, Sinclair, Вы писали:
S>Основная проблема существующего ООП — это статичность объектной модели.
Очень правильно!
S>Динамический подход (ака рефакторинг) расширяет эту технику, предоставляя нам удобную возможность изменить модель на произвольно взятом уровне. Например, разделить монолитный класс на два — предка и наследника, чтобы дать возможность отнаследоваться "повыше" в дереве. Или объявить часть класса интерфейсом, вынести его наружу... Все это с сохранением корректности уже написанного кода, т.е. если уж мы вынесли что-то в интерфейс, то тот код, который раньше пользовался ссылкой на наш класс, должен (если подмножество использованных методов соответствует) теперь брать ссылку на интерфейс. И т.п.
А можно поподробнее? Как можно "изменить модель на произвольно взятом уровне" с "с сохранением корректности уже написанного кода"? IMHO в общем случае это невозможно, так как обычно отсутствует возможность оперативно и с минимальными затратами сил корректировать уже написанный код. Речь идет о незначительных изменениях модели или о продвинутых технологиях создания кода? Поясните, что имелось ввиду, плиз. Интересует чисто техническая сторона дела.