Autor Tema: Java Interface Iterable método Iterator Recorrer colecciones Ejercicio CU00915C  (Leído 3028 veces)

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Buenas.

Esta es mi solución al ejercicio de la entrega CU00915C del curso Lenguaje de Programación Java Nivel Avanzado I.

Citar
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.
Código: [Seleccionar]
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.
Código: [Seleccionar]
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.
Código: [Seleccionar]
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!
« Última modificación: 16 de Enero 2017, 19:50 por Ogramar »

ESOJ

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 143
    • Ver Perfil
Re:Ejercicio de la entrega CU00915C Java Nivel Avanzado I
« Respuesta #1 en: 30 de Diciembre 2016, 06:54 »
Buenos días.

El ejercicio es correcto.

Podrías simplificar un poco la clase main de la siguiente forma:
Código: [Seleccionar]
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:
Código: [Seleccionar]
public AvesEnZoo next() {         
            posicion++;
            return grupoDeAvesZoo[posicion-1];
        }

Un saludo

Erik_Escriche

  • Principiante
  • **
  • Mensajes: 65
    • Ver Perfil
Re:Ejercicio de la entrega CU00915C Java Nivel Avanzado I
« Respuesta #2 en: 30 de Diciembre 2016, 20:04 »
Agradezco tu comentario, ESOJ. Me parecen buenas simplificaciones.

¡Un saludo!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".