lunes, 27 de enero de 2014

Unidad 2 Ejercicio 79: Clase llamada (con clase hora)

79.- Programar una clase de nombre Llamada que guardará la información relativa a una llamada telefónica. Tendrá las siguientes propiedades y métodos:

Propiedades: (todas ellas privadas)
String numeroTelefono;
Hora comienzoLlamada;
Hora finLlamada;

Métodos de la clase (públicos):

- Método constructor por defecto que no haga nada.
- Método constructor que reciba tres argumentos de tipo (String, Hora, Hora) y se los asigne a las propiedades de la clase.
- Método de nombre escribeHoraComienzo que visualice el valor de la propiedad comienzoLLamada con  el formato: 13:25:13.
- Método de nombre escribeHoraFin que visualice el valor de la propiedad finLLamada con  el mismo formato que el método anterior.
- Método de nombre duraciónLlamada que devuelva en segundos la duración de la llamada. Si la hora de finalización es inferior a la hora de comienzo de la llamada el método devolverá -1.
- Métodos set y get para todas las propiedades.



package unidad2ejercicio79;

/**
*
* @author Juan
*/
public class Unidad2Ejercicio79 {


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

                Llamada llamada1;
Hora horaComienzo;
Hora horaFinal;

horaComienzo = new Hora(22, 15, 0);
horaFinal = new Hora(22, 16, 30);
llamada1 = new Llamada("692567833", horaComienzo, horaFinal);

System.out.println("Hora de comienzo: ");
llamada1.escribeHoraComienzo();
System.out.println("Hora de finalización: ");
llamada1.escribeHoraFin();

System.out.println("Duración de la llamada: ");
System.out.println(llamada1.duracionLlamada());

//modificamos la hora de finalización:
horaFinal.setSegundos(35);
System.out.println("Duración de la llamada: ");
System.out.println(llamada1.duracionLlamada());
               
             
               

   
    }
}



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad2ejercicio79;

/**
*Clase para controlar horas
* @author Juan
*/
public class Hora {
    private int horas;
    private int minutos;
    private int segundos;

    /**
     * Crea un objeto de la clase hora al que le pasamos las horas minutos y segundos, si no son correctos
     * inicializa el objeto a todo cero
     * @param horas
     * parámetro horas debe estar entre 0 y 24
     * @param minutos
     * se le pasan los minutos  que deben estar entre 1 y 60
     * @param segundos
     * se le pasan los segundos q deben estar entre 1 y 60
     */
    public Hora(int horas, int minutos, int segundos) {
        if ( horas>=0 && horas<=24 && minutos>=0 && minutos<=60 && segundos >=0 && segundos<=60)
        {   this.horas = horas;
            this.minutos = minutos;
            this.segundos = segundos;
        }
        else{
            this.horas = 0;
            this.minutos = 0;
            this.segundos = 0;
        }
    }

    /**
     *
     */
    public Hora() {
        this.horas = 0;
        this.minutos = 0;
        this.segundos = 0;
    }

    /**
     *
     * @return
     */
    public int getHoras() {
        return horas;
    }

    /**
     *
     * @param horas
     */
    public void setHoras(int horas) {
        if ( horas>=0 && horas<=24)  this.horas = horas;
        else this.horas=0;
    }

    /**
     *
     * @return
     */
    public int getMinutos() {
        return minutos;
    }

    /**
     *
     * @param minutos
     */
    public void setMinutos(int minutos) {
         if (  minutos>=1 && minutos<=60 )
            {  
            this.minutos = minutos;
            }
         else this.minutos = 0;
    }

    /**
     *
     * @return
     */
    public int getSegundos() {
        return segundos;
    }

    /**
     *
     * @param segundos
     */
    public void setSegundos(int segundos) {
        if (  segundos>=1 && segundos<=60 )
            {  
            this.segundos = segundos;
            }
         else this.segundos = segundos;
    }
   
    /**
     * Cambia las propiedades de un objeto de la clase hora al que le pasamos las horas minutos y segundos, si no son correctos
     * inicializa el objeto a todo cero
     * @param horas
     * parámetro horas debe estar entre 0 y 24
     * @param minutos
     * se le pasan los minutos  que deben estar entre 1 y 60
     * @param segundos
     * se le pasan los segundos q deben estar entre 1 y 60
     */
    public void setHora(int horas, int minutos, int segundos)
    {
         if ( horas>=0 && horas<=24 && minutos>=0 && minutos<=60 && segundos >=0 && segundos<=60)
        {   this.horas = horas;
            this.minutos = minutos;
            this.segundos = segundos;
        }
        else{
            this.horas = 0;
            this.minutos = 0;
            this.segundos = 0;
        }
    }
  
   
    public void visualizaHora(){
          System.out.println(horas+":"+minutos+":"+segundos);
   
    }
   
    public int horaEnSegundos(){
        return (horas*3600+minutos*60+segundos);
    }
}


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package unidad2ejercicio79;

/**
*
* @author juan
*/
public class Llamada {
    private String numeroTelefono;
    private Hora comienzoLlamada;
    private Hora finLlamada;

    public Llamada() {
    }

    public Llamada(String numeroTelefono, Hora comienzoLlamada, Hora finLlamada) {
        this.numeroTelefono = numeroTelefono.trim();
        this.comienzoLlamada = comienzoLlamada;
        this.finLlamada = finLlamada;
    }

    public void setComienzoLlamada(Hora comienzoLlamada) {
        this.comienzoLlamada = comienzoLlamada;
    }

    public void setFinLlamada(Hora finLlamada) {
        this.finLlamada = finLlamada;
    }
   
    public void escribeHoraComienzo(){
        System.out.println(comienzoLlamada.getHoras()+":"+comienzoLlamada.getMinutos()+":"+comienzoLlamada.getSegundos());
    }
   
    public void escribeHoraFin(){
        finLlamada.visualizaHora();
    }
   
    public int duracionLlamada(){
        int duracion;
        duracion=finLlamada.horaEnSegundos()-comienzoLlamada.horaEnSegundos();
        if (duracion<0) duracion =-1;
        return duracion;
    }

    public String getNumeroTelefono() {
        return numeroTelefono;
    }

    public void setNumeroTelefono(String numeroTelefono) {
        this.numeroTelefono = numeroTelefono;
    }

  
   
   

}