Une question pour les experts de la POO. - page 43

 
Andrey Barinov:

Peter, je recommande vivement

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

Merci. Je vais essayer de l'obtenir et de le lire.
 
Artyom Trishkin:
Peter. C'est pourquoi je dis - pas besoin d'un héritage stupide. Séparation et classification claires.

Voici un exemple :

La catégorie "Fruit" est l'objet de base.

Classes - "Fruit" et "Vegetable" sont des descendants de la classe "Fruit".

La classe "Fruit" est le parent des classes "Kiwi", "Mangue", "Citron" et "Orange".

Il y a une nouvelle catégorie "Agrumes".

Placez-le entre la classe "Fruit" et ses successeurs - Kiwi, Mangue, Citron et Orange.

"Citrus" est le parent du citron et de l'orange.


Ensuite, - on croise Mangue et Citron et on obtient - l'objet Mangue-Lee.

L'objet contient partiellement des propriétés d'agrumes et partiellement des propriétés de non-agrumes. Il a DEUX parents et cette hiérarchie ne peut pas être optimisée.

Nous avons donc un héritage multiple de l'objet Lee-Mango et un double chemin vers l'objet Fruit sous-jacent : par la chaîne citrus et par la chaîne Mango.

Dans ces chaînes, nous devons contourner les propriétés Parent inutiles afin de préserver la personnalité de "Lee-Mango".

 

Peter, ça s'appelle : se creuser la tête - trouver des difficultés insurmontables. Vous devez spécifier la tâche et créer des classes pour celle-ci.

Pourquoi introduire une classe intermédiaire appelée "agrumes" ? Peut-être le problème peut-il être résolu en ajoutant simplement la propriété "agrumes" à la liste dynamique.

 
Dmitry Fedoseev:

Peter, ça s'appelle : se creuser la tête - trouver des difficultés insurmontables. Vous devez spécifier la tâche et créer des classes pour celle-ci.

Pourquoi introduire une classe intermédiaire appelée "agrumes" ? Peut-être le problème peut-il être résolu en ajoutant simplement la propriété "citrus" à la liste dynamique.

Je voulais écrire sur les propriétés à l'instant.
La propriété gustative sera la moyenne des propriétés des deux fruits.
 

Et ceci. La POO est, après tout, un outil de programmation, pas un outil de données (comment dire). L'outil de données est une base de données.

Trois tables. Un tableau comporte deux colonnes : l'identifiant du fruit et son nom. L'autre comporte deux colonnes : l'id de la propriété et son nom. La troisième a deux colonnes : id du fruit, id de la propriété.

Par conséquent, il est possible d'ajouter à l'infini de nouvelles propriétés, de les attribuer au fruit et d'obtenir ainsi n'importe quel nouveau fruit.

Les moyens de résoudre le problème doivent être adaptés à la tâche.

 
Dmitry Fedoseev:

Peter, ça s'appelle : se creuser la tête - trouver des difficultés insurmontables. Vous devez spécifier la tâche et créer des classes pour celle-ci.

Pourquoi introduire une classe intermédiaire appelée "agrumes" ? Peut-être la tâche peut-elle être résolue en ajoutant simplement la propriété "agrumes" à la liste dynamique.

Qu'il en soit ainsi.

Mais qu'en est-il du croisement des propriétés de deux objets qui donnent naissance à un nouvel objet ? Le nouvel objet héritera partiellement des propriétés des deux autres objets.

Comment mettre en œuvre son héritage "partiel" entre plusieurs objets (ses parents) et l'objet de base ?

 
Реter Konow:

Qu'il en soit ainsi.

Mais qu'en est-il du croisement des propriétés de deux objets qui donnent naissance à un nouvel objet ? Le nouvel objet héritera partiellement des propriétés de deux autres objets.

Comment mettre en œuvre son héritage "partiel" à partir de plusieurs autres objets ?

En appliquant un algorithme approprié pour résoudre ce problème particulier.

La POO est un outil de programmation, pas un moyen de décrire le monde qui nous entoure, peu importe comment il correspond à l'autre d'un certain point de vue.

 
Dmitry Fedoseev:

Et ceci. La POO est, après tout, un outil de programmation, pas un outil de données (comment dire). L'outil de données est une base de données.

Trois tables. Un tableau comporte deux colonnes : l'identifiant du fruit et son nom. L'autre comporte deux colonnes : l'id de la propriété et son nom. La troisième a deux colonnes : id du fruit, id de la propriété.

Par conséquent, il est possible d'ajouter à l'infini de nouvelles propriétés, de les attribuer au fruit et d'obtenir ainsi n'importe quel nouveau fruit.

Les moyens de résoudre le problème doivent correspondre au problème.

Il ne s'agit pas de propriétés, mais d'héritage. C'est-à-dire la répartition des propriétés et des méthodes entre les objets.

Les nouveaux objets lieront les propriétés des objets précédents dans différentes combinaisons, ce qui augmentera la complexité de leurs chaînes à l'objet de base.

 
Реter Konow:

Il ne s'agit pas de propriétés, mais d'héritage. C'est-à-dire la répartition des propriétés et des méthodes entre les objets.

Les nouveaux objets lieront les propriétés des objets précédents dans différentes combinaisons, ce qui augmentera la complexité de leurs chaînes à l'objet de base.

Les objets eux-mêmes ne le feront pas. Sélectionnez les propriétés d'un fruit et les propriétés d'un autre fruit dans la base de données, combinez (laissez quelque chose, jetez quelque chose) - vous obtenez un nouveau fruit - ajoutez-le à la base de données.

 
Même la nature ne dispose pas de possibilités illimitées de combinaison de propriétés. Il existe un certain nombre de chromosomes, et ils sont limités à un ensemble de propriétés.