04.06.2015 Views

Manual básico de Programación en C++

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6. HERENCIA<br />

La her<strong>en</strong>cia es una forma <strong>de</strong> reutilización <strong>de</strong>l software, <strong>en</strong> la cual se crean clases<br />

nuevas a partir <strong>de</strong> clases exist<strong>en</strong>tes, mediante la absorción <strong>de</strong> sus atributos y<br />

comportami<strong>en</strong>tos, y embelleci<strong>en</strong>do éstos con las capacida<strong>de</strong>s que las clases nuevas<br />

requier<strong>en</strong>.<br />

Al crear una clase nueva, <strong>en</strong> vez <strong>de</strong> escribir <strong>en</strong> su totalidad miembros <strong>de</strong> datos y<br />

funciones miembro nuevos, el programador pue<strong>de</strong> <strong>de</strong>terminar que la clase nueva <strong>de</strong>be<br />

heredar los miembros <strong>de</strong> datos y las funciones miembro prov<strong>en</strong>i<strong>en</strong>tes <strong>de</strong> una clase base<br />

ya <strong>de</strong>finida. La clase nueva se conoce como clase <strong>de</strong>rivada.<br />

La her<strong>en</strong>cia forma estructuras jerárquicas <strong>de</strong> apari<strong>en</strong>cia arboresc<strong>en</strong>te. Una clase base<br />

existe <strong>en</strong> una relación jerárquica con sus clases <strong>de</strong>rivadas.<br />

Mediante la her<strong>en</strong>cia única, una clase es <strong>de</strong>rivada <strong>de</strong> una única clase base. Con la<br />

her<strong>en</strong>cia múltiple una clase <strong>de</strong>rivada hereda <strong>de</strong> múltiples clases base.<br />

En <strong>C++</strong>, ''hereda <strong>de</strong>'' se reemplaza por dos puntos ( : ). Luego, la sintaxis para escribir<br />

una clase <strong>de</strong>rivada es:<br />

Ejemplo:<br />

class tipo_clase_<strong>de</strong>rivada: (public/private/protected) tipo_clase_base { };<br />

class Puntos3D : public Punto<br />

{<br />

int _z;<br />

public:<br />

Puntos3D ( )<br />

{<br />

setX(0);<br />

setY(0);<br />

_z = 0;<br />

}<br />

Puntos3D (const int x, const int y, const int z)<br />

{<br />

setX(x);<br />

setY(y);<br />

_z = z;<br />

}<br />

∼ Puntos3D( ) { /* Nada que hacer */}<br />

int getZ( ) { return _z;}<br />

void setZ ( const int val) { _z = val;}<br />

};

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!