Zuhause Persönliche Finanzen Faktorisierung und Vererbung in C ++ - Dummies

Faktorisierung und Vererbung in C ++ - Dummies

Video: 02: Objektorientierte Programmierung, Objekte und Klassen, Typen und Variablen 2025

Video: 02: Objektorientierte Programmierung, Objekte und Klassen, Typen und Variablen 2025
Anonim

Das Konzept der Vererbung und somit des Faktorisierungsvorgangs in C ++ erlaubt es einer Klasse, die Eigenschaften einer Basisklasse zu erben. Vererbung hat eine Reihe von Zwecken. Der Hauptvorteil der Vererbung ist die Fähigkeit, die Beziehung zwischen Klassen aufzuzeigen. Das ist die so genannte IS_A-Beziehung - ein MicrowaveOven IS_A-Ofen und solche Dinge.

Factoring ist ein großartiges Zeug, wenn Sie die richtigen Korrelationen herstellen. Zum Beispiel scheint die Beziehung zwischen Mikrowelle und herkömmlichem Ofen natürlich zu sein. Behaupten Sie, dass Mikrowelle eine besondere Art von Toaster ist, und Sie sind auf Ärger vorbereitet. Es stimmt, sie machen beide Sachen heiß, beide benutzen Strom, und sie sind beide in der Küche zu finden, aber die Ähnlichkeit endet dort - eine Mikrowelle kann keinen Toast machen und ein Toaster kann keine Nachos machen.

Das Identifizieren der einem Problem inhärenten Klassen und das Zeichnen der korrekten Beziehungen zwischen diesen Klassen ist ein Prozess, der als -Faktorisierung bekannt ist. (Das Wort bezieht sich auf die Arithmetik, die Sie in der Grundschule erzwungen haben: Auszählen der kleinsten gemeinsamen Nenner, zum Beispiel 12 ist gleich 2 mal 2 mal 3.)

So können Sie Vererbung, um Ihre Programme mit einem Bankkonto Beispiel zu vereinfachen. Angenommen, Sie wurden gebeten, ein einfaches Bankprogramm zu schreiben, das das Konzept eines Sparkontos und eines Girokontos implementiert.

Objektorientierte Programmierer haben einen prägnanten Weg gefunden, um die hervorstechenden Punkte einer Klasse in einer Zeichnung zu beschreiben. Die Checking und Einsparungen Klassen sind in dieser Abbildung dargestellt. (Dies ist nur eine von mehreren Möglichkeiten, das Gleiche grafisch auszudrücken.)

Prüfen von und Einsparungen. ">

Unabhängige Klassen Überprüfung von und Einsparungen.

Um diese Figur und die anderen Abbildungen zu lesen, denken Sie an Folgendes:

  • Die große Box ist die Klasse mit dem Klassennamen oben.

  • Die Namen in den Boxen sind Mitgliedsfunktionen.

  • Die nicht in Boxen enthaltenen Namen sind Datenmember.

  • Die Namen, die teilweise aus den Boxen herausragen, sind öffentlich zugängliche Mitglieder; das heißt, auf diese Mitglieder kann durch Funktionen zugegriffen werden, die nicht Teil der Klasse oder ihrer Nachkommen sind. Diejenigen Mitglieder, die vollständig innerhalb der Box sind, sind von außerhalb der Klasse nicht zugänglich.

  • Ein dicker Pfeil steht für die IS_A-Beziehung.

  • Ein dünner Pfeil steht für die HAS_A-Beziehung.

Ein Auto IS_A Fahrzeug , , aber ein Auto HAS_A Motor .

In der ersten Abbildung sehen Sie, dass die Checking - und Savings -Klassen viel gemeinsam haben. Beispielsweise haben beide Klassen eine Memberfunktion "withdraw ()" und "deposit ()".Da die beiden Klassen jedoch nicht identisch sind, müssen sie als separate Klassen verbleiben. (In einer realen Bankanwendung wären die beiden Klassen wesentlich unterschiedlicher als in diesem Beispiel.) Dennoch sollte es eine Möglichkeit geben, diese Wiederholung zu vermeiden.

Sie könnten eine dieser Klassen von der anderen erben lassen. Einsparungen hat mehr Mitglieder als Prüfen, Damit können Sie Einsparungen von Prüfen erben lassen. Diese Anordnung wird in dieser nächsten Abbildung gezeigt.

Die Savings -Klasse erbt alle Mitglieder. Die Klasse wird mit dem Hinzufügen des Datenelements noWithdrawals und dem Überschreiben der Funktion withdraw () abgeschlossen. Sie müssen die Abhebung () unterdrücken, da die Regeln für das Abheben von Geld von einem Sparkonto sich von denen für die Abhebung von Geld von einem Girokonto unterscheiden.

Einsparungen wurde als Unterklasse von implementiert. ">

