Conceito classe abstrata c ++
Video: Classe Abstrata e Interface
Conteúdo
Uma classe resumo em C ++ é uma classe com um ou mais puras funções virtuais. UMA virtual pura função é uma função membro virtual que está marcado como não tendo nenhuma implementação. O mais provável é que não tem nenhuma implementação porque nenhuma implementação é possível com as informações fornecidas na classe, incluindo quaisquer classes de base.
Uma função virtual convencional, run-of-the-mill não-puro é conhecido como um função concreta (Note que a função concreta pode ser virtual - infelizmente, C ++ usa este termo para significar polimórfico.
A sintaxe para declarar uma função virtual pura é demonstrada no seguinte classe Conta:
// Conta - esta classe é uma conta classclass abstrato {public: Conta (não assinado accNo, double initialBalance = 0.0) - depósito functionsvoid // transação - // acesso functionsunsigned int AccountNo () -duplo acntBalance () -static int noAccounts () (montante duplo) - // o seguinte é uma functionvirtual virtual retirada vazio puro (quantidade dupla) =-protegida 0: // manter contas em uma lista ligada de modo não há nenhum limite // para o número de accountsstatic int // número em contagem de accountsunsigned accountNumber-doublebalance -} -
o = 0 após a declaração de retirada() indica que o programador não tem a intenção de definir esta função. A declaração é um espaço reservado para as subclasses. As subclasses de Conta são esperados para substituir essa função com uma função concreta. O programador deve fornecer uma implementação para cada função de membro não declarada pura virtual.
Video: Aula 6 - Classes Abstratas
Alguns programadores acho que esta notação é bobagem. Mas é aqui para ficar, então você apenas tem que aprender a viver com ela. Há uma razão, se não exatamente uma justificação para esta notação. Cada função virtual deve ter uma entrada em uma tabela especial.
Esta entrada contém o endereço da função. Presumivelmente, pelo menos, de uma só vez, a entrada para uma função virtual pura era 0. Em qualquer caso, é a sintaxe que você está preso com agora.
Video: Curso de C++ - Aula 36 - Tipos de dados abstratos parametrizados (classes template)
Uma classe abstrata não pode ser instanciado com um object- isto é, você não pode fazer um objeto fora de uma classe abstrata. Por exemplo, a seguinte declaração não é legal:
vazio fn () {// declarar uma conta com 100 ACNT dollarsAccount (1234, 100,00) - // isso não é legalacnt.withdrawal (50) - // o que você esperaria} // esta chamada para fazer?
Se a declaração fosse permitido, o objeto resultante seria incompleta, faltando em alguma capacidade. Por exemplo, qual deve ser a resposta anterior fazer? Lembre-se, não há Conta :: retirada ().
Video: Aula 09 - Interfaces e classes abstratas
As classes abstratas servir como classes base para outras classes. A Conta contém todas as propriedades associadas a uma conta bancária genérico. Você pode criar outros tipos de contas bancárias por herança de Conta.
O termo técnico é instanciar. Você diz que o Conta classe não pode ser instanciada com um objecto ou um determinado objecto a instancia Poupança classe.