Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Erik_Escriche en 28 de Diciembre 2016, 17:26
-
Buenas.
Esta es mi solución al ejercicio de la entrega CU00915C del curso Lenguaje de Programación Java Nivel Avanzado I.
Crea una clase denominada AvesEnZoo con 4 atributos. Uno será de tipo String (tipoDeAve) y los otros tres serán de tipo int (numeroAves, numeroMachos, numeroHembras).
Crea una clase GruposDeAvesZoos que implemente la interface Iterable. Crea varios objetos de tipo AvesEnZoo y añádelos a un objeto GruposDeAvesEnZoos.
Utilizando un iterador, muestra los datos de los objetos presentes en el objeto GruposDeAvesZoos.
Clase AvesEnZoo.
package javaAvanzado;
public class AvesEnZoo {
//Atributos de clase.
private String tipoDeAve;
private int numeroAves;
private int numeroHembras;
private int numeroMachos;
//Constructor.
public AvesEnZoo (String tipo, int total, int machos, int hembras) {
tipoDeAve=tipo;
numeroAves=total;
numeroHembras=hembras;
numeroMachos=machos;
}
//Métodos.
public String getTipoDeAve () {return tipoDeAve;}
public int getNumeroAves () {return numeroAves;}
public int getNumeroHembras () {return numeroHembras;}
public int getNumeroMachos () {return numeroMachos;}
@Override
public String toString() {
String result;
return result= tipoDeAve+" "+numeroAves+" "+numeroMachos+" "+numeroHembras+" ";
}
}
Clase GrupoDeAvesZoo.
package javaAvanzado;
import java.util.Iterator;
public class GrupoDeAvesZoo implements Iterable <AvesEnZoo> {
//Atributo de la clase.
public AvesEnZoo[] grupoDeAvesZoo;
//Constructor.
public GrupoDeAvesZoo (AvesEnZoo[] grupoDeAvesZoo) {
this.grupoDeAvesZoo=grupoDeAvesZoo;
}
//Método.
public Iterator<AvesEnZoo> iterator() {
Iterator <AvesEnZoo> it = new MiIteradorGrupoDeAvesZoo();
return it;
}
//Clase interna.
protected class MiIteradorGrupoDeAvesZoo implements Iterator <AvesEnZoo> {
//Atributo de la clase.
protected int posicion;
//Constructor.
public MiIteradorGrupoDeAvesZoo() {
posicion=0;
}
//Métodos.
public boolean hasNext() {
boolean result;
if (posicion<grupoDeAvesZoo.length) {result=true;}
else {result=false;}
return result;
}
public AvesEnZoo next() {
AvesEnZoo ave = grupoDeAvesZoo[posicion];
posicion++;
return ave;
}
public void remove() {
throw new UnsupportedOperationException ("No soportado.");
}
}
}
Clase con el método main.
package javaAvanzado;
import java.util.Iterator;
public class MainGrupoDeAvesZoo {
public static void main (String [] args) {
AvesEnZoo aves1 = new AvesEnZoo ("Águilas ", 35, 10, 25);
AvesEnZoo aves2 = new AvesEnZoo ("Buitres", 100, 55, 45);
AvesEnZoo aves3 = new AvesEnZoo ("Halcones", 80, 25, 55);
AvesEnZoo [] avesEnZoo = {aves1, aves2, aves3};
GrupoDeAvesZoo grupoDeAvesZoo = new GrupoDeAvesZoo (avesEnZoo);
Iterator<AvesEnZoo> it = grupoDeAvesZoo.iterator();
System.out.println ("TIPO TOTAL|MACHOS|HEMBRAS");
while (it.hasNext()) {
AvesEnZoo tmp = it.next();
System.out.println (tmp.toString());
}
}
}
¡Saludos!
-
Buenos días.
El ejercicio es correcto.
Podrías simplificar un poco la clase main de la siguiente forma:
import java.util.Iterator;
public class MainGrupoDeAvesZoo {
public static void main (String [] args) {
AvesEnZoo aves1 = new AvesEnZoo ("Águilas ", 35, 10, 25);
AvesEnZoo aves2 = new AvesEnZoo ("Buitres", 100, 55, 45);
AvesEnZoo aves3 = new AvesEnZoo ("Halcones", 80, 25, 55);
AvesEnZoo [] avesEnZoo = {aves1, aves2, aves3};
GrupoDeAvesZoo grupoDeAvesZoo = new GrupoDeAvesZoo (avesEnZoo);
System.out.println ("TIPO TOTAL|MACHOS|HEMBRAS");
for (AvesEnZoo p: avesEnZoo){
System.out.println (p.toString());
}
}
}
y el método next() de la clase MiIteradorGrupoDeAvesZoo podría ser:
public AvesEnZoo next() {
posicion++;
return grupoDeAvesZoo[posicion-1];
}
Un saludo
-
Agradezco tu comentario, ESOJ. Me parecen buenas simplificaciones.
¡Un saludo!