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

 
Andrey Barinov:

Peter, recomiendo encarecidamente

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

Gracias. Intentaré conseguirlo y leerlo.
 
Artyom Trishkin:
Peter. Por eso digo que no es necesario heredar sin sentido. Separación y clasificación claras.

He aquí un ejemplo:

La categoría "Fruta" es el objeto base.

Clases - "Fruta" y "Verdura" son descendientes de la clase "Fruta".

La clase "Fruta" es el padre de las clases "Kiwi", "Mango", "Limón" y "Naranja".

Hay una nueva categoría "Cítricos".

Póngalo entre la clase "Fruta" y sus sucesores - Kiwi, Mango, Limón y Naranja.

"Citrus" es el padre del limón y la naranja.


A continuación, - cruzamos Mango y Limón y obtenemos - un objeto Lee-Mango.

El objeto contiene parcialmente propiedades cítricas y parcialmente propiedades no cítricas. Tiene DOS padres y esta Jerarquía no puede ser optimizada.

Así que tenemos una herencia múltiple del objeto "Lee-Mango" y un doble camino hacia el objeto base "Fruta": a través de la cadena de los cítricos y a través de la cadena de "Mango".

En estas cadenas, tenemos que obviar las propiedades innecesarias de los padres para conservar la personalidad de "Lee-Mango".

 

Peter, se llama: atornillarse a sí mismo - presentando dificultades insuperables. Hay que especificar la tarea y hacer clases para ella.

¿Por qué introducir una clase intermedia llamada "cítricos"? Tal vez el problema pueda resolverse simplemente añadiendo la propiedad "cítricos" a la lista dinámica.

 
Dmitry Fedoseev:

Peter, se llama: atornillarse a sí mismo - presentando dificultades insuperables. Hay que especificar la tarea y hacer clases para ella.

¿Por qué introducir una clase intermedia llamada "cítricos"? Tal vez el problema se pueda resolver simplemente añadiendo la propiedad "citrus" a la lista dinámica.

Quería escribir sobre las propiedades justo ahora.
La propiedad gustativa será la media de las propiedades de las dos frutas.
 

Y esto. Al fin y al cabo, la POO es una herramienta de programación, no de datos (cómo decirlo). La herramienta de datos es una base de datos.

Tres mesas. Una tabla tiene dos columnas: el id de la fruta y su nombre. El otro tiene dos columnas: el id de la propiedad y su nombre. La tercera tiene dos columnas: id de la fruta, id de la propiedad.

Como resultado, es posible añadir infinitamente nuevas propiedades, asignarlas a la fruta, y así obtener cualquier fruta nueva.

Los medios para resolver el problema deben ser adecuados a la tarea.

 
Dmitry Fedoseev:

Peter, se llama: atornillarse a sí mismo - presentando dificultades insuperables. Hay que especificar la tarea y hacer clases para ella.

¿Por qué introducir una clase intermedia llamada "cítricos"? Tal vez la tarea pueda resolverse simplemente añadiendo la propiedad "cítricos" a la lista dinámica.

Que así sea.

Pero, ¿qué pasa con el cruce de las propiedades de los dos objetos que genera un nuevo objeto? El nuevo objeto heredará parcialmente las propiedades de los otros dos objetos.

¿Cómo implementar su herencia "parcial" entre varios objetos (sus padres) y el objeto base?

 
Реter Konow:

Que así sea.

¿Pero qué pasa con el cruce de propiedades de dos objetos que generan un nuevo objeto? El nuevo objeto heredará parcialmente las propiedades de otros dos objetos.

¿Cómo implementar su herencia "parcial" de varios otros objetos?

Aplicando un algoritmo adecuado para resolver este problema concreto.

La POO es una herramienta de programación, no un medio para describir el mundo que nos rodea, por mucho que se corresponda desde algún punto de vista.

 
Dmitry Fedoseev:

Y esto. Al fin y al cabo, la POO es una herramienta de programación, no de datos (cómo decirlo). La herramienta de datos es una base de datos.

Tres mesas. Una tabla tiene dos columnas: el id de la fruta y su nombre. El otro tiene dos columnas: el id de la propiedad y su nombre. La tercera tiene dos columnas: id de la fruta, id de la propiedad.

Como resultado, es posible añadir infinitamente nuevas propiedades, asignarlas a la fruta, y así obtener cualquier fruta nueva.

Los medios para resolver el problema deben estar a la altura del mismo.

No se trata de las propiedades, sino de la herencia. Es decir, la distribución de propiedades y métodos entre los objetos.

Los nuevos objetos enlazarán las propiedades de los objetos anteriores en diferentes combinaciones, lo que aumentará la complejidad de sus cadenas con el objeto base.

 
Реter Konow:

No se trata de las propiedades, sino de la herencia. Es decir, la distribución de propiedades y métodos entre los objetos.

Los nuevos objetos enlazarán las propiedades de los objetos anteriores en diferentes combinaciones, lo que aumentará la complejidad de sus cadenas con el objeto base.

Los objetos en sí mismos no lo harán. Selecciona las propiedades de una fruta y las propiedades de otra fruta de la base de datos, combínalas (deja algo, descarta algo) - obtienes una nueva fruta - añádela a la base de datos.

 
Ni siquiera la naturaleza tiene posibilidades ilimitadas de combinar propiedades. Hay un número determinado de cromosomas, y están limitados a un conjunto de propiedades.
Razón de la queja: