Clases abstractas C ++

Clases abstractas C ++
“Una clase en lenguaje de programación C ++ se considera abstracto si contiene al menos un solo método virtual. El método virtual puede definirse mediante las clases que heredan la clase abstracta; de lo contrario, la subclase se habría convertido en una clase abstracta. Las clases abstractas se han utilizado para construir las API C ++; Sin embargo, la abstracción de datos, que será la idea de mantener la configuración de la configuración aparte de los datos asociados, puede no mezclarse con métodos abstractos. Una clase abstracta funciona como una clase base a partir de la cual ciertas clases pueden derivar. Veamos los diferentes ejemplos de una clase abstracta."

Ejemplo no 1

La clase abstracta "s" y sus miembros se construyen en el siguiente ejemplo:

#incluir
usando el espacio de nombres STD;
Clase S
público:
virtual int área () = 0;
Void setWidth (int a)
wid = a;

Vacío Setheight (int b)
hght = b;

protegido:
int wid;
int hght;
;
rectángulo de clase: public s
público:
área int ()
return (wid * hght);

;
Triángulo de clase: Public S
público:
área int ()
return (wid * hght)/2;

;
int main ()
Rectangular Rec;
Triángulo tri;
Recreación.setwidth (15);
Recreación.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;

Al comienzo del programa, incluiremos la biblioteca requerida . Entonces hemos estado usando el espacio de nombres estándar como STD. Ahora configuraremos la clase llamada "S". Declaramos públicamente un método virtual. La función virtual que usamos aquí es el área (). Luego emplearemos la función setWidth (). El ancho de la forma se puede especificar utilizando esta función. El valor del ancho se almacena en una variable "A".

Ahora especificaremos el valor de la altura de la forma, por lo que hemos estado utilizando la función SethEight (). Inicializamos una variable "B" para almacenar la altura de la forma. Establecemos los valores de ancho y altura como protegidos. El tipo de datos de ancho y altura será un entero. En la siguiente línea, heredaremos una forma de rectángulo de clase de la clase "S". Aquí, encontramos el área del rectángulo, por lo que se aplicará el método de área (). Devuelve el área de un rectángulo multiplicando el valor de ancho por el valor del rectángulo.

Después de todo esto, heredaremos otra forma, "Triángulo", de la clase "S". Ahora, aplicamos las fórmulas para obtener el área del triángulo. La función de área () se llama. Esto devuelve el valor resultante. Obtenemos el área de un triángulo multiplicando el ancho por la altura y luego dividiendo el valor por 2. Además, llamaremos a la función principal (). Definimos los objetos de ambas clases, rectángulos y triángulos, respectivamente.

Ahora tenemos que establecer los valores del ancho y la altura del rectángulo y el triángulo utilizando los métodos setwidth () y setRectangle () correspondientemente. Al final, hemos empleado la instrucción "Cout" para mostrar el área calculada del rectángulo y el triángulo.

Ejemplo no 2

Las clases que heredan de una clase abstracta proporcionan algunos métodos virtuales. Ejecutaremos la instancia en la que heredamos las clases de la clase abstracta:

#incluir
usando el espacio de nombres STD;
base de clases

int n;
público:
Virtual void f () = 0;
int geta () return n;
;
clase derivada: base pública

int m;
público:
vacío f () Cout << "f() is being called";
;
int main (nulo)

Derivado x;
X.F();
regresar 0;

Primero, hemos estado integrando el archivo de encabezado . Junto con esto, usaremos el espacio de nombres estándar como STD. Luego definimos la clase denominada "base". Dentro de esta clase, inicializamos una variable "n", y el tipo de datos de esta variable se establecerá como un entero. Aquí llamamos la función de esta clase y establecemos estas funciones como públicas. Hemos estado llamando al método void f () de la clase "base". Luego también utilizamos la función get ().

Además, heredaremos la clase derivada de la clase principal. Como resultado, derivamos la clase base de ella. Dentro de la clase derivada, declararemos una variable "M". Ahora llamamos públicamente la función void f (). Dentro de esta función, la declaración "Cout" se habrá utilizado para mostrar la línea en la pantalla. Comencemos el código en el cuerpo de la función principal (). Para hacer esto, primero tenemos que llamar a la función principal (). Llamamos a la función f () asociada con la clase derivada. Hemos estado aplicando el comando "return 0" al final del código.

Ejemplo no 3

Los constructores pueden estar presentes en una clase abstracta. Crearemos el constructor en la ilustración siguiente:

#incluir
usando el espacio de nombres STD;
clase B

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

;
clase derivada: público b

En televisión;
público:
Derivado (int m, int n): b (m) v = n;
vacío f () Cout << "u = " << u << ", v = " << vregresar 0;

Aquí hemos estado incluyendo el módulo . Luego incluimos el espacio de nombres estándar como STD. Construiremos la clase base con el constructor. Aquí la clase base actúa como una clase abstracta. Inicializaremos la variable "U" y la configuraremos para protegerse. Primero, hemos estado llamando a la función void f (). Además, llamaremos a la función base (). Esta función contiene una variable como argumento. Hemos utilizado la declaración de "cout" dentro de esta función. Heredaremos la clase derivada de la clase "base" en el siguiente paso. Dentro de la clase derivada, inicializaremos una variable "V".

Ahora llamamos públicamente la función derivada (). Pasamos dos variables como parámetros. Llamamos a la función b (). Entonces se llama el vacío F (). Dentro de esta función, la declaración "cout" se habrá aplicado para mostrar los valores. Tenemos que invocar la función principal (). Aquí, construimos el objeto de clase derivada. Esta función contiene dos valores como su atributo. Llamamos a la función f () asociada con la clase derivada. Ingresaremos el comando "return 0" para finalizar el programa.

Conclusión

Hemos pasado por la clase abstracta en C ++ en este tutorial. Los elementos de clase abstracta son difíciles de crear. En C ++, un método abstracto es un método virtual que podría tener una definición. Sin embargo, la clase derivada anularía el método abstracto para evitar que la clase derivada se convierta también en una clase abstracta. La asignación de 0 durante la declaración crea un método virtual.