Einsparungen als Unterklasse von implementiert.

Obwohl Ersparnisse von geerbt werden können, ist das Überprüfen von mühsam, aber nicht vollständig zufriedenstellend. Das Hauptproblem ist, dass, wie das Gewicht auf meinem Führerschein aufgeführt, es die Wahrheit falsch darstellt. Diese Vererbungsbeziehung impliziert, dass ein Sparkonto eine besondere Art von Girokonto ist, was es nicht ist.

Solche Falschdarstellungen sind für den Programmierer verwirrend, sowohl heute als auch morgen. Eines Tages wird ein Programmierer, der mit unseren Programmier-Tricks nicht vertraut ist, lesen und verstehen müssen, was unser Code tut. Irreführende Darstellungen sind schwer zu vereinbaren und zu verstehen.

Darüber hinaus können solche Falschdarstellungen im weiteren Verlauf zu Problemen führen. Angenommen, die Bank ändert ihre Richtlinien in Bezug auf Girokonten. Angenommen, es wird entschieden, eine Servicegebühr für Girokonten nur dann zu berechnen, wenn das Mindestguthaben während des Monats unter einen bestimmten Wert fällt.

Eine solche Änderung kann leicht mit minimalen Änderungen an der Klasse Checking vorgenommen werden. Sie müssen der Klasse ein neues Datenelement hinzufügen, um den Mindestsaldo während des Monats zu verfolgen. Lassen Sie uns auf ein Glied hinausgehen und es minimumBalance nennen.

Aber jetzt haben Sie ein Problem. Da Savings von Erben erbt, erhält Savings dieses neue Datenelement ebenfalls. Es hat keine Verwendung für dieses Mitglied, weil das Mindestguthaben Sparkonten nicht betrifft, also sitzt es gerade dort. Denken Sie daran, dass jedes Girokonto-Objekt über das zusätzliche Mitglied minimumBalance verfügt. Ein zusätzliches Datenelement ist vielleicht keine große Sache, aber es fügt weitere Verwirrung hinzu.

Änderungen wie diese häufen sich an. Heute ist es ein zusätzliches Datenmitglied - morgen ist es eine veränderte Mitgliedsfunktion. Schließlich trägt die Sparkonto-Klasse viel zusätzliches Gepäck, das nur für Girokonten gilt.

Jetzt kommt die Bank zurück und beschließt, eine Sparkontopolitik zu ändern. Dazu müssen Sie einige Funktionen in Prüfen ändern. Änderungen wie diese in der Basisklasse werden automatisch auf die Unterklasse übertragen, sofern die Funktion nicht bereits in der Unterklasse Einsparungen überschrieben wurde.

Nehmen Sie zum Beispiel an, dass die Bank entscheidet, Toaster für jede Einzahlung auf das Girokonto auszugeben. Wenn die Bank (oder ihre Programmierer) das nicht wüssten, würden Einzahlungen auf Girokonten automatisch zu Toasterspenden führen. Wenn Sie nicht sehr vorsichtig sind, können Änderungen an Prüfen unerwartet in Einsparungen erscheinen.

Wie können Sie diese Probleme vermeiden? Die Behauptung, dass Prüfen ein Sonderfall von Einsparungen ist, ändert sich, löst aber nicht unser Problem. Was Sie brauchen, ist eine dritte Klasse (nennen Sie es Account, nur für Grins), die die Dinge verkörpert, die zwischen Checking und Savings, üblich sind.

Überprüfung von und Einsparungen in einer gemeinsamen Konto -Klasse. ">

Basierend Einsparungen in einer gemeinsamen -Konto -Klasse prüfen.

Wie löst das Erstellen eines neuen Kontos die Probleme? Erstens ist das Erstellen einer neuen Account -Klasse eine genauere Beschreibung der realen Welt (was auch immer das ist). Natürlich ist etwas wirklich als ein Konto bekannt. Sparkonten und Girokonten sind Spezialfälle dieses grundlegenderen Konzepts.

Außerdem ist die Klasse Savings von Änderungen an der Klasse Checking (und umgekehrt) isoliert. Wenn die Bank eine grundlegende Änderung an allen Konten vornimmt, können Sie Konto ändern, und alle Unterklassen erben die Änderung automatisch. Wenn die Bank ihre Richtlinien jedoch nur für die Prüfung von Konten ändert, können Sie nur die Checking -Kontoklasse ändern, ohne die Einsparungen für zu beeinflussen.

Dieser Prozess des Aussortierens gemeinsamer Eigenschaften aus ähnlichen Klassen ist das Wesen des Klassen-Factoring .

Factoring ist nur dann legitim, wenn die Vererbungsbeziehung der Realität entspricht. Eine Klasse Maus und Joystick zusammen zu fassen, weil sie beide Hardware-Zeigegeräte sind, ist legitim. Das Zusammenfassen einer Klasse Maus und Anzeige , weil beide Low-Level-Betriebssystemaufrufe ausführen, ist dies nicht.

