Abstrakte Klassen in C ++

Wie intellektuell befriedigend, wie Factoring in C ++ ist, stellt es ein Problem für sich. In einem Beispiel über Bankkonto Klassen, insbesondere die gemeinsame Basisklasse Konto. Denken Sie für eine Minute darüber, wie Sie die verschiedenen Elementfunktionen zur Definition definiert gehen könnte in Konto.

Die meisten Konto Member-Funktionen sind kein Problem, da beide Kontotypen sie in der gleichen Art und Weise umzusetzen. Die Umsetzung dieser gemeinsamen Funktionen mit Konto::Rückzug() jedoch ist anders.

Die Regeln für die von einem Sparkonto zurückzuziehen sind anders als die von einem Girokonto zurückziehen. Sie müssen zu implementieren Einsparungen :: Rückzug () anders als Sie tun Überprüfen :: Rückzug (). Aber wie soll man zu implementieren Konto :: Rückzug ()?

Lassen Sie uns die Bank-Manager um Hilfe bitten. Das Gespräch könnte etwa wie folgt gehen:

# 147-Was sind die Regeln für die Herstellung eines Rückzug von einem Konto? # Sind 148- Sie fragen.
# 147-Welche Art von Konto? Einsparungen oder Kontrolle? # 148- kommt die Antwort.
# 147-von einem Konto, # 148- Sie sagen. # 147-Just ein Konto. # 148-
Leerer Blick.

Das Problem ist, dass die Frage nicht sinnvoll. Es gibt nicht so etwas wie # 147-nur ein Konto. # 148- Alle Konten (in diesem Beispiel) sind entweder Konten oder Sparkonten überprüfen. Das Konzept eines Kontos ist eine abstrakte eine, die Eigenschaften gemeinsam mit den beiden konkreten Klassen Faktoren aus.

Es ist unvollständig, weil es die kritische Eigenschaft fehlt Rückzug(). (Wenn Sie weiter in die Details gehen, können Sie andere Eigenschaften finden, die ein einfaches Konto fehlt.)

Ein abstrakte Klasse ist eine, die nur in Unterklassen vorhanden ist. EIN Betonklasse eine Klasse, die nicht abstrakt ist.

Menü