Una pregunta para los expertos en POO. - página 42

 
Artyom Trishkin:
Clasificación clara. Si vemos que varios objetos tienen las mismas propiedades, es lógico describir estas propiedades en un objeto padre.
Si un objeto hijo anula una propiedad de un objeto padre con el mismo nombre, esta propiedad debe ser virtual.

¿Y si el objeto hereda propiedades y métodos de diferentes clases?

Si se trata de una estructura de datos (Base de Conocimientos) que crece y se reconstruye dinámicamente, es necesario utilizar el "material heredado" de los objetos ya preparados para crear otros nuevos. En este caso, los objetos serán sintetizados por herencia múltiple, recogiendo material heredado extra. Y por lo tanto, no funcionará correctamente. Es decir, llegaremos a objetos degenerados en cuanto se inicie la herencia múltiple. Ese es el problema...

 
Реter Konow:

¿Qué ocurre cuando un objeto hereda propiedades y métodos de diferentes clases?

Si se trata de una estructura de datos en crecimiento y que se reconstruye dinámicamente (Base de conocimientos), es necesario utilizar el "material heredado" de los objetos ya preparados para crear otros nuevos. En este caso, los objetos serán sintetizados por herencia múltiple, recogiendo material heredado extra. Y por lo tanto, no funcionará correctamente. Es decir, llegaremos a objetos degenerados en cuanto se inicie la herencia múltiple. Ese es el problema...

En un nuevo objeto, no utilices las propiedades de los padres "sobrantes". Sin embargo, veo que hay un malentendido en ti. ¿Por qué "dar a luz" a un objeto de alguien cuyas propiedades no son necesarias?
 
fxsaber:

La caja de herramientas correspondiente está dispuesta. Nadie lo necesita, excepto el autor.

Y también es necesario. Pero tampoco nadie lo necesitará.

La misma situación con KB, artículos, etc.


Los desarrolladores han introducido caracteres personalizados, servicios, ticks, cachés, pips,.... Me sorprende que lo hayan hecho, ya que son pocos, o ninguno, los que lo necesitan.

Tomemos el nuevo modo de pips del probador. ¿Quién lo necesita? -¡Nadie en realidad! Nació como una visión de una importante optimización algorítmica del probador por parte de sus desarrolladores. ¿Quién entendió su utilidad? -¡Nadie! Y así en todo.

Ahora el probador está siendo modificado de manera significativa. Pero estas modificaciones no le sirven a nadie. Bueno, hay frikis que lo apreciarán. En su forma actual, MT5-Tester es más fresco que todos sus competidores. Pero, por alguna razón, quieren hacerlo aún más genial. Nadie es capaz de evaluar sus características actuales, por no hablar de las futuras. Los desarrolladores están varias cabezas por encima de sus usuarios. Y está claro que la motivación de los cambios en el Probador no es la monetización (simplemente no puede serlo, si nadie lo entiende), sino un deseo interno de hacer algo inédito.

+
 
Artyom Trishkin:
En el nuevo objeto, no utilices las propiedades de los padres "sobrantes". Sin embargo, veo algún malentendido con usted. ¿Por qué "dar a luz" a un objeto cuyas propiedades no se necesitan?

Necesario, pero no del todo. El nuevo objeto utiliza 3 propiedades de la clase A, 5 propiedades de la clase B, y 3 métodos, de otras tres clases.

¿Qué debe hacer con el resto de las propiedades de estas clases? ¿Cómo restringirlo de ellos?

 
Реter Konow:

Necesario, pero no del todo. El nuevo objeto utiliza 3 propiedades de la clase A, 5 propiedades de la clase B, y 3 métodos, de otras tres clases.

¿Qué debe hacer con el resto de las propiedades de estas clases? ¿Cómo restringirlo de ellos?

Empaquetar 3 propiedades de la clase A en un objeto. Heredar de ella. O puede no heredar, y hacer que el objeto con tres propiedades sea una propiedad del objeto requerido.
Hay un sistema circulatorio - un objeto con múltiples objetos. Existe un objeto corazón como parte del sistema circulatorio.
Para un nuevo objeto, si se necesita un corazón en el nuevo objeto, entonces hereda del objeto corazón, no del sistema circulatorio.
 
Artyom Trishkin:
Hay un sistema circulatorio: un objeto con muchos objetos. Existe un objeto corazón como parte del sistema circulatorio.
Para un nuevo objeto, si se necesita un corazón en el nuevo objeto, entonces hereda del objeto corazón, no del sistema circulatorio.

Si un nuevo objeto necesita un corazón, no necesita heredar de un corazón. El corazón debe formar parte del nuevo objeto, como un miembro más.

Heredar si el nuevo objeto es un objeto antecesor. Y utilizar la inclusión si el nuevo objeto es CON el otro.

 
Artyom Trishkin:
Empaquetar 3 propiedades de la clase A en un objeto. Heredar de ella. O puede no heredar, sino hacer que un objeto con tres propiedades sea una propiedad del objeto requerido.

¿Tres propiedades para combinar en un objeto y hacer una propiedad de un nuevo objeto? Eso es algo para pensar...

Pero, la herencia a través de muchas cadenas largas genera problemas similares en cada paso. Cuanto más largas y diversas sean las cadenas de herencia, más "mezcla" de propiedades y métodos tendrán las últimas generaciones de objetos y más difícil será derivar su cadena individual al objeto base.

Si no se hereda - no habrá acceso al objeto base. Si se hereda, la "filiación" múltiple de los objetos impide la trazabilidad de su cadena directa al objeto base.

Cada vez es más difícil aislar sus propias propiedades y métodos de otras clases.

 
Реter Konow:

¿Tres propiedades para combinar en un objeto y hacer una propiedad de un nuevo objeto? Eso es algo para pensar...

Pero, la herencia a través de muchas cadenas largas genera problemas similares en cada paso. Cuanto más largas y diversas sean las cadenas de herencia, más "mezcla" de propiedades y métodos tendrán las últimas generaciones de objetos y más difícil será derivar su cadena individual al objeto base.

Si no se hereda - no habrá acceso al objeto base. Si se hereda, la "filiación" múltiple de los objetos impide la trazabilidad de su cadena directa al objeto base.

Cada vez es más difícil extraer sus propias propiedades y métodos de otras clases.

Peter, te recomiendo encarecidamente

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

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

Si el corazón es necesario en el nuevo objeto, no es necesario heredar del corazón. El corazón debe formar parte del nuevo objeto, como un miembro.

Hereda si el nuevo objeto ES el objeto antecesor. Y utiliza la inclusión si el nuevo objeto CONTIENE a otro.

No es eso lo que quería decir. Ya sabes lo que quiero decir. Si quieres un corazón modificado con las propiedades del padre.
 
Реter Konow:

¿Tres propiedades para combinar en un objeto y hacer una propiedad de un nuevo objeto? Eso es algo para pensar...

Pero, la herencia a través de muchas cadenas largas genera problemas similares en cada paso. Cuanto más largas y diversas sean las cadenas de herencia, más "mezcla" de propiedades y métodos tendrán las últimas generaciones de objetos y más difícil será derivar su cadena individual al objeto base.

Si no se hereda - no habrá acceso al objeto base. Si se hereda, la "filiación" múltiple de los objetos impide la trazabilidad de su cadena directa al objeto base.

Cada vez es más difícil aislar sus propias propiedades y métodos de otras clases.

Peter. Por eso digo que no hay que heredar sin sentido. Una clara división y clasificación.