Вот нравятца мне такие посиделки, как в старые добрые времена.
fez писал(а) 17. Марта 2008 :: 13:30:ООП, реализованного в с++, ты хотел сказать?
И то дело.
Надо договориться, что есть стандартное понимание ООП.
У Буча есть про полиморфизм свойств, как думаешь?
Цитата: Цитата:Ну, с точки зрения ООП - она не правильная, ибо тут нарушения инкапсуляции на каждом шагу.
Наличие или отсутствие у базового класса наследника не должно влиять на инвариантное поведение самого базового класса - а оно влияет, ибо можно переопределить "полиморфное" свойство, и сделать его, к примеру, другим типом - и базовый класс получит проблемы при работе с этим свойством.
Нарушение инкапсуляции происходит не когда подчиненный класс что-то переопределил, а когда мы открыли наружу свойство, которое якобы должно было быть инкапсулированным. То есть это нифига не проблемы языка.
Боюсь, тут не все так просто.
Если суперкласс даже объявит свое свойство приватным, а подкласс - переопределит публичным, боюсь сейчас суперкласс все равно получит публичное свойство подкласса.
Ну да ладно.
У меня есть предложение: а вот найди где-нибудь подтверждение обоснованности доступа из суперкласса в суперкласс, связанных только общим подклассом (в части публичных методов и свойств) и из суперкласса в подкласс (в части публичных "невиртуальных" методов и свойств) с точки зрения теории ООП.
Т.е. давай выясним не то, можно ли использовать эту схему - или нельзя. Можно - мы же используем.
А именно ответим на вопрос - как ложится такая схема на классическую теорию ООП.