Les classes abstraites en C ++

Comme intellectuellement satisfaisant que l'affacturage est en C ++, il introduit un problème de son propre. Dans un exemple sur les classes de comptes bancaires, en particulier la classe de base commune Compte. Pensez un instant sur la façon dont vous pouvez aller sur la définition des différentes fonctions membres définies dans Compte.

Les plus Considération fonctions membres ne posent aucun problème parce que les deux types de compte les mettre en œuvre de la même manière. La mise en œuvre de ces fonctions communes avec Considération::retrait () est différent, cependant.




Les règles de retrait à partir d'un compte d'épargne sont différentes de celles de retrait à partir d'un compte de chèques. Vous aurez à mettre en œuvre De retrait d'épargne () différemment que vous faites Vérification :: retrait (). Mais comment êtes-vous censé mettre en œuvre Compte :: retrait ()?

Demandons directeur de la banque de l'aide. La conversation pourrait aller quelque chose comme ce qui suit:

“ Quelles sont les règles pour effectuer un retrait d'un compte n ° 148?; tu demandes.
“ Quel type de compte? Épargne ou ”? vient la réponse.
“ partir d'un compte, N ° 148; tu dis. “ Juste un compte n ° 148.
Regard vide.

Le problème est que la question n'a pas de sens. Il n'y a pas une telle chose comme “ juste un compte n ° 148. Tous les comptes (dans cet exemple) sont soit la vérification des comptes ou des comptes d'épargne. Le concept d'un compte est un l'un abstrait qui factorise propriétés communes aux deux classes concrètes.

Il est incomplet parce qu'il lui manque la propriété critique retrait (). (Après vous aller plus loin dans les détails, vous pouvez trouver d'autres propriétés qu'un simple compte manque.)

Un classe abstraite est celui qui existe seulement dans les sous-classes. UN classe concrète est une classe qui n'a rien d'abstrait.


» » » » Les classes abstraites en C ++