L'héritage est un moyen de réutiliser le code des objets existants, ou d'établir un sous-type à partir d'un objet existant, ou les deux, selon la prise en charge du langage de programmation.
Quand devriez-vous préférer les modèles d'héritage aux mixins dans les langages dynamiques? Par mixins, j'entends un véritable mixage, comme lors de l'insertion de fonctions et de membres de données dans un objet lors de l'exécution. Quand utiliseriez-vous, par exemple, l'héritage prototypique au lieu des mixins? Pour illustrer plus clairement ce …
Dans Meyer Travaux logiciel orienté objet (1988) , il définit le principe ouvert / fermé les suivants: Un module sera dit ouvert s'il est toujours disponible pour extension. Par exemple, il devrait être possible d'ajouter des champs aux structures de données qu'il contient ou de nouveaux éléments à l'ensemble des …
Un certain échec de la POO est montré avec une classe Square héritant de Rectangle, où Square est logiquement une spécialisation de Rectangle et devrait donc en hériter, mais tout s'effondre lorsque vous essayez de modifier la longueur ou la largeur d'un carré. Existe-t-il un terme spécifique pour décrire ce …
Dans notre application Rails, nous ajoutons des notifications. Certains d'entre eux sont blocking: Ils arrêtent la progression de la ressource sur laquelle ils sont ajoutés, car certaines informations sur cette ressource sont manquantes. Les autres notifications sont de simples notifications et ne fournissent que des informations. Aujourd'hui, j'ai eu une …
J'ai actuellement deux classes dérivées, Aet B, qui ont toutes deux un champ en commun et j'essaie de déterminer s'il doit remonter dans la classe de base. Elle n'est jamais référencée à partir de la classe de base, et dire si à un moment donné, une autre classe est dérivée, …
En Java, il existe quatre modificateurs d'accès disponibles pour les méthodes: public - n'importe quelle classe peut utiliser cette méthode. protected - les classes du même package et les sous-classes de n'importe quel package peuvent utiliser cette méthode. private - seule cette classe peut utiliser cette méthode. no modifier ("package …
Dans l'état actuel des choses, cette question ne convient pas à notre format de questions / réponses. Nous nous attendons à ce que les réponses soient étayées par des faits, des références ou une expertise, mais cette question suscitera probablement un débat, des arguments, des sondages ou une discussion approfondie. …
Inspiré par cette réponse: Le principe de substitution de Liskov exige que Les conditions préalables ne peuvent pas être renforcées dans un sous-type. Les post-conditions ne peuvent pas être affaiblies dans un sous-type. Les invariants du supertype doivent être conservés dans un sous-type. Contrainte d'historique (la "règle d'historique"). Les objets …
Aujourd'hui, j'ai remarqué que je n'utilise pratiquement pas de protectedméthodes dans le code C ++, car je ressens rarement le besoin d'appeler des méthodes non publiques d'un parent. J'utilise protégé en Java dans le modèle de méthode de modèle, mais comme vous pouvez remplacer les méthodes privées en C ++, …
Cette page préconise la composition plutôt que l'héritage avec l'argument suivant (reformulé dans mes mots): Un changement dans la signature d'une méthode de la superclasse (qui n'a pas été remplacée dans la sous-classe) provoque des changements supplémentaires à de nombreux endroits lorsque nous utilisons l'héritage. Cependant, lorsque nous utilisons Composition, …
J'ai une classe, qui encapsule une autre classe d'un type de base commun. Étant donné que l'interface de type de base est assez grande, cela implique d'écrire de nombreuses fonctions d'intercommunication. Je cherche un moyen d'éviter cela. Faisons un exemple: Car / \ Volvo VolvoWithTrailer Maintenant, je dois implémenter chaque …
J'essaie de m'enseigner le génie logiciel et je me heurte à des informations contradictoires qui me déroutent. J'ai appris la POO et ce que sont les classes / interfaces abstraites et comment les utiliser, mais je lis ensuite qu'il faut «privilégier la composition plutôt que l'héritage». Je comprends que la …
Le code suivant provoque une fuite de mémoire: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < …
Pour les classes avec des champs facultatifs, est-il préférable d'utiliser l'héritage ou une propriété nullable? Considérez cet exemple: class Book { private String name; } class BookWithColor extends Book { private String color; } ou class Book { private String name; private String color; //when this is null then it …
Les interfaces vides sont généralement considérées comme une mauvaise pratique, pour autant que je sache - en particulier lorsque des éléments tels que les attributs sont pris en charge par le langage. Cependant, une interface est-elle considérée comme «vide» si elle hérite d'autres interfaces? interface I1 { ... } interface …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.