ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

CLASES ABSTRACTAS


Enviado por   •  9 de Septiembre de 2021  •  Documentos de Investigación  •  1.146 Palabras (5 Páginas)  •  110 Visitas

Página 1 de 5

CLASES ABSTRACTAS

Una clase abstracta, o clase base abstracta (ABC), es una que está diseñada sólo como clase padre de las cuales se deben derivar clases hijas. Una clase abstracta se usa para representar aquellos métodos que después se implementarán en las clases derivadas, pero la clase abstracta en sí no contiene ninguna implementación, solamente representa los métodos que se deben implementar. Por ello, no es posible instanciar una clase abstracta, pero sí una clase concreta que implemente los métodos definidos en ella.

Una clase abstracta tiene una característica importante: No puede haber objetos de esa clase. En vez de eso, una clase abstracta debe ser usada solo como una base que otras clases heredaran.

Las clases abstractas son útiles para definir interfaces, es decir, un conjunto de métodos que definen el comportamiento de un módulo determinado. Estas definiciones pueden utilizarse sin tener en cuenta la implementación que se hará de ellos.

 Reglas de uso:

  • Una clase abstracta solo puede ser usada como clase base para otras clases, pero no puede ser instanciada para crear un objeto.
  • Una clase abstracta no puede ser utilizada como argumento o como retorno de una función.
  • Si puede declararse punteros a clase abstracta.
  • Se permiten referencias a clase abstracta, suponiendo que el objeto temporal no es necesario en la inicialización.

Ejemplo:

class Abstracta{

public:

    virtual int metodo() = 0;

};

class ConcretaA : public Abstracta{

public:

     int metodo() {

      //haz algo

     }

};

class ConcretaB : public Abstracta{

public:

     int metodo() {

         //otra implementación

    }

};

FUNCIONES VIRTUALES

Una función virtual es una función que es declarada como 'virtual' en una clase base y es redefinida en una o más clases derivadas. Además, cada clase derivada puede tener su propia versión de la función virtual.

Se declara una función como virtual dentro de la clase base precediendo su declaración con la palabra clave virtual. Cuando una función virtual es redefinida por una clase derivada, la palabra clave 'virtual' no necesita ser repetida (aunque no es un error hacerlo).

Una clase que incluya una función virtual es llamada una 'clase polimórfica'. Este término también aplica a una clase que hereda una clase base conteniendo una función virtual.

LAS FUNCIONES VIRTUALES SON HEREDADAS

  • Una vez que una función es declarada como virtual, esta se mantiene virtual sin importar cuantas capas de clases derivadas esta debe perdurar.
  • Cuando una clase derivada no redefine una función virtual, entonces la función, como se definición en la clase base, es usada. Ejemplo:

#include <iostream>

class base {

public:

virtual void quien() {

            cout << "Base\n";

          }

};

class primera_d : public base {

public:

          void quien() {

           cout << "Primera derivacion\n";

          }

};

class segunda_d : public base {

public:

// quien () no definida

};

int main() {

  base obj_base;

  base *p;

  primera_d obj_primera;

  segunda_d obj_segunda;

  p = &obj_base;

  p->quien();   // acceder a quien() en 'base'

 

  p = &obj_primera;

  p->quien();   // acceder a quien() en 'primera_d'

  p = &obj_segunda;

  p->quien();   /* acceder a quien() en 'base'

                   porque segunda_d no la redefine */

return 0;

}

  • Mantenga en mente que las características heredadas de 'virtual' son jerárquicas. Por tanto,, si el ejemplo precedente es modificado para que 'segunda_d' sea derivada de 'primera_d' en vez de 'base', entonces cuando quien() es referenciada relativa a un objeto del tipo 'segunda_d', es la versión de 'quien()' declarada dentro de primera_d' la que es llamada ya que es la clase más cercana a 'segunda_d', no 'quien()' dentro de base. Ejemplo:

#include <iostream>

class base {

...

Descargar como (para miembros actualizados)  txt (6.4 Kb)   pdf (65.3 Kb)   docx (11.7 Kb)  
Leer 4 páginas más »
Disponible sólo en Clubensayos.com