J'ai trois classes qui sont circulaires dépendantes les unes des autres: TestExecuter exécute les demandes de TestScenario et enregistre un fichier de rapport à l'aide de la classe ReportGenerator. Alors: TestExecuter dépend de ReportGenerator pour générer le rapport ReportGenerator dépend de TestScenario et des paramètres définis par TestExecuter. TestScenario dépend …
J'ai besoin d'écrire un gestionnaire de système de notification. Voici mes exigences: Je dois pouvoir envoyer une notification sur différentes plates-formes, qui peuvent être totalement différentes (par exemple, je dois pouvoir envoyer un SMS ou un e-mail). Parfois, la notification peut être la même pour tous les destinataires pour une …
J'ai un morceau de code où j'itère une carte jusqu'à ce qu'une certaine condition soit remplie et ensuite j'utilise cette condition pour faire plus de choses. Exemple: Map<BigInteger, List<String>> map = handler.getMap(); if(map != null && !map.isEmpty()) { for (Map.Entry<BigInteger, List<String>> entry : map.entrySet()) { fillUpList(); if(list.size() > limit) { …
Je travaille actuellement sur une base de code qui a de nombreuses classes qui implémentent une méthode Start. Cela me semble être une construction en deux phases, que j'avais toujours considérée comme une mauvaise pratique. Je ne peux pas faire la différence entre cela et un constructeur. Quand est-il approprié …
À la page 839 de la deuxième édition, Steve McConnell discute de toutes les façons dont les programmeurs peuvent "conquérir la complexité" dans les grands programmes. Ses conseils culminent avec cette déclaration: "La programmation orientée objet fournit un niveau d'abstraction qui s'applique aux algorithmes et aux données en même temps …
Contexte Je ne suis pas un grand fan d'abstraction. J'admettrai que l'on peut bénéficier de l'adaptabilité, de la portabilité et de la réutilisation des interfaces, etc. Il y a l'autre "avantage" majeur de l'abstraction, qui est de cacher la logique d'implémentation et les détails aux utilisateurs de cette abstraction. L'argument …
Mon collègue et moi avons des opinions différentes sur la relation entre les classes de base et les interfaces. Je pense qu'une classe ne devrait pas implémenter une interface à moins que cette classe puisse être utilisée lorsqu'une implémentation de l'interface est requise. En d'autres termes, j'aime voir du code …
Disons que je commence à développer un jeu de rôle avec des personnages qui attaquent d'autres personnages et ce genre de choses. En appliquant TDD, je fais quelques cas de test pour tester la logique à l'intérieur de la Character.receiveAttack(Int)méthode. Quelque chose comme ça: @Test fun healthIsReducedWhenCharacterIsAttacked() { val c …
La loi de Déméter stipule ce qui suit: Chaque unité ne devrait avoir qu'une connaissance limitée des autres unités: seules les unités "étroitement" liées à l'unité actuelle. Chaque unité ne devrait parler qu'à ses amis; ne parlez pas à des étrangers. Ne parlez qu'à vos amis immédiats. C # 6.0 …
Disons que nous voulons fournir une abstraction d'un "compte" dans une banque. Voici une approche, en utilisant un functionobjet en Python: def account(): """Return a dispatch dictionary representing a bank account. >>> a = account() >>> a['deposit'](100) 100 >>> a['withdraw'](90) 10 >>> a['withdraw'](90) 'Insufficient funds' >>> a['balance'] 10 """ def …
Je vais enregistrer une charge utile de chaîne dans la base de données. J'ai deux configurations globales: chiffrement compression Ceux-ci peuvent être activés ou désactivés à l'aide de la configuration de manière à ce que l'un d'eux soit activé, les deux soient activés ou les deux soient désactivés. Mon implémentation …
Il y a un article classique intitulé Sur les critères à utiliser dans la décomposition des systèmes en modules que je viens de lire pour la première fois. Cela est parfaitement logique pour moi et est probablement l'un de ces articles sur lesquels la POO était basée. Sa conclusion: Nous …
Je suivais cette question très votée sur une possible violation du principe de substitution de Liskov. Je sais ce qu'est le principe de substitution de Liskov, mais ce qui n'est pas encore clair dans mon esprit, c'est ce qui pourrait mal tourner si, en tant que développeur, je ne pense …
L'héritage, le polymorphisme et l'encapsulation sont les trois caractéristiques les plus importantes et les plus distinctes de la POO, et d'après eux, l'héritage a de fortes statistiques d'utilisation de nos jours. J'apprends JavaScript, et ici, ils disent tous qu'il a un héritage prototypique, et les gens partout dans le monde …
Devenir un bon analyseur et concepteur peut grandement bénéficier à un développeur. Mais il y a certainement des obstacles à cela. Tout le monde n'est pas intéressé par OOAD, et toutes les personnes intéressées ne connaissent pas le chemin. Un bon OOAD doit-il connaître plusieurs langues OO? Ou devrait-il / …
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.