martes, 15 de febrero de 2011

C2, 05/02/11: Ejemplos


  1. Ejemplo 1:

  2. En este ejemplo se define la clase Circulo.java y se utiliza en este sencillo programa Figuras.java.


    ¿Funciona como esperabas?.


    Prueba a jugar con el ejemplo para crear nuevos círculos.



    • Código "circulo.java"


    • //
      // Circulo.java
      // Figuras
      //
      // Created by Oscarin on 11/07/06.
      //

      public class Circulo {
      private final static float PI = 3.141592f;
      private float radio = 0.0f; // Radio por defecto

      // Constructor por defecto
      public Circulo() {};

      /**
      * Devuelve el valor de PI.
      * Se declara static porque accede a un atributo static
      */
      public static float getPI() {
      return PI;
      }

      /**
      * Método static que intercambia dos referencias
      * Las referencias se pasan por valor
      * @param Circulo uno El primer círculo
      * @param Circulo dos El segundo círculo
      */
      public static void intercambia(Circulo uno, Circulo dos) {
      Circulo tmp; // Referencia temporal
      tmp = uno;
      uno = dos;
      dos = tmp;
      }

      /**
      * Función get para leer el radio
      * @return Devuelve el radio del círculo
      */
      public float getRadio() {
      return radio;
      }

      /**
      * Método que cambia el valor del radio.
      * Antes de cambiar el radio comprobamos que no es
      * un valor negativo.
      * @param float radio El nuevo valor para el radio
      */
      public void setRadio(float radio) {
      if(radio >= 0) this.radio = radio;
      }

      /**
      * Devuelve el área del círculo.
      * @return El valor del área.
      */
      public float getArea() {
      return PI*radio*radio;
      }
      }

    • Código "Figuras.java":


    • //
      // Figuras.java
      // Figuras
      //
      // Created by Oscarin on 11/07/06.
      //

      public class Figuras {

      public static void main (String args[]) {
      // No necesitamos crear una instancia para acceder
      // a un método static
      System.out.println("El valor de PI es: " + Circulo.getPI());

      // Creamos una instancia
      Circulo circulo = new Circulo();
      // Cambiamos el valor del radio
      circulo.setRadio(1.0f);
      // Calculamos el valor del area del círculo
      System.out.println("El radio del circulo es: " + circulo.getRadio() + ", y su area es: " + circulo.getArea());

      Circulo otroCirculo = new Circulo();
      otroCirculo.setRadio(2.0f);

      // Mostramos información de los dos círculos
      System.out.println("El primer circulo tiene radio: " + circulo.getRadio());
      System.out.println("Y el segundo circulo tiene radio: " + otroCirculo.getRadio());

      // Ahora intercambiamos las referencias
      Circulo.intercambia(circulo, otroCirculo);

      // Mostramos información de los dos círculos
      System.out.println("El primer circulo tiene radio: " + circulo.getRadio());
      System.out.println("Y el segundo circulo tiene radio: " + otroCirculo.getRadio());

      // !!!!QUE FALLÓ
      }
      }


  3. Ejemplo 2:

  4. Aquí tienes una posible solución al ejercicio de la Agenda telefónica. Descarga el código, construye un proyecto con él, ejecútalo, estúdialo y compáralo con tu propio código.


    • Persona.java

    • Mismo código que en el ejercicio resuelto anteriormente solo que utiliza una sola variable para guardar la información "apellidos".


    • Agenda.java


    • package agenda;

      public class Agenda {
      private static final int MAX_ENTRADAS = 100;
      private Persona entradas[] = new Persona[MAX_ENTRADAS];
      private int cnt = 0;

      public Agenda() {}

      public void nuevaEntrada(Persona nueva) {
      // TODO Aquí debería comprobar si queda espacio en la agenda.
      //MI SOLUCIÓN
      if(cnt== MAX_ENTRADAS){
      System.out.println("No queda espacio en la agenda");
      }
      else{
      entradas[cnt++] = nueva;
      }

      }

      public Persona buscaEntrada(String nombre) {
      Persona encontrado = new Persona("No encontrado", "", "");
      boolean seEncontro = false;
      int cnt = 0;
      while(!seEncontro && cnt < this.cnt) {
      if(entradas[cnt].getNombre().equals(nombre) == true) {
      encontrado = entradas[cnt];
      seEncontro = true;
      }
      cnt++;
      }
      return encontrado;
      }

      public Persona getEntrada(int posicion) {
      // TODO Debería comprobar que la posición está dentro de rango.
      //MI SOLUCIÓN
      Persona overRange = new Persona("La posición a la que intentas acceder está fuera de rango","","");
      if(posicion > MAX_ENTRADAS){
      return overRange;
      }
      else{
      return entradas[posicion];
      }

      }

      public int getNumeroEntradas() {
      return cnt;
      }
      }

    • Juega.java


    • package agenda;


      public class Juega {
      private Agenda agenda = new Agenda();
      private Juega(){}

      private void ejecuta() {
      agenda.nuevaEntrada(new Persona("Oscar", "Belmonte", "1"));
      System.out.println("Numero entradas: " + agenda.getNumeroEntradas());
      Persona tmp = agenda.buscaEntrada("Oscar");
      System.out.println("Nombre: " + tmp.getNombre());
      System.out.println("Apellidos: " + tmp.getApellidos());
      System.out.println("Telefono: " + tmp.getTelefono());
      }

      public static void main(String[] args) {
      new Juega().ejecuta();
      }

      }


  5. Ejemplo 3:

  6. Esta biblioteca de utilidades generadorNombres.jar te permite generar nombres, apellidos y otros datos de manera aleatoria para que no tengas que introducirlos por teclado.



    Su uso es muy sencillo, una vez que has añadido la biblioteca a tu proyecto, sólo tienes que crear una instancia de la clase GeneradorDatosINE quien es la que te proporcionará los métodos de utilidad tales como:


    • public String getNombre();

    • public String getApellidos();

    • ...


No hay comentarios:

Publicar un comentario