lunes, 14 de febrero de 2011

C2, 05/02/11: Ejercicios

  1. Ejercicio 1

  2. En tu aplicación, una Persona va a estar caracterizada por los siguientes atributos:


    • Nombre.

    • Apellidos.

    • Número de teléfono.

    Crea una clase que contenga estos datos. Crea, además el constructor por defecto para esta clase, un constructor que reciba el valor de todos los atributos como parámetros, y finalmente los métodos para acceder (setters y getters) a cada uno de los atributos de la clase.



    Solución:




    package agenda;

    /**
    * Esta clase define una persona
    * @author Luis Peris Gil
    * @version 1.0, 5 de Febrero de 2011
    */


    public class Persona {

    private String nombre;
    private String apellido1;
    private String apellido2;
    private String telefono;

    /**
    * Constructor por defecto
    */
    public Persona(){
    nombre = "";
    apellido1 = "";
    apellido2 = "";
    telefono = "";
    }

    /**
    * Constructor con argumentos
    */
    public Persona(String nombre, String apellido1, String apellido2, String telefono){
    this.nombre = nombre;
    this.apellido1 = apellido1;
    this.apellido2 = apellido2;
    this.telefono = telefono;

    }

    /**
    * Devuelve el nombre de la persona
    * @return nombre de la persona
    */
    public String getNombre(){
    return nombre;
    }

    /**
    * Devuelve el primer apellido de la persona
    * @return apellido1 de la persona
    */
    public String getApellido1(){
    return apellido1;
    }

    /**
    * Devuelve el segundo apellido de la persona
    * @return apellido2 de la persona
    */
    public String getApellido2(){
    return apellido2;
    }
    /**
    * Devuelve el teléfono de la persona
    * @return telefono de la persona
    */
    public String getTelefono(){
    return telefono;
    }

    /**
    * Actualiza el nombre de la persona
    * @param nombre Nombre de la persona
    */
    public void setNombre(String nombre){
    this.nombre = nombre;
    }

    /**
    * Actualiza el primer apellido de la persona
    * @param apellido1 El primer apellido de la persona
    */
    public void setApellido1(String apellido1){
    this.apellido1 = apellido1;
    }

    /**
    * Actualiza el segundo apellido de la persona
    * @param apellido2 El segundo apellido de la persona
    */
    public void setApellido2(String apellido2){
    this.apellido2 = apellido2;
    }

    /**
    * Actualiza el telefono de la persona
    * @param apellido1 El telefono de la persona
    */
    public void setTelefono(String telefono){
    this.telefono = telefono;
    }
    }

  3. Ejercicio 2

  4. Escribe un programa en Java para gestionar una agenda telefónica (class Agenda). La agenda está constituída por una serie de entradas (class Persona) que representan personas en la agenda, con la siguiente información: nombre, apellidos y número de teléfono, todos ellos de tipo String. El número de entradas en la agenda es fijo, por ejemplo 100.



    En la agenda se puede:


    • Introducir una nueva entrada.

    • Buscar una entrada a partir del nombre.

    • Listar todas las entradas de la agenda.

    Para leer datos de entrada desde el teclado utiliza la siguiente clase: Teclado.java



    Código "Teclado.java":



    package agenda;

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;

    public class Teclado {
    private static final BufferedReader teclado =
    new BufferedReader(new InputStreamReader(System.in));

    public static String leeString() {
    String linea = null;

    try {
    linea = teclado.readLine();
    }
    catch(IOException e) {
    muestra("Error leyendo una cadena de entrada.");
    }

    return linea;
    }

    public static int leeEntero() {
    int entero = 0;
    String linea = leeString();

    if(linea != null) entero = Integer.parseInt(linea);

    return entero;
    }

    public static float leeFloat() {
    float real = 0.0f;
    String linea = leeString();

    if(linea != null) real = Float.parseFloat(linea);

    return real;
    }

    public static double leeDouble() {
    double real = 0.0;
    String linea = leeString();

    if(linea != null) real = Double.parseDouble(linea);

    return real;
    }

    private static void muestra(String linea) {
    System.err.println(linea);
    }
    }

    Solución:


    • Agenda.java


    • package agenda;


      /**
      * Esta clase implementa una agenda de personas
      * @author Luis Peris Gil
      * @version 1.0, 5 de Febrero de 2011
      */

      public class Agenda {

      private Persona personas[]= new Persona[100];
      private int numeroPersonas = 0;

      public Agenda(){
      super();
      }

      /**
      * Método que añade una persona a la agenda
      * @param nuevaPersona Persona que se añade
      */
      public void nuevaPersona(Persona nuevaPersona){
      personas[numeroPersonas++] = nuevaPersona;
      }

      /**
      * Método que busca una persona en la agenda a partir del nombre
      * @param nombre El nombre de la persona a buscar
      * @return Persona encontrada o persona vacía
      */
      public Persona buscaPorNombre(String nombre){

      for(int i = 0; i< numeroPersonas; i++){
      if(personas[i].getNombre().equals(nombre))
      return personas[i];
      }
      return new Persona("No existe nadie con el nombre: "+ nombre,"","","");

      }

      /**
      * Método que devuelve una Persona dada una posición
      * @param posicion
      * @return Persona de la posición suministrada
      */
      public Persona getPersonaPosicion(int posicion){
      return personas[posicion];
      }

      /**
      * Método que devuelve cuantas personas hay en la agenda
      * @return numeroPersonas
      */
      public int getNumeroPersonas(){
      return numeroPersonas;
      }
      }

    • Menu.java


    • package agenda;
      /**
      * Esta clase implementa el Menú Principal de la agenda de Personas
      * @author Luis Peris Gil
      * @version 1.0, 5 de Febrero de 2011
      */
      public class Menu {
      Agenda agenda = new Agenda();

      private Menu(){
      super();
      }
      /**
      * Método que añade una persona a la agenda
      */
      public void introduceContacto(){
      System.out.println("Nombre: ");
      String nombre = Teclado.leeString();
      System.out.println("Primer Apellido: ");
      String apellido1= Teclado.leeString();
      System.out.println("Segundo Apellido: ");
      String apellido2 = Teclado.leeString();
      System.out.println("Teléfono: ");
      String telefono = Teclado.leeString();

      Persona persona = new Persona(nombre, apellido1, apellido2, telefono);
      agenda.nuevaPersona(persona);
      System.out.println("Contacto almacenado");
      }
      /**
      * Método que busca una persona en la agenda
      */
      public void buscaContacto(){
      if(agenda.getNumeroPersonas()== 0)
      System.out.println("Todavia no has registrado a nadie en la agenda");
      else{
      System.out.println("Nombre: ");
      String nombre = Teclado.leeString();
      Persona encontrada = new Persona();
      encontrada = agenda.buscaPorNombre(nombre);
      System.out.println("Nombre:" + encontrada.getNombre());
      System.out.println("Primer Apellido: " + encontrada.getApellido1());
      System.out.println("Segundo Apellido: " + encontrada.getApellido2());
      System.out.println("Teléfono: "+ encontrada.getTelefono());

      }
      }
      /**
      * Método que lista las personas que hay en la agenda
      */
      public void listaAgenda(){
      if(agenda.getNumeroPersonas()== 0)
      System.out.println("Todavia no has registrado a nadie en la agenda");
      else{
      int numeroPersonas = agenda.getNumeroPersonas();
      for(int i = 0; i<numeroPersonas;i++){
      Persona actual = agenda.getPersonaPosicion(i);
      System.out.println("Nombre: " + actual.getNombre());
      System.out.println("Primer Apellido: " + actual.getApellido1());
      System.out.println("Segundo Apellido: " + actual.getApellido2());
      System.out.println("Teléfono: " + actual.getTelefono());
      }
      }
      }

      /**
      * Método imprime texto de despedida
      */
      public void adios(){
      System.out.println("Hasta la próxima");
      }
      /**
      * Método que ejecuta la acción introducida por el usuario.
      */
      private void ejecuta(){
      int opcion = 0;

      do{

      System.out.println("Por favor elige una de las siguientes opciones:");
      System.out.println("1 - Contacto Nuevo");
      System.out.println("2 - Buscar Contacto");
      System.out.println("3 - Mostrar Todos los Contactos");
      System.out.println("4 - Salir de la aplicación");
      opcion = Teclado.leeEntero();

      switch (opcion) {
      case 1:
      introduceContacto();
      break;
      case 2:
      buscaContacto();
      break;
      case 3:
      listaAgenda();
      break;
      case 4:
      adios();
      break;
      default:
      System.out.println("La opción introducida no es valida. Vuelva a intentarlo");
      break;
      }
      }while(opcion!=5);

      }
      /**
      * Método Principal de la aplicación
      */
      public static void main(String[] args) {
      new Menu().ejecuta();
      }
      }

    • Ejercicio 3

    • Amplía tu proyecto para que muestre los datos de la agenda en formato XML
      utilizando las etiquetas del siguiente ejemplo: miAgenda.xml. Y aquí tienes el fichero para aplicar estilo de tabla al xml agenda.xsl.


      "agenda.xml":







      Oscar
      Belmonte Fernandez
      1234567


      James
      Gosling
      7654321


      Bill
      Joy
      24680



      Código "agenda.xsl":














      Agenda





      NombreApellido 1 Apellido 2Telefono















      Respecto al ejercicio anterior tan solo modificaremos el fichero "Menu.java", donde crearemos un método para generar el código XML, y la llamada a este método.

      Menu.java



      package agenda;
      /**
      * Esta clase implementa el Menú Principal de la agenda de Personas
      * @author Luis Peris Gil
      * @version 1.0, 5 de Febrero de 2011
      */
      public class Menu {
      Agenda agenda = new Agenda();

      private Menu(){
      super();
      }
      /**
      * Método que añade una persona a la agenda
      */
      public void introduceContacto(){
      System.out.println("Nombre: ");
      String nombre = Teclado.leeString();
      System.out.println("Primer Apellido: ");
      String apellido1= Teclado.leeString();
      System.out.println("Segundo Apellido: ");
      String apellido2 = Teclado.leeString();
      System.out.println("Teléfono: ");
      String telefono = Teclado.leeString();

      Persona persona = new Persona(nombre, apellido1, apellido2, telefono);
      agenda.nuevaPersona(persona);
      System.out.println("Contacto almacenado");
      }
      /**
      * Método que busca una persona en la agenda
      */
      public void buscaContacto(){
      if(agenda.getNumeroPersonas()== 0)
      System.out.println("Todavia no has registrado a nadie en la agenda");
      else{
      System.out.println("Nombre: ");
      String nombre = Teclado.leeString();
      Persona encontrada = new Persona();
      encontrada = agenda.buscaPorNombre(nombre);
      System.out.println("Nombre:" + encontrada.getNombre());
      System.out.println("Primer Apellido: " + encontrada.getApellido1());
      System.out.println("Segundo Apellido: " + encontrada.getApellido2());
      System.out.println("Teléfono: "+ encontrada.getTelefono());

      }
      }
      /**
      * Método que lista las personas que hay en la agenda
      */
      public void listaAgenda(){
      if(agenda.getNumeroPersonas()== 0)
      System.out.println("Todavia no has registrado a nadie en la agenda");
      else{
      int numeroPersonas = agenda.getNumeroPersonas();
      for(int i = 0; i Persona actual = agenda.getPersonaPosicion(i);
      System.out.println("Nombre: " + actual.getNombre());
      System.out.println("Primer Apellido: " + actual.getApellido1());
      System.out.println("Segundo Apellido: " + actual.getApellido2());
      System.out.println("Teléfono: " + actual.getTelefono());
      }
      }
      }

      /**
      * Método que muestra la lista de personas que hay en la agenda codificado en XML
      */
      public void muestraXML(){
      if(agenda.getNumeroPersonas()== 0)
      System.out.println("Todavia no has registrado a nadie en la agenda");
      else{
      System.out.println("");
      System.out.println("");
      System.out.println("");
      int numeroPersonas = agenda.getNumeroPersonas();
      for (int i = 0; i Persona actual = agenda.getPersonaPosicion(i);
      System.out.println("");
      System.out.println("");
      System.out.println(actual.getNombre());
      System.out.println("
      ");
      System.out.println("");
      System.out.println(actual.getApellido1());
      System.out.println("
      ");
      System.out.println("");
      System.out.println(actual.getApellido2());
      System.out.println("
      ");
      System.out.println("");
      System.out.println(actual.getTelefono());
      System.out.println("
      ");
      System.out.println("
      ");
      }
      System.out.println("
      ");
      }
      }

      /**
      * Método imprime texto de despedida
      */
      public void adios(){
      System.out.println("Hasta la próxima");
      }
      /**
      * Método que ejecuta la acción introducida por el usuario.
      */
      private void ejecuta(){
      int opcion = 0;

      do{

      System.out.println("Por favor elige una de las siguientes opciones:");
      System.out.println("1 - Contacto Nuevo");
      System.out.println("2 - Buscar Contacto");
      System.out.println("3 - Mostrar Todos los Contactos");
      System.out.println("4 - Salir de la aplicación");
      opcion = Teclado.leeEntero();

      switch (opcion) {
      case 1:
      introduceContacto();
      break;
      case 2:
      buscaContacto();
      break;
      case 3:
      listaAgenda();
      break;
      case 5:
      muestraXML();
      break;
      case 4:
      adios();
      break;
      default:
      System.out.println("La opción introducida no es valida. Vuelva a intentarlo");
      break;
      }
      }while(opcion!=5);

      }
      /**
      * Método Principal de la aplicación
      */
      public static void main(String[] args) {
      new Menu().ejecuta();
      }
      }

      Ahora solo copiaremos el código generado en un fichero al que le daremos la extensión ".xml", lo guardaremos en la misma carpeta que el fichero "agenda.xsl" y lo ejecutaremos desde un navegador para ver el resultado.




No hay comentarios:

Publicar un comentario