Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ac tenemos el ejemplo bsico de herencia en Java. En este caso la clase Ciudadano hereda
desde la clase Persona, para tomar funcionalidad y extenderla.
class Humano {
protected String nombre;
protected String apellido;
public Humano(String nombre,String apellido) {
this.nombre = nombre;
this.apellido = apellido;
}
public String nombreCompleto() {
return this.apellido + ", " + this.nombre;
}
public String identificacion() {
return this.nombreCompleto();
}
}
class Ciudadano extends Humano {
protected String documento;
public Ciudadano(String nombre,String apellido, String documento) {
super(nombre,apellido);
this.documento = documento;
}
public String identificacion() {
return super.identificacion() + ", documento: " + this.documento;
}
}
public class Herencia {
public static void main (String args[]) {
Humano a = new Humano("Emilio","Rosso");
Ciudadano b = new Ciudadano("Emilio","Rosso","3052454545");
Humano [] arregloDeHumanos;
arregloDeHumanos.push(a);
arregloDeHumanos.push(b);
identificarPolimorfico(arregloDeHumanos);
}
public static void identificarPolimorfico(Humano [] arregloDeHumanos)
{
for(int i = 0; i < arregloDeHumanos.length ; i++) {
System.out.println("Identificando: " +
arregloDeHumanos[i].identificacion());
}
}
}
http://www.it.uc3m.es/java/gitt/units/oo-herencia/guides/6/guide_es.html
Herencia. Las clases
Figure
Triangle
Figure.java.
Nota
Observa que se han declarado dos mtodos abstractos que se
implementarn en las clases derivadas correspondientes.
Constructores de la clase
Figure.
Cuestion
qu sentido tiene implementar el constructor de una clase
abstracta?
La subclase
Triangle.
Triangle
de la siguiente forma:
Point
con
Pista 2
Para calcular la altura de un tringulo cualquiera es
necesario aplicar trigonometra: aqu puedes
aproximar como si fuera un
tringulo issceles o equilatero y suponer que la
proyeccin del vrtice opuesto es el punto medio de
la base.
o
toString()
Pista 2
Recuerda que el operador "+", aplicado a cadenas de
texto, permite concatenarlas.
El mtodo
main
de la clase
Triangle
Square.
Figure
y tiene el
Nota 1
Observa que un cuadrado se crea a partir de una de sus
diagonales, por ello el constructor recibe como parmetros los
dos vrtices de dicha diagonal. Para calcular los otros dos
vrtices restantes, has de implementar el mtodo
privado otherDiagonal(Point vertex1, Point vertex3) que calcula y crea los
otros dos vrtices de la segunda diagonal del cuadrado a partir
de los vrtices que le pasas por parmetros. Es decir, crean los
vrticesvertex2 y vertex4 del cuadrado.
Nota 2
Observa tambin que al derivar de una clase abstracta
como Figure, la clase Square est obligada a implementar TODOS
sus mtodos abstractos... cules son?
Los constructores de la clase
Square.
Square.
Square
que se especifican a
anotherPoint)
de la clase
Point
con los
El mtodo es obvio.
7. Programa en mtodo toString() que permite obtener una
representacin en modo texto del objeto. El prototipo de
dicho mtodo se muestra a continuacin:
8.
9.
}
Pista 1
Puedes reutilizar gran parte del mtodo
toString()
del tringulo.
Pista 2
Recuerda que el operador "+", aplicado a cadenas de texto,
permite concatenarlas.
El mtodo
main
de la clase
Square
Constructor.
FiguresArea.java
FiguresArea.
FiguresArea
que se especifican a
Figure
al array de
Recuerda
Recordando de teora, Figure es abstracta y, por consiguiente
no podran existir instancias de dichos objetos. Las
instancias son, en realidad, de las clases derivadas
de Figure, es decir: Triangle, Square.
4. Programa en mtodo totalArea() que permite calcular el area
total de las figuras del array. El prototipo de dichos
mtodos se muestra a continuacin:
5.
6.
}
Figure
main
de la clase
FiguresArea
Otras cuestiones
Figure.
Qu es una interfaz?
Cmo se implementa en java?
Qu significa que una clase implementa una interfaz?
Cmo se indica en java?
set
4.
public String getFigureType();
5.
6.
public double area();
7.
public void drawTxt();
Create rectangle
Create square
Display figure
Exit
2.3. Cifrado
Objetivo
Introduccin
El objetivo general de esta prctica es repasar el uso de la herencia en Java y su aplicacin a arrays
de objetos. La herencia la basaremos en el uso de abstract y extends, con las que crearemos una
clase genrica y varias especficas que deriven de ella. Se implementarn sus mtodos abstractos y
se sobreescribirn otros que permitirn demostrar el polimorfismo a la hora de usar los objetos de la
jerarqua de clases. Por ltimo, usaremos un array de objetos de la anterior jerarqua que permita
demostrar todo lo anterior.
En particular, en esta prctica se va a calcular el area total de un conjunto de figuras que hayamos
creado previamente. Partiremos de la clase Triangulo que ya conocemos de la prctica 1 de repaso y
crearemos una clase genrica Figura que permita abstraernos a la hora de trabajar con cualquier
tipo de figura. Una vez definido el comportamiento deFigura, se derivar nuestra
clase Triangulo de ella y se adaptar convenientemente para que pueda ser considerada como
una Figura. Despus crearemos la clase, Cuadrado, que heredar tambin de Figura, como era de
imaginar.
Una vez creadas todas las figuras, implementaremos una clase que contenga un array de figuras (un
tringulo y un cuadrado, por ejemplo) y calcularemos el area total de ellas aprovechando el
polimorfismo de las clases para calcular el area de cada una.
Declaracin de la clase:
public class Triangulo extends Figura
Devuelve una cadena de caracteres con formato con los valores del tringulo. El formato
de salida de la cadena de caracteres del mtodo toString() es el siguiente:
TRIANGULO [NOMBRE=triangulo1] [NO REGULAR] : VERTICES (1.0,
1.0),(3.0, 1.0),(2.0, 2.0)
Por favor, recuerda que lo que se muestra es la cadena de salida particularizada con
valores ejemplo de los atributos de la clase para que simplemente compruebes el formato
de salida. En el mtodo no tienes que usar estos valores sino que tienes que trabajar con
los atributos directamente.
Pista 1: Usa el mtodo toString() de los vertices del tringulo.
Pista 2: recuerda que el operador "+", aplicado a cadenas de texto, permite concatenarlas.
Nota: Necesitars tener acceso a la clase Punto para poder compilar la clase Triangulo. Puedes
descargarla del siguiente enlace Punto.java.
Nota 1: Observa que un Cuadrado se crea a partir de su diagonal, por ello el constructor recibe
como parmetros los dos vrtices de dicha diagonal. Para calcular los otros dos vrtices restantes,
has de implementar el mtodo privado calculaOtraDiagonal(vertice1, vertice3) que calcula y crea
los otros dos vrtices de la otra diagonal del cuadrado a partir de los vrtices que le pasas por
parmetros. Es decir, crean los vrtices vertice2 y vertice4 del cuadrado.
Nota 2: Observa tambin que al derivar de una clase abstracta como Figura, la clase Cuadrado est
obligada a implementar TODOS sus mtodos abstractos... cules son?
Ese mtodo crea los otros dos puntos que son los vrtices de la otra diagonal del cuadrado
(vertice2 y vertice4) en base a las coordenadas de los puntos de la diagonal que se le pasa como
parmetros.
Pista: has de comprobar antes de crear esos dos puntos si la diagonal que representan los
parmetros vertice1 y vertice3 es vertical u horizontal ya que el clculo del resto de los vrtices
ser ms sencillo. O si lo estimas oportuno, este mtodo tambin puede valer:
1.
2.
3.
4.
Es obvio.
public String toString() {
/* completar */
}
Devuelve una cadena descriptiva con valores del cuadrado con un formato concreto:
CUADRADO [NOMBRE=cuadrado1] : VERTICES (3.0, 3.0),(5.0, 3.0),(5.0,
5.0),(3.0, 5.0)
Recuerda que esto slo es un ejemplo, aqu irn los valores propios de los atributos de cada
objeto.
b>Pista 1: Puedes reutilizar gran parte del mtodo toString() del tringulo.
Pista 2: recuerda que el operador "+", aplicado a cadenas de texto, permite concatenarlas.
Aade un objeto Figura al array. Para ello, recorre el array de figuras y cuando encuentra el primer
hueco libre, asigna la figura en dicha posicin del array.
Recuerda: Recordando de teora, Figura es abstracta y, por consiguiente no podran existir
instancias de dichos objetos. Las instancias son, en realidad, de las clases derivadas de Figura
(Triangulo, Cuadrado).
public double calculaAreaTotal() {
/* completar */
}
Calcula el area total de las figuras contenidas en el array de las figuras. Para ello, recorre el array
de las figuras y va sumando las areas correspondientes de cada una de ellas.
Pista: Recuerda para qu servan los metodos abstractos de Figura a la hora de implementar el
mtodo.
public void imprime() {
/* completar */
}
Imprime por pantalla el resultado del clculo del area de todas las figuras. Para ello, hace uso del
mtodo anterior que permite calcularla.
Nota: Puedes imprimir tambin de qu figura se trata, para lo que puedes usar los
mtodos toString() de cada figura.
Recuerda: El polimorfismo es una consecuencia de aplicar la herencia en las clases ya que permite
lo que se conoce como "sobreescritura" de mtodos por la que un mismo mtodo puede
implementarse en una clase base y derivada. En tiempo de ejecucin, en funcin del tipo del objeto,
el intrprete de Java invocar al de la clase correspondiente del tipo del mismo.
Ejercicio 4 (complementario)
Se pretende poder crear los puntos de las figuras pidiendo al usuario que introduzca las coordenadas
de los mismos por teclado. Para ello, actualiza las clases que has implementado en esta prctica
como se indica a continuacin.
Clase Figura
Implementa el mtodo que permita obtener un punto a partir de las lecturas de sus coordenadas del
teclado. La especificacin del mtodo es la siguiente:
public Punto leeVertice(String texto) { /* ... */ }
Lee las coordenadas de un punto del teclado y devuelve un nuevo objeto Punto inicializado con
dichas coordenadas. Para ello, usa el parmetro texto que permite identificar de qu punto se
trata y lee respectivamente las coordenadas x e y del punto. Por ltimo, devuelve un
nuevo Punto creado con dichas coordenadas.
Pista: Revisa el cdigo de las soluciones de las prcticas anteriores de repaso para saber cmo se
leen los valores del teclado.
Clase AreaFiguras
Modifica el mtodo main para que se comporte de la siguiente manera:
Por ltimo, se propone que crees una nueva clase de figura y que repitas todo lo que has hecho en
esta prctica para que compruebes cmo puede reutilizarse y extenderse el cdigo que has
implementado.