P. 1
Jerarquía de Clases

Jerarquía de Clases

|Views: 1.160|Likes:
Un pequeño escrito acerca de cómo implementar superclases y subclases en Java
Un pequeño escrito acerca de cómo implementar superclases y subclases en Java

More info:

Published by: Diego Enrique Hernández González on Oct 06, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

07/12/2013

pdf

text

original

Jerarquía de Clases

Ing. Diego Enrique Hernández González 6 de octubre de 2010 Conceptos básicos
El propósito de la herencia en la POO es el ahorro de esfuerzo al elaborar el código. A partir de clases que generalicen el mayor número de características posibles, se pueden declarar otras que tomen esas mismas características y que además sirvan para tratar casos particulares. Para ello se necesita plantear una jerarquía de clases. La jerarquía de clases es un conjunto de clases que describen un concepto ampliamente, desde su caso más general a sus casos más particulares; se puede ver también como un árbol, donde las clases que están en los niveles superiores heredan sus atributos y métodos a las que están en los níveles inferiores. Mientras se ascienda en la jerarquía, aumenta el nivel de abstracción en las clases. La clase que hereda sus atributos y métodos a otra se le denomina clase padre, clase base o superclase. A la clase que recibe esa herencia se le llama clase derivada o subclase. Esta herencia puede ser directa, cuando una superclase hereda sus atributos a una subclase del nivel inmediatamente inferior, o indirecta, cuando hereda sus atributos a otra que se encuentra 2 o más niveles más abajo en la jerarquía. Un detalle que no hay que perder de vista: todas las clases en Java, incluso aquellas declaradas por el usuario, son implícitamente subclases de la clase Object; esta hereda métodos para el manejo de los objetos.

Diseño de una jerarquía de clases
Supongamos que en un proyecto tenemos 3 clases: Auto, Bicicleta y Avión. Podríamos programar cada clase por separado, pero también podríamos colocar sus atributos y método en común en una clase denominada Transporte (ejemplos: atributos velocidad y cantidad de pasajeros; métodos acelerar y desacelerar). También podríamos, si es necesario, manejar casos particulares de cada clase. Desde la clase Auto podríamos derivar otras como AutoDeportivo, AutoCompacto o Camioneta; al igual que con la clase Transporte, en la clase Auto se reunirían atributos y métodos que tuvieran en común esas clases derivadas (atributos: número de puertas, kilometraje; métodos: rellenar el tanque, activar los limpiaparabrisas). Para representar una herencia en el diagrama de clases ésto se usa una flecha con la punta vacía, tal como en la figura 1.

Implementación de una jerarquía de clases
Supongamos que tenemos una clase llamada ObjetoPadre, con sus atributos y métodos particulares. Si queremos que otra clase llamada ObjetoHijo herede esos atributos, en el momento de declararla lo indicamos con la palabra reservada extends: class ObjetoHijo extends ObjetoPadre { // Se declaran atributos y métodos que son para esta // esta clase en particular } Para algunas clases del ejemplo, podríamos hacer lo siguiente: class Avion extends Transporte { // Se declaran atributos y métodos que son de esta // clase en particular // ...

1

Figura 1: Jerarquía de clases. La clase Transporte del diagrama es la superclase de mayor jerarquía. } class Automovil extends Transporte { // Se declaran atributos y métodos que son de esta // clase en particular, recuerda que cada clase // está en un archivo diferente } class AutomovilDeLujo extends Automovil { // ... } Al momento de usar de instanciar los objetos de clases que heredan métodos y atributos de clases superiores, podemos usar de esos métodos y atributos de manera indiscriminada: class Avion extends Transporte { // ... public static void main (String[] args) { // Declaro 3 objetos de 3 clases distintas, entre estas clases // se heredan atributos y métodos Transporte ejemploTransporte = new Transporte(); Automovil ejemploAutomovil = new Automovil(); AutomovilDeportivo ejemploAutoDeportivo = new AutomovilDeportivo(); // en la clase superior solo se puede acceder a los métodos // que tiene de por sí declarados ejemploTransporte.acelerar(); // podemos usar los métodos de la clase de orden superior // tal como si fueran propios, sin necesidad de referirse // a esa clase ejemploAutomovil.desacelerar(); int numeroPasajeros = ejemploAutomovil.getNumeroPasajeros(); // y cuando sea necesario podemos hacer uso de los métodos de clase

2

ejemploAutomovil.rellenarTanque(45.67); // la herencia también cuenta con clases de las cuales no se // hereda directamente nada. En este caso, estamos haciendo // uso de los métodos de la clase que esta hasta arriba en // la jerarquía ejemploAutoDeportivo.desacelerar(); ejemploAutoDeportivo.setNumeroPasajeros(2); // en los casos particulares podemos hacer uso de toda la // gama de atributos y métodos definidos en buena parte de // la jerarquía ejemploAutoDeportivo.activarLimpiaParabrisas(); ejemploAutoDeportivo.setCambioManual(true); ejemploAutoDeportivo.abrirQuemacocos(); ejemploAutoDeportivo.cerrarQuemacocos(); } } Para referirnos a la superclase dentro de la subclase, usamos la referencia super, esta nos sirve para acceder a los elementos de la superclase en cualquier momento. class Camioneta extends Automovil { public void setDatoCualquiera() { ... super.rellenarTanque(); // Estoy llamando dentro // de este método a uno // de la clase inmediatamente // superior super.acelerar(); // Aplica también para los // métodos y atributos de clases más // elevadas en la jerarquía } }

3

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->