Цитата:Как много было вопросов от пользователей, связанных с тонкостями реализации ООП, за последний год на итлэнде?
Хм. Да уж.
Да, именно декларатором типа "класс правильный Документ_РКО {}".
Если смешать правильные и неправильные, тогда при вызове из правильного будет использоваться CProxyClass, а при вызове из обычного - CComponentClass. Это потенциальный источник проблем, но позволит переводить классы в рабочем порядке.
Честно говорю, полностью список проблем еще не обдумывал - поэтому есть предложение применять декларатор ко всей конкретной иерархии сразу.
Цитата:Как мне быстро определить, не глядя в реализацию, что вот этот класс я могу
Саня, ну, конечно, никак. Ну это не вопрос, а подколы какие-то.
А по-серьезному, нужно посмотреть:
1. Для каждого суперкласса: какие методы, не входящие в декларацию интерфейса, вызываются?
Это сделать просто. Это могут быть методы подкласса - тогда их просто нужно внести в интерфейс.
Это могут быть методы других суперклассов - тогда это нужно переписать на доступ через подкласс.
2. Сделать контроль доступа к свойствам подклассов и других суперов.
3. Сделать контроль определения методов подкласса со множественными определениями в суперклассах.
Т.е. сделать нормальный рефакторинг класса, и все.
Либо не переводить старые классы, а начинать переводить с новых.
И юнит-тестирование должно помочь. Но тут меня совсем щас в утописты запишут.