Faktorisierung und Vererbung in C ++ - Dummies

Die Wahl des Herausgebers

Web Marketing: Warum Suchmaschinen existieren - Dummies

Web Marketing: Warum Suchmaschinen existieren - Dummies

Wenn Sie verstehen, warum Suchmaschinen existieren, können sie für Sie in Ihrem Web-Marketing-Geschäft arbeiten. Also, hier ist eine kurze Lektion, warum Suchmaschinen existieren und wie Sie sie nutzen können, um Geld zu verdienen. Suchmaschinen liefern Relevanz. Relevanz bedeutet, dass Besucher auf Suchergebnisse klicken und zufrieden sind mit ...

Was sind Tür- und Informationsseiten? - dummies

Was sind Tür- und Informationsseiten? - dummies

Eine Doorway-Seite wird nur als Zugang von einer Suchmaschine zu Ihrer Website erstellt. Doorway-Seiten werden manchmal als Gateway-Seiten und Geisterseiten bezeichnet. Die Idee besteht darin, hoch optimierte Seiten zu erstellen, die von Suchmaschinen aufgenommen und indiziert werden und die mit etwas Glück gut ranken und somit den Traffic auf eine ...

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Eine Weiterleitung ist das automatische Laden einer Seite ohne Benutzereingriff. Sie klicken auf einen Link, um eine Webseite in Ihren Browser zu laden, und innerhalb von Sekunden verschwindet die geladene Seite, und eine neue wird angezeigt. Designer erstellen häufig Seiten für Suchmaschinen - optimierte, schlüsselwortreiche Seiten -, die Besucher auf die ...

Die Wahl des Herausgebers

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

, Wenn Kunden wissen, dass sie direkt mit ein Geschäft in den sozialen Medien, können sie aus einer beliebigen Anzahl von Gründen mit ihnen in Verbindung treten. Aber sobald sie merken, dass ein Problem mit dem Kundenservice oder einer Produktfrage über einen einzigen Tweet oder Beitrag angesprochen werden kann, ist es wahrscheinlicher, dass sie mit dem Unternehmen Geschäfte machen.

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Die heutige Technologie verändert die Art und Weise, wie wir Geschäfte machen blitzschnell. Auch der Social-Media-Handel bewegt sich blitzschnell, aber durch die Beobachtung von Erwähnungen und Fragen an die Community können Sie einen Eindruck davon bekommen, wie Ihr Markt über bevorstehende Veränderungen denkt. Auch andere Posts können Ihnen helfen, kritisches Feedback aus der Öffentlichkeit zusammenzustellen ...

Manage Social Media Commerce mit HootSuite - dummies

Manage Social Media Commerce mit HootSuite - dummies

HootSuite ist ein Social Media Management System zur Umsetzung von Outreach und Überwachung in sozialen Netzwerken über ein einziges webbasiertes Dashboard. Für Unternehmen wird HootSuite am häufigsten von Social-Media-Teams mit mehreren Agenten verwendet, aber auch viele Einzelanwender mögen es. Wenn Sie auf der Suche nach einer robusten Plattform sind, die alles an einem Ort hält, ...

Die Wahl des Herausgebers

Die 5 Kornsterne der Mittelmeer - Dummies

Die 5 Kornsterne der Mittelmeer - Dummies

Die Mittelmeerdiät ist in der Praxis des Habens begründet ein Vollkorn zu jeder Mahlzeit. Und nein, das bedeutet nicht, eine ganze Platte Vollkornspaghetti mit Fleischsauce zum Abendessen zu essen. Stattdessen machen die Menschen im Mittelmeerraum ihr Getreide zur Beilage oder schaffen durch die Zugabe von magerem Eiweiß mehr Gleichgewicht ...

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Der Verzehr von sieben bis zehn Portionen Obst und Gemüse pro Tag, wie sie für die mediterrane Ernährung empfohlen werden, mag sehr viel erscheinen, aber es muss keine so große Herausforderung sein. Wenn Sie nicht die Früchte und das Gemüse lieben, die spezifisch mit der Mittelmeerdiät verbunden sind, ist das okay! Essen Sie jede Art von Obst oder Gemüse, die Sie ...

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Sie haben vielleicht gedacht, dass der Oregano und Basilikum in Ihrer Spaghetti-Sauce lieferte nur einen deutlichen italienischen oder mediterranen Geschmack, aber diese kleinen Kräuter sind Pflanzen, was bedeutet, dass sie alle Arten von gesundheitlichen Vorteilen haben, die einen großen Einfluss auf Ihre allgemeine Gesundheit haben können. Einfache Gewürze wie Ingwer und Oregano enthalten Phytochemikalien, ...