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.
Au cours des derniers mois, le mantra "favoriser la composition par rapport à l'héritage" semble être né de nulle part et est devenu presque une sorte de mème au sein de la communauté de programmation. Et chaque fois que je le vois, je suis un peu mystifié. C'est comme si …
J'ai toujours aimé l'idée de prendre en charge l'héritage multiple dans une langue. Le plus souvent, c'est intentionnellement abandonné et le supposé "remplaçant" est une interface. Les interfaces ne couvrent tout simplement pas la même terre sur plusieurs héritages multiples, et cette restriction peut parfois conduire à plus de code …
J'ai toujours lu que la composition doit être préférée à l'héritage. Un article de blog sur des types différents , par exemple, préconise l'utilisation de la composition plutôt que l'héritage, mais je ne vois pas comment le polymorphisme est obtenu. Mais j’ai le sentiment que lorsque les gens préfèrent la …
Si un carré est un type de rectangle, pourquoi ne peut-il pas hériter d'un rectangle? Ou pourquoi est-ce un mauvais design? J'ai entendu des gens dire: Si vous faites que les carrés dérivent du rectangle, alors un carré devrait être utilisable partout où vous vous attendez à un rectangle Quel …
"Classe abstraite" et "interface" sont des concepts similaires, l'interface étant la plus abstraite des deux. Un facteur de différenciation est que les classes abstraites fournissent des implémentations de méthodes pour les classes dérivées lorsque cela est nécessaire. En C #, toutefois, ce facteur de différenciation a été réduit par l’introduction …
Je suis toujours élève au lycée (entrée en 10e année) et je n'ai pas encore suivi de cours d'informatique à l'école. Tout ce que j'ai fait jusqu'à présent passe par des livres. Ces livres m'ont enseigné des concepts tels que l'héritage, mais en quoi le fractionnement d'un programme en plusieurs …
Je termine juste ma maîtrise (en informatique) et postule à des emplois. J'ai remarqué que de nombreuses entreprises demandent spécifiquement une compréhension de l'orientation des objets. Les questions d'entretien les plus populaires portent sur l'héritage, le polymorphisme, les accesseurs, etc. Est-ce que OO est vraiment crucial? J'ai même eu une …
C ++ a un héritage multiple simple, de nombreuses conceptions de langage l'interdisent comme dangereux. Mais certaines langues comme Ruby et PHP utilisent une syntaxe étrange pour faire la même chose et appellent cela mixins ou traits. J'ai souvent entendu dire que les mixins / traits sont plus difficiles à …
Contexte Je conçois une langue, en tant que projet parallèle. J'ai un assembleur, un analyseur statique et une machine virtuelle en état de marche. Comme je peux déjà compiler et exécuter des programmes non triviaux en utilisant l'infrastructure que j'ai construite, j'ai pensé à faire une présentation à mon université. …
J'essaie de comprendre les principes SOLID de la programmation orientée objet et je suis parvenu à la conclusion que LSP et OCP présentaient certaines similitudes (sinon pour en dire plus). les états de principe ouvert / fermé "les entités logicielles (classes, modules, fonctions, etc.) devraient être ouvertes à extension, mais …
J'ai trouvé un arbre d'héritage dans notre base de code (plutôt volumineuse) qui ressemble à ceci: public class NamedEntity { public int Id { get; set; } public string Name { get; set; } } public class OrderDateInfo : NamedEntity { } D'après ce que j'ai pu comprendre, c'est principalement …
Je discutais avec un collègue et nous avons fini par avoir des intuitions contradictoires quant à l'objectif du sous-classement. Mon intuition est que si l'une des fonctions principales d'une sous-classe est d'exprimer une plage limitée de valeurs possibles de son parent, il ne devrait probablement pas s'agir d'une sous-classe. Il …
Considérez le design suivant public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public …
J'avais l'habitude de créer beaucoup de classes / méthodes abstraites. Puis j'ai commencé à utiliser des interfaces. Maintenant, je ne sais pas si les interfaces ne rendent pas les classes abstraites obsolètes. Vous avez besoin d'un cours totalement abstrait? Créez plutôt une interface. Vous avez besoin d'une classe abstraite avec …
Par exemple, considérons que j'ai une classe pour que d'autres classes puissent s'étendre: public class LoginPage { public String userId; public String session; public boolean checkSessionValid() { } } et quelques sous-classes: public class HomePage extends LoginPage { } public class EditInfoPage extends LoginPage { } En fait, la sous-classe …
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.