Classes abstratas C ++

Classes abstratas C ++
“Uma classe na linguagem de programação C ++ é considerada abstrata se contiver pelo menos um único método virtual. O método virtual pode ser definido pelas classes que herdam a classe abstrata; Caso contrário, a subclasse teria se tornar uma classe abstrata. Classes abstratas foram usadas para construir as APIs C ++; No entanto, a abstração de dados, que será a idéia de manter as definições de configuração além dos dados associados, não podem ser misturados com métodos abstratos. Uma classe abstrata opera como uma classe base da qual certas classes podem derivar. Vamos ver os diferentes exemplos de uma classe abstrata.”

Exemplo nº 1

A classe abstrata “S” e seus membros são construídos no exemplo a seguir:

#incluir
usando namespace std;
classe s
público:
virtual int area () = 0;
Void SetWidth (int a)
wid = a;

Void Sethight (int b)
hght = b;

protegido:
int wid;
int hght;
;
classe retângulo: público s
público:
int are ()
retornar (wid * hght);

;
classe Triângulo: Public S
público:
int are ()
retornar (wid * hght)/2;

;
int main ()
Retângulo rec;
Triângulo tri;
gravando.SetWidth (15);
gravando.SethEight (50);
Tri.SetWidth (70);
Tri.SethEight (88);
cout << "The calculated area of the required rectangle: " << Rec.Area() << endl;
cout << "The calculated area of the required triangle: " << Tri.Area() << endl;

No início do programa, incluiremos a biblioteca necessária . Então estamos usando o espaço de nome padrão como std. Agora vamos montar a classe chamada "s". Declaramos publicamente um método virtual. A função virtual que usamos aqui é a área (). Em seguida, empregaremos a função setWidth (). A largura da forma pode ser especificada usando esta função. O valor da largura é armazenado em uma variável "a".

Agora, especificaremos o valor da altura da forma, por isso estamos usando a função setheight (). Inicializamos uma variável "B" para armazenar a altura da forma. Definimos os valores de largura e altura como protegidos. O tipo de dados de largura e altura será um número inteiro. Na próxima linha, herdaremos uma forma de retângulo de classe da classe “s”. Aqui, encontramos a área do retângulo, para que o método da área () seja aplicado. Ele retorna a área de um retângulo multiplicando o valor da largura pelo valor do retângulo.

Depois de tudo isso, herdaremos outra forma, "Triângulo", da classe "s". Agora, aplicamos as fórmulas para obter a área do triângulo. A função da área () está sendo chamada. Isso retorna o valor resultante. Temos a área de um triângulo multiplicando a largura pela altura e depois dividindo o valor por 2. Além disso, chamaremos a função principal (). Definimos os objetos de ambas as classes, retângulos e triângulos, respectivamente.

Agora, temos que definir os valores da largura e da altura do retângulo e do triângulo usando os métodos setWidth () e setRectangle (). No final, empregamos a declaração "cout" para exibir a área calculada do retângulo e triângulo.

Exemplo nº 2

As classes que herdam de uma classe abstrata fornecem alguns métodos virtuais. Executaremos a instância em que herdamos as classes da classe abstrata:

#incluir
usando namespace std;
base de classe

int n;
público:
Void virtual f () = 0;
int getA () return n;
;
Classe derivada: Base Pública

int m;
público:
void f () cout << "f() is being called";
;
int main (vazio)

Derivado x;
x.f ();
retornar 0;

Primeiro, estamos integrando o arquivo de cabeçalho . Junto com isso, usaremos o espaço de nome padrão como std. Em seguida, definimos a classe denominada "base". Nesta classe, inicializamos uma variável "n" e o tipo de dados dessa variável será definido como um número inteiro. Aqui chamamos a função desta classe e definimos essas funções como público. Temos chamado o método F () Void da classe "base". Então também utilizamos a função get ().

Além disso, herdaremos a classe derivada da classe pai. Como resultado, derivamos a classe base dela. Dentro da classe derivada, declararemos uma variável "M". Agora chamamos publicamente a função void f (). Dentro desta função, a declaração "cout" terá sido usada para mostrar a linha na tela. Vamos começar o código no corpo da função principal (). Para fazer isso, temos que chamar primeiro a função principal (). Chamamos a função f () associada à classe derivada. Temos aplicado o comando "Return 0" no final do código.

Exemplo no 3

Os construtores podem estar presentes em uma classe abstrata. Criaremos o construtor na ilustração seguinte:

#incluir
usando namespace std;
Classe B

protegido:
int u;
público:
Void virtual f () = 0;
Base (int m)
u = m;
cout<<"Calling the base constructor\n";

;
Classe derivada: Public B

na TV;
público:
Derivado (int m, int n): b (m) v = n;
void f () cout << "u = " << u << ", v = " << vretornar 0;

Aqui estamos incluindo o módulo . Em seguida, incluímos o espaço de nome padrão como std. Vamos construir a classe base com o construtor. Aqui a classe base atua como uma classe abstrata. Inicializaremos a variável "u" ​​e a definiremos para ser protegida. Primeiro, estamos chamando a função do vazio f (). Além disso, chamaremos a função base (). Esta função contém uma variável como seu argumento. Usamos a declaração "cout" dentro desta função. Vamos herdar a classe derivada da classe "base" na etapa seguinte. Dentro da classe derivada, inicializaremos uma variável "V".

Agora chamamos publicamente a função derivada (). Passamos duas variáveis ​​como seus parâmetros. Chamamos a função B (). Então o vazio f () é chamado. Dentro desta função, a declaração "cout" será aplicada para mostrar os valores. Temos que invocar a função principal (). Aqui, construímos o objeto de classe derivado. Esta função contém dois valores como seu atributo. Chamamos a função f () associada à classe derivada. Vamos inserir o comando "retornar 0" para encerrar o programa.

Conclusão

Passamos pela classe abstrata em C ++ neste tutorial. Itens de classe abstratos são difíceis de criar. Em C ++, um método abstrato é um método virtual que pode ter uma definição. No entanto, a classe derivada substituiria o método abstrato para impedir que a classe derivada também se torne uma classe abstrata. A alocação de 0 durante a declaração cria um método virtual.