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

 
Artyom Trishkin:
Classification claire. Si nous voyons que plusieurs objets ont les mêmes propriétés, il est logique de décrire ces propriétés dans un seul objet parent.
Si un objet enfant remplace une propriété d'un objet parent portant le même nom, cette propriété doit être virtuelle.

Que faire si l'objet hérite de propriétés et de méthodes de différentes classes ?

Si nous avons affaire à une structure de données en expansion et en reconstruction dynamique (base de connaissances), nous devons utiliser le "matériel hérité" d'objets déjà préparés pour en créer de nouveaux. Dans ce cas, les objets seront synthétisés par héritage multiple, en récupérant du matériel hérité supplémentaire. Et donc, ne fonctionnera pas correctement. C'est-à-dire que nous arriverons à des objets dégénérés dès que l'héritage multiple commencera. C'est le problème...

 
Реter Konow:

Que se passe-t-il si un objet hérite de propriétés et de méthodes de différentes classes ?

Si nous avons affaire à une structure de données en expansion et en reconstruction dynamique (base de connaissances), nous devons utiliser le "matériel hérité" d'objets déjà préparés pour en créer de nouveaux. Dans ce cas, les objets seront synthétisés par héritage multiple, en récupérant du matériel hérité supplémentaire. Et donc, ne fonctionnera pas correctement. C'est-à-dire que nous arriverons à des objets dégénérés dès que l'héritage multiple commencera. C'est le problème...

Dans un nouvel objet, n'utilisez pas les propriétés des parents "restants". Je peux voir une certaine incompréhension chez vous cependant. Pourquoi "donner naissance" à un objet de quelqu'un dont les propriétés ne sont pas nécessaires ?
 
fxsaber:

La boîte à outils correspondante est présentée. Personne n'en a besoin, sauf l'auteur.

Et il est également nécessaire d'en avoir un. Mais personne n'en aura besoin non plus.

Même situation pour les KB, les articles, etc.


Les développeurs ont introduit des caractères, des services, des ticks, des caches, des pips, .... personnalisés. Je suis surpris qu'ils l'aient fait, car il n'y a que quelques personnes, voire aucune, qui en ont besoin.

Prenons le nouveau mode pips du testeur. Qui en a besoin ? -Personne en fait ! Il est né de la vision d'une importante optimisation algorithmique du testeur de la part de ses développeurs. Qui a compris son utilité ? -Personne ! Et ainsi en toute chose.

Maintenant, le Testeur est modifié de manière significative. Mais ces modifications ne sont d'aucune utilité pour personne. Eh bien, il y a des geeks qui vont l'apprécier. Dans sa forme actuelle, MT5-Tester est plus cool que tous ses concurrents. Mais pour une raison quelconque, ils veulent le rendre encore plus cool. Personne n'est en mesure d'évaluer ses caractéristiques actuelles, sans parler de celles à venir. Les développeurs sont plusieurs têtes au-dessus de leurs utilisateurs. Et il est clair que la motivation des changements apportés au Testeur n'est pas la monétisation (elle ne peut tout simplement pas l'être, si personne ne comprend), mais un désir interne de faire quelque chose d'inédit.

+
 
Artyom Trishkin:
Dans le nouvel objet, n'utilisez pas les propriétés des parents "restants". Je vois cependant un certain malentendu avec vous. Pourquoi "donner naissance" à un objet à partir d'un objet dont les propriétés ne sont pas nécessaires ?

Nécessaire, mais pas complètement. Le nouvel objet utilise 3 propriétés de la classe A, 5 propriétés de la classe B, et 3 méthodes, de trois autres classes.

Que doit-il faire avec le reste des propriétés de ces classes ? Comment les empêcher de le faire ?

 
Реter Konow:

Nécessaire, mais pas complètement. Le nouvel objet utilise 3 propriétés de la classe A, 5 propriétés de la classe B, et 3 méthodes, de trois autres classes.

Que doit-il faire avec le reste des propriétés de ces classes ? Comment les empêcher de le faire ?

Regrouper 3 propriétés de la classe A dans un objet. En hériter. Ou vous pouvez ne pas hériter, et faire de l'objet avec trois propriétés une propriété de l'objet requis.
Il existe un système circulatoire - un objet avec plusieurs objets. Il existe un objet cœur qui fait partie du système circulatoire.
Pour un nouvel objet, si un cœur est nécessaire dans le nouvel objet, alors héritez de l'objet cœur, et non du système circulatoire.
 
Artyom Trishkin:
Il existe un système circulatoire - un objet avec de nombreux objets. Il existe un objet cœur qui fait partie du système circulatoire.
Pour un nouvel objet, si un cœur est nécessaire dans le nouvel objet, alors héritez de l'objet cœur, et non du système circulatoire.

Si un nouvel objet a besoin d'un cœur, il n'a pas besoin d'hériter d'un cœur. Le cœur doit être intégré au nouvel objet, comme un membre.

Hériter si le nouvel objet est un objet ancêtre. Et utiliser l'inclusion si le nouvel objet est AVEC l'autre.

 
Artyom Trishkin:
Emballez 3 propriétés de la classe A dans un objet. En hériter. Ou vous pouvez ne pas hériter, mais faire d'un objet avec trois propriétés une propriété de l'objet requis.

Trois propriétés à combiner dans un objet et en faire une propriété d'un nouvel objet ? C'est une chose à laquelle il faut penser...

Mais l'héritage à travers de nombreuses longues chaînes génère des problèmes similaires à chaque étape. Plus les chaînes d'héritage sont longues et diverses, plus les propriétés et les méthodes des dernières générations d'objets seront "mélangées" et plus il sera difficile de dériver leur chaîne individuelle vers l'objet de base.

S'il n'est pas hérité - il n'y aura pas d'accès à l'objet de base. S'ils sont hérités, la "filiation" multiple des objets empêche la traçabilité de leur chaîne directe jusqu'à l'objet de base.

Il devient de plus en plus difficile d'isoler leurs propres propriétés et méthodes des autres classes.

 
Реter Konow:

Trois propriétés à combiner dans un objet et en faire une propriété d'un nouvel objet ? C'est une chose à laquelle il faut penser...

Mais l'héritage à travers de nombreuses longues chaînes génère des problèmes similaires à chaque étape. Plus les chaînes d'héritage sont longues et diverses, plus les propriétés et les méthodes des dernières générations d'objets seront "mélangées" et plus il sera difficile de dériver leur chaîne individuelle vers l'objet de base.

S'il n'est pas hérité - il n'y aura pas d'accès à l'objet de base. S'ils sont hérités, la "filiation" multiple des objets empêche la traçabilité de leur chaîne directe jusqu'à l'objet de base.

Il devient de plus en plus difficile d'extraire leurs propres propriétés et méthodes des autres classes.

Peter, je vous recommande vivement

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

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

Si le cœur est nécessaire dans le nouvel objet, il n'est pas nécessaire d'hériter du cœur. Le cœur doit faire partie du nouvel objet, comme un membre.

Hériter si le nouvel objet EST l'objet ancêtre. Et utiliser l'inclusion si le nouvel objet en CONTIENT un autre.

Ce n'est pas ce que je voulais dire. Tu sais ce que je veux dire. Si vous voulez un cœur modifié avec les propriétés du parent.
 
Реter Konow:

Trois propriétés à combiner dans un objet et en faire une propriété d'un nouvel objet ? C'est une chose à laquelle il faut penser...

Mais l'héritage à travers de nombreuses longues chaînes génère des problèmes similaires à chaque étape. Plus les chaînes d'héritage sont longues et diverses, plus les propriétés et les méthodes des dernières générations d'objets seront "mélangées" et plus il sera difficile de dériver leur chaîne individuelle vers l'objet de base.

S'il n'est pas hérité - il n'y aura pas d'accès à l'objet de base. S'ils sont hérités, la "filiation" multiple des objets empêche la traçabilité de leur chaîne directe jusqu'à l'objet de base.

Il devient de plus en plus difficile d'isoler leurs propres propriétés et méthodes des autres classes.

Peter. C'est pourquoi je dis pas d'héritage sans importance. Une division et une classification claires.