Вопрос знатокам ООП. - страница 42

 
Artyom Trishkin:
Четкая классификация. Если видим у множества объектов одинаковые свойства, то логично эти свойства описать в одном родительском объекте.
Если дочерний объект переопределяет свойство родительского с одинаковым названием, то это свойство должно быть виртуальным.

Как быть, если объект наследует свойства и методы разных классов?

Если мы имеем дело с растущей и динамично перестраивающейся структурой данных (База Знаний), нам нужно использовать "наследственный материал" уже готовых объектов для создания новых. При этом, объекты будут синтезироваться множественным наследованием, ухватывающим лишний наследственный материал. И потому, не будут нормально функционировать. То есть, мы придем к вырождению объектов, как только начнется множественное наследование. Это проблема...

 
Реter Konow:

Как быть, если объект наследует свойства и методы разных классов?

Если мы имеем дело с растущей и динамично перестраивающейся структурой данных (База Знаний), нам нужно использовать "наследственный материал" уже готовых объектов для создания новых. При этом, объекты будут синтезироваться множественным наследованием, ухватывающим лишний наследственный материал. И потому, не будут нормально функционировать. То есть, мы придем к вырождению объектов, как только начнется множественное наследование. Это проблема...

В новом объекте не используйте свойства "левых" родителей. Хотя я вижу некое непонимание у вас. Зачем "рождать" объект от того, чьи свойства не нужны?
 
fxsaber:

Соотетствующий инструментарий выложен. Он не нужен никому, кроме автора.

А еще есть необходимость в таком. Но он тоже никому не будет нужен.

Такая же ситуация с КБ, статьями и т.д.


Разработчики ввели кастомные символы, сервисы, тики, кеши, пипсы,... Удивительно, что они это сделали, т.к. это если и нужно, то единицам.

Вот возьмем новый пипсовый режим работы тестера. Кому он нужен? -Да никому фактически! Режим родился, как видение существенной алгоритмической оптимизации Тестера со стороны разработчиков. Кто понял его полезность? -Никто! И так во всем.

Сейчас Тестер существенно модифицируют. Так вот эти модификации нафиг никому не сдались. Ну есть гики, которые оценят. В текущем виде MT5-Тестер круче всех конкурентов. Но его по какой-то причине хотят сделать еще круче. При этом никто не в состоянии оценить его текущие фичи, не говоряу уже о будущих. Разработчики на несколько голов выше своих пользователей. И явно мотивацией изменений в Тестере является не монетизация (ее просто быть не может, если никто не понимает), а внутреннее желание сделать что-то беспрецедентное.

+
 
Artyom Trishkin:
В новом объекте не используйте свойства "левых" родителей. Хотя я вижу некое непонимание у вас. Зачем "рождать" объект от того, чьи свойства не нужны?

Нужны, но не полностью. Новый объект использует 3 свойства класса А, 5 свойств класса В, и 3 метода, еще трех классов. 

Как ему быть с остальными свойствами из этих классов? Как ограничить его от них?

 
Реter Konow:

Нужны, но не полностью. Новый объект использует 3 свойства класса А, 5 свойств класса В, и 3 метода, еще трех классов. 

Как ему быть с остальными свойствами из этих классов? Как ограничить его от них?

3 свойства класса А упаковать в объект. От него наследоваться. А можно не наследоваться, а объект с тремя свойствами сделать свойством требуемого объекта.
Есть кровеносная система - объект с множеством объектов. В составе кровеносной системы есть объект-сердце.
Для нового объекта, если в новом объекте нужно сердце, то наследоваться от объекта-сердце, а не от кровеносной системы.
 
Artyom Trishkin:
Есть кровеносная система - объект с множеством объектов. В составе кровеносной системы есть объект-сердце.
Для нового объекта, если в новом объекте нужно сердце, то наследоваться от объекта-сердце, а не от кровеносной системы.

Если в новом объекте нужно сердце, то не надо от сердца наследоваться. Сердце надо сделать частью нового объекта, как член.

Наследоваться надо если новый объект ЯВЛЯЕТСЯ объектом предком. И использовать включение если новый объект СОДЕРЖИТ другой.

 
Artyom Trishkin:
3 свойства класса А упаковать в объект. От него наследоваться. А можно не наследоваться, а объект с тремя свойствами сделать свойством требуемого объекта.

Три свойства объединить в объект и сделать свойством нового объекта? Нужно подумать...

Но, наследование через множество длинных цепочек порождает подобные проблемы на каждом шагу. Чем длиннее и разнообразнее цепочки наследования, тем больше "смешения" свойств и методов получат последние поколения объектов, и тем сложнее будет вычленить их индивидуальную цепочку к базовому объекту.

Если не наследовать - не будет доступа к базовому объекту. Если наследовать - множественное "родительство" объектов мешает отследить их прямую цепочку к базовому объекту.

Все сложнее вычленять их собственные свойства и методы из других классов.

 
Реter Konow:

Три свойства объединить в объект и сделать свойством нового объекта? Нужно подумать...

Но, наследование через множество длинных цепочек порождает подобные проблемы на каждом шагу. Чем длиннее и разнообразнее цепочки наследования, тем больше "смешения" свойств и методов получат последние поколения объектов, и тем сложнее будет вычленить их индивидуальную цепочку к базовому объекту.

Если не наследовать - не будет доступа к базовому объекту. Если наследовать - множественное "родительство" объектов мешает отследить их прямую цепочку к базовому объекту.

Все сложнее вычленять их собственные свойства и методы из других классов.

Петр, Вам очень рекомендую

https://en.wikipedia.org/wiki/Code_Complete

Code Complete - Wikipedia
Code Complete - Wikipedia
  • en.wikipedia.org
Code Complete
 
Andrey Barinov:

Если в новом объекте нужно сердце, то не надо от сердца наследоваться. Сердце надо сделать частью нового объекта, как член.

Наследоваться надо если новый объект ЯВЛЯЕТСЯ объектом предком. И использовать включение если новый объект СОДЕРЖИТ другой.

Ну не так выразился. Дураку же понятно что я имел в виду. Если нужно модифицированное сердце со свойствами родительского.
 
Реter Konow:

Три свойства объединить в объект и сделать свойством нового объекта? Нужно подумать...

Но, наследование через множество длинных цепочек порождает подобные проблемы на каждом шагу. Чем длиннее и разнообразнее цепочки наследования, тем больше "смешения" свойств и методов получат последние поколения объектов, и тем сложнее будет вычленить их индивидуальную цепочку к базовому объекту.

Если не наследовать - не будет доступа к базовому объекту. Если наследовать - множественное "родительство" объектов мешает отследить их прямую цепочку к базовому объекту.

Все сложнее вычленять их собственные свойства и методы из других классов.

Пётр. Потому и говорю - не нужно бездумное наследование. Чётко разделение и классификация.