La clase ListaLugares

Ejercicio paso a paso: La clase LugaresLista

En este ejercicio vamos a crear la clase LugaresLista que tiene como finalidad almacenar y gestionar un conjunto de objetos Lugar dentro de una lista.

1.    Dentro del paquete  org.example.mislugares añade la clase LugaresLista,  y  reemplaza el código por el siguiente:
 

public class LugaresLista implements RepositorioLugares {
    protected List listaLugares;

    public LugaresLista() {
        listaLugares = new ArrayList<Lugar>();
      añadeEjemplos();

    }

    public Lugar elemento(int id) {
        return listaLugares.get(id);
    }

    public void añade(Lugar lugar) {
        listaLugares.add(lugar);
    }

    public int nuevo() {
        Lugar lugar = new Lugar();
        listaLugares.add(lugar);
        return listaLugares.size()-1;
    }

    public void borrar(int id) {
        listaLugares.remove(id);
    }

    public int tamaño() {
        return listaLugares.size();
    }
    public void actualiza(int id, Lugar lugar) {
        listaLugares.set(id, lugar);
    }

    public void añadeEjemplos() {
    añade(new Lugar("Escuela Politécnica Superior de Gandía",
            "C/ Paranimf, 1 46730 Gandia (SPAIN)", -0.166093, 38.995656,
            TipoLugar.EDUCACION, 962849300, "http://www.epsg.upv.es",
            "Uno de los mejores lugares para formarse.", 3));
    añade(new Lugar("Al de siempre",
            "P.Industrial Junto Molí Nou - 46722, Benifla (Valencia)",
            -0.190642, 38.925857, TipoLugar.BAR, 636472405, "",
            "No te pierdas el arroz en calabaza.", 3));
    añade(new Lugar("androidcurso.com",
            "ciberespacio", 0.0, 0.0, TipoLugar.EDUCACION,
            962849300, "http://androidcurso.com",
            "Amplia tus conocimientos sobre Android.", 5));
    añade(new Lugar("Barranco del Infierno",
            "Vía Verde del río Serpis. Villalonga (Valencia)",
            -0.295058, 38.867180, TipoLugar.NATURALEZA, 0,
            "http://sosegaos.blogspot.com.es/2009/02/lorcha-villalonga-via-"+
                    "verde-del-rio.html","Espectacular ruta para bici o andar", 4));
    añade(new Lugar("La Vital",
            "Avda. de La Vital, 0 46701 Gandía (Valencia)", -0.1720092,
            38.9705949, TipoLugar.COMPRAS, 962881070,
            "http://www.lavital.es/", "El típico centro comercial", 2));

   }
}
class LugaresLista : RepositorioLugares {
   val listaLugares= mutableListOf<Lugar>()

   override fun elemento(id: Int): Lugar {
      return listaLugares[id]
   }

   override fun añade(lugar: Lugar) {
      listaLugares.add(lugar)
   }

   override fun nuevo(): Int {
      val lugar = Lugar("Nuevo lugar")
      listaLugares.add(lugar)
      return listaLugares.size - 1
   }

   override fun borrar(id: Int) {
      listaLugares.removeAt(id)
   }

   override fun tamaño(): Int {
      return listaLugares.size
   }

   override fun actualiza(id: Int, lugar: Lugar) {
      listaLugares[id] = lugar
   }
} 

2.    Pulsa Alt-Intro e para que se añadan los import de las clases utilizadas.

import java.util.ArrayList;
import java.util.List;

3.    Para Java Añade la siguiente sobrecarga al constructor a la clase Lugar:

public Lugar() {
   fecha = System.currentTimeMillis();
   posicion =  GeoPunto.SIN_POSICION;
   tipo = TipoLugar.OTROS;
}

Esto nos permitirá crear un nuevo lugar sin indicar sus atributos.

4.    Abre la clase  Principal y reemplaza el código del método main() por:

Lugares lugares = new LugaresVector();
for (int i=0; i<lugares.tamanyo(); i++) {
    System.out.println(lugares.elemento(i).toString());
}

5.    Verifica que el resultado es similar al siguiente: