Las clases abstractas en c ++

Como intelectualmente satisfactorio como el factoring es en C ++, introduce un problema de su cuenta. En un ejemplo acerca de las clases de cuentas bancarias, específicamente la clase base común Cuenta. Piense por un minuto acerca de cómo usted puede ir sobre la definición de las diferentes funciones miembro definidas en Cuenta.

La mayoría Cuenta funciones miembro no son un problema porque ambos tipos de cuentas a aplicar de la misma manera. La implementación de estas funciones comunes con Cuenta::retirada () es diferente, sin embargo.

Las reglas para la retirada de una cuenta de ahorros son diferentes de aquellos para retirarse de una cuenta de cheques. Vas a tener que poner en práctica Retirada de Ahorros :: () diferente a como lo hace Comprobación :: retirada (). Pero, ¿cómo se supone que debes poner en práctica Cuenta :: retirada ()?

Vamos a pedirle al gerente del banco en busca de ayuda. La conversación podría ser algo como lo siguiente:

" ¿Cuáles son las reglas para hacer un retiro de una cuenta "? usted pregunta." ¿Qué tipo de cuenta? Los ahorros o de cheques "? viene la respuesta." A partir de una cuenta, " tu dices. " Apenas una cuenta ".Mirada en blanco.

El problema es que la pregunta no tiene sentido. No hay tal cosa como " solo una cuenta ". Todas las cuentas (en este ejemplo) están comprobando ya sea cuentas o cuentas de ahorro. El concepto de una cuenta es abstracta que factores fuera propiedades comunes a las dos clases concretas.

Es incompleta porque carece de la propiedad crítica retirada (). (Después de obtener aún más en los detalles, es posible encontrar otras propiedades que carece de una cuenta simple.)

Un clase abstracta es uno que sólo existe en subclases. LA clase concreta es una clase que no es abstracto.




» » » » Las clases abstractas en c ++