Ich habe drei Klassen, die kreisförmig voneinander abhängig sind: TestExecuter führt Anforderungen von TestScenario aus und speichert eine Berichtsdatei mit der ReportGenerator-Klasse. So: TestExecuter ist von ReportGenerator abhängig, um den Bericht zu generieren ReportGenerator hängt von TestScenario und den in TestExecuter festgelegten Parametern ab. TestScenario ist abhängig von TestExecuter. Kann …
Ich muss einen Benachrichtigungssystem-Manager schreiben. Hier sind meine Anforderungen: Ich muss in der Lage sein, eine Benachrichtigung auf verschiedenen Plattformen zu senden, die möglicherweise völlig unterschiedlich sind (zum Beispiel muss ich in der Lage sein, entweder eine SMS oder eine E-Mail zu senden). Manchmal ist die Benachrichtigung für alle Empfänger …
Ich habe ein Stück Code, in dem ich eine Map iteriere, bis eine bestimmte Bedingung erfüllt ist, und diese Bedingung später benutze, um weitere Aufgaben zu erledigen. Beispiel: 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) …
Ich arbeite derzeit an einer Codebasis mit vielen Klassen, die eine Start-Methode implementieren. Dies scheint mir eine zweiphasige Konstruktion zu sein, die ich immer für eine schlechte Praxis gehalten hatte. Ich kann den Unterschied zwischen diesem und einem Konstruktor nicht erkennen. Wann ist es angebracht, eine Startmethode anstelle der normalen …
Hintergrund Ich bin kein großer Fan von Abstraktion. Ich gebe zu, dass man von Anpassungsfähigkeit, Portabilität und Wiederverwendbarkeit von Schnittstellen usw. profitieren kann. Da gibt es einen echten Vorteil, und ich möchte das nicht in Frage stellen, also lassen Sie uns das ignorieren. Es gibt den anderen großen "Vorteil" der …
Auf Seite 839 der zweiten Ausgabe erörtert Steve McConnell alle Möglichkeiten, wie Programmierer die Komplexität in großen Programmen "beherrschen" können. Seine Tipps gipfeln in dieser Aussage: "Objektorientierte Programmierung bietet eine Abstraktionsebene, die gleichzeitig für Algorithmen und Daten gilt , eine Art von Abstraktion, die die funktionale Zerlegung allein nicht bot." …
Mein Kollege und ich haben unterschiedliche Meinungen zum Verhältnis zwischen Basisklassen und Interfaces. Ich bin der Meinung, dass eine Klasse keine Schnittstelle implementieren sollte, es sei denn, diese Klasse kann verwendet werden, wenn eine Implementierung der Schnittstelle erforderlich ist. Mit anderen Worten, ich sehe Code gerne so: interface IFooWorker { …
Angenommen, ich beginne mit der Entwicklung eines Rollenspiels mit Charakteren, die andere Charaktere und dergleichen angreifen. Mit TDD mache ich einige Testfälle, um die Logik in der Character.receiveAttack(Int)Methode zu testen . Etwas wie das: @Test fun healthIsReducedWhenCharacterIsAttacked() { val c = Character(100) //arg is the health c.receiveAttack(50) //arg is the …
Das Gesetz von Demeter besagt Folgendes: Jede Einheit sollte nur begrenzte Kenntnisse über andere Einheiten haben: nur Einheiten, die "eng" mit der aktuellen Einheit verbunden sind. Jede Einheit sollte nur mit ihren Freunden sprechen. Sprich nicht mit Fremden. Sprechen Sie nur mit Ihren direkten Freunden. In C # 6.0 wurde …
Angenommen, wir möchten eine Abstraktion eines "Kontos" in einer Bank bereitstellen. Hier ist ein Ansatz, bei dem ein functionObjekt in Python verwendet wird: 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 …
Ich werde einige Zeichenfolgen-Nutzdaten in der Datenbank speichern. Ich habe zwei globale Konfigurationen: Verschlüsselung Kompression Diese können über die Konfiguration so aktiviert oder deaktiviert werden, dass entweder nur einer von ihnen aktiviert ist, beide aktiviert sind oder beide deaktiviert sind. Meine aktuelle Implementierung ist folgende: if (encryptionEnable && !compressEnable) { …
Es gibt einen klassischen Artikel mit dem Namen " Zu den Kriterien für die Zerlegung von Systemen in Module" , den ich gerade zum ersten Mal gelesen habe. Es macht für mich vollkommen Sinn und ist wahrscheinlich einer dieser Artikel, auf denen OOP basierte. Sein Fazit: Wir haben versucht, anhand …
Ich verfolgte diese hoch gestimmte Frage bezüglich eines möglichen Verstoßes gegen das Liskov-Substitutionsprinzip. Ich weiß, was das Liskov-Substitutionsprinzip ist, aber was mir immer noch nicht klar ist, kann schief gehen, wenn ich als Entwickler beim Schreiben von objektorientiertem Code nicht über das Prinzip nachdenke.
Vererbung, Polymorphismus und Verkapselung sind die drei wichtigsten Merkmale von OOP, und von diesen hat Vererbung heutzutage eine hohe Nutzungsstatistik. Ich lerne JavaScript und hier sagen alle, dass es eine prototypische Vererbung hat, und die Leute sagen überall, dass es etwas ganz anderes ist als die klassische Vererbung. Ich kann …
Ein guter Analysator und Designer zu werden, kann einem Entwickler große Vorteile bringen. Aber es gibt definitiv Hindernisse dafür. Nicht jeder ist an OOAD interessiert und nicht jeder, der interessiert ist, kennt den Weg. Sollte ein guter OOAD mehrere OO-Sprachen beherrschen? Oder sollte er / sie gescheiterte Projekte haben? Wie …
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.