Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


4.11.1  Clases:  formas de creación

§1  Sinopsis

Las clases pueden crearse de tres formas: definición, herencia y composición.

§1.1  Por definición ( 4.11.2a), construyéndola desde cero.

Se puede considerar la herencia como una forma de cortar y pegar sin trasladar nada en realidad. De hecho, los seguidores fanáticos de C++ y Java se refieren con frecuencia al acto físico de cortar y pegar código como "herencia del editor".  David S. Platt. "Así es Microsoft .NET".  McGraw-Hill

§1.2  Por herencia ( 4.11.2b); partiendo de una clase existente, y perfilando los comportamientos o datos que queremos pulir en una nueva versión que se adapte mejor a nuestro propósito. Por ejemplo, un motor eléctrico deriva de la clase general de los motores, de la cual derivan también los de gasolina, diesel, de vapor, etc. A este tipo de herencia se la denomina también herencia simple, en referencia a que deriva de un único ancestro, y por supuesto una misma clase puede ser antecesora de varias clases derivadas, cada una de ellas comparte rasgos comunes con sus "hermanas" aunque tiene también características propias.

Aunque la herencia es uno de los pilares de la POO y tiene innegables ventajas, como la reutilización de la interfaz, tiene también sus inconvenientes. Por ejemplo, dado que el compilador debe imponer ciertas características en tiempo de compilación sobre las clases creadas por herencia, esto resulta en cierta rigidez posterior.

Una característica especial es que, si se cambia el comportamiento de la clase antecesora, cambiará el comportamiento de las clases derivadas de ella.

Nota: la nomenclatura utilizada es muy variada:  A la clase antecesora se la denomina también clase padre, clase-base o súper-clase. A su vez, a las clases derivadas se las denomina también descendientes y subclases.


Por lo general, derivar una clase de una existente solo tiene sentido si se modifica algo su comportamiento (su interfaz) y/o su contenido (datos). Esto se consigue de tres formas:

  • Añadiendo propiedades y/o métodos que no existían en la clase base
  • Sobrescribiendo métodos con distintos comportamientos (sobrecarga).
  • Redefiniendo propiedades que existían en la clase base


§1.3
  Por agregación, composición o herencia múltiple ( 4.11.2c). Estos son los nombres que se dan al proceso de ensamblar un nuevo tipo, con elementos y piezas (que aquí se llaman "miembros") de otras clases. Es posible declarar clases derivadas de otras haciendo que hereden los miembros de varias clases-padre (antecesoras o ancestros). Es clásico el ejemplo de señalar que un automóvil tiene un motor y cuatro ruedas; elementos estos pertenecientes a la clase de los motores y de las ruedas respectivamente, etc.

Este sistema tiene también sus ventajas e inconvenientes, pero es muy flexible, ya que incluso pueden cambiarse los componentes en tiempo de ejecución.

Como el lector se habrá figurado, todo este esquema de herencia, simple o múltiple, que además es recursivo (las clases derivadas pueden ser a su vez clases-base de otras), conduce a un esquema de relaciones parecido a un árbol genealógico, que en este caso recibe el nombre de jerarquía de clases.