Classes abstratas em c ++

Como intelectualmente satisfatória como factoring está em C ++, que introduz um problema próprio. Num exemplo de cerca de classes de conta bancários, especificamente da classe de base comum Conta.

Pense por um minuto sobre como você pode ir sobre a definição das diferentes funções de membro definidas na Conta.

Video: Dicas de C++ - Usando Polimorfismo com Classe Base Abstrata(Virtual)

A maioria Conta funções de membro não são um problema porque ambos os tipos de conta de implementá-las da mesma forma. A implementação destas funções comuns com Conta::retirada() é diferente, no entanto.

As regras para a retirada de uma conta poupança são diferentes daqueles para a retirada de uma conta corrente. Você vai ter que implementar Poupança :: retirada () diferente do que você Verificando :: retirada (). Mas como você é suposto para implementar Conta :: retirada ()?

Vamos pedir ao gerente do banco para obter ajuda. A conversa poderia ir algo como o seguinte:

“Quais são as regras para fazer uma retirada de uma conta?”, Você pergunta.



“Que tipo de conta? Corrente ou poupança?”Vem a resposta.

Video: 3.Class and Object in c++ defining an employee class with data members and member functions

“A partir de uma conta”, você diz. “Apenas uma conta.”

olhar vazio.

Video: C++ Tutorial for Beginners 40 - Class Templates

O problema é que a pergunta não faz sentido. Não há tal coisa como “apenas uma conta.” Todas as contas (neste exemplo) são ou contas correntes ou de poupança contas. O conceito de uma conta é abstrata que fatores fora propriedades comuns às duas classes concretas.

É incompleta porque não tem a propriedade crítica retirada(). (Depois de obter ainda mais em detalhes, você pode encontrar outras propriedades que uma conta simples não tem.)

A classe abstrata é um que só existe em subclasses. UMA classe concreta é uma classe que não é abstrato.


Publicações relacionadas