Constructor
Un constructor es una subrutina cuya
misión es inicializar un objeto de una clase. En el constructor
se asignan los valores iniciales del nuevo objeto.
Se utiliza
para crear tablas de clases virtuales y poder así desarrollar el polimorfismo,
una de las herramientas de la programación orientada a objetos. Al utilizar un
constructor, el compilador determina cual de los objetos va a
responder al mensaje (virtual) que hemos creado. Tiene un tipo de acceso, un
nombre y un paréntesis.
Clases Abstractas
Este Tipo de Clases nos permiten crear “método generales”, que
recrean un comportamiento común, pero sin especificar cómo lo hacen. A nivel
de código tienen por particularidad que que algunos de sus métodos no tienen
“cuerpo de declaración”, ¿qué quiere decir esto? no tienen las llaves { } ni
código dentro de ellos y deben estar precedidos por la palabra clave abstract. Si una clases
contiene uno o más métodos abstractos está clase debe ser abstracta.
Estas clases como son generalidades no pueden ser instanciadas por
ningún objeto (se dice que su nivel de abstracción es demasiado alto), entonces
su único fin es ser heredado/extendido por otras clases.
Herencia
Multiple
Existen dos métodos en los que una clase derivada
puede heredar más de una clase base. El primero, en el que una clase derivada
puede ser usada como la clase base de otra clase derivada, creándose una
jerarquía de clases. El segundo, es que una clase derivada puede heredar
directamente más de una clase base. En esta situación se combinan dos o más
clases base para facilitar la creación de la clase derivada.
Funciones Virtuales
Una función virtual es una funcion que es declarada como 'virtual'
en una clase base y es redefinida en una o mas clases derivadas. Ademas, cada
clase derivada puede tener su propia version de la funcion virtual. Lo que hace
interesantes a las funciones virtuales es que sucede cuando una es llamada a
traves de un puntero de clase base ( o referencia ). En esta situacion, C++
determina a cual version de la funcion llamar basandose en el tipo de objeto
apuntado por el puntero. Y, esta determinacion es hecha en 'tiempo de
ejecucion'. Ademas, cuando diferentes objetos son apuntados, diferentes
versiones de la funcion virtual son ejecutadas. En otras palabras es el tipo de
objeto al que esta siendo apuntado ( no el tipo del puntero ) lo que determina
cual version de la funcion virtual sera ejecutada. Ademas, si la clase base
contiene una funcion virtual, y si dos o mas diferentes clases son derivadas de
esa clase base, entonces cuando tipos diferentes de objetos estan siendo
apuntados a traves de un puntero de clase base, diferentes versiones de la
funcion virtual son ejecutadas. Lo mismo ocurre cuando se usa una refrencia a
la clase base.
Se declara una funcion como virtual dentro de la clase base
precediendo su declaracion con la palabra clave virtual. Cuando una funcion
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 funcion virtual es llamada una 'clase
polimorfica. Este termino tambien aplica
a una clase que hereda una clase base conteniendo una funcion virtual.
No hay comentarios:
Publicar un comentario