viernes, 31 de enero de 2014

Unidad 2 Ejercicio 81: teléfonos y tiempos

81. Programar una clase de nombre TarjetaPrepago que permita interactuar con la información de una tarjeta de telefonía móvil de prepago. Esta clase tendrá las siguientes propiedades, métodos y constructores:

Propiedades privadas:

- numeroTeléfono, nif de tipo String.
- saldo de tipo double (en euros).
- consumo de tipo Tiempo. Tiempo es una clase que hay que declarar, y que solamente tendrá 2 propiedades de tipo int con los nombres minutos y segundos.


Constructores:


- Constructor por defecto que no haga nada
- Constructor al que se le pasen como argumentos valores para las propiedades numeroTelefono, nif y saldo.

Métodos públicos:

- ingresarSaldo: le añade al saldo una cantidad de dinero.
- enviarMensaje: se le pasa como argumento un int que representa un número de mensajes, y se le restará al saldo a un valor de 9 céntimos el mensaje.
- llamadaRealizada: se le pasa un int que representa el número de segundos hablados. Se le restará al saldo la cantidad correspondiente calculada en base a 15 céntimos por establecimiento de llamada y 1 céntimo por segundo. También se actualizará la propiedad consumo.

- consultarTelefono, consultarNif……. devolverá cada uno de ellos el valor de su propiedad.
- establecerTelefono, establecerNif, establecerSaldo: asignará cada uno de ellos el valor de su propiedad.
- consultarNúmero: visualizará todos los datos del cliente.

package unidad2ejercicio81;

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

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        TarjetaPrepago mitarjeta;
        Tiempo t = new Tiempo();
       
        mitarjeta = new TarjetaPrepago("988988988","11111111A",100);
        System.out.println("___________________________________");
        System.out.println("Datos Iniciales:");
        mitarjeta.consultarNumero();
       
        mitarjeta.enviarMensaje(100);
         System.out.println("Enviados 100 mensajes:");
        mitarjeta.consultarNumero();
       
       mitarjeta.llamadaRealizada(2000);
        System.out.println("LLamada 2000 segundos:");
        mitarjeta.consultarNumero();
       
        mitarjeta.ingresarSaldo(100);
        System.out.println("Ingresados 100 euros:");   
        System.out.println(mitarjeta.consultarConsumo());
       
    }
}

package unidad2ejercicio81;

/**
*
* @author Juan
*/
public class Tiempo {
    private int minutos;
    private int segundos;

    public Tiempo(int minutos, int segundos) {
        if (minutos>=0) this.minutos=minutos;
            else this.minutos = 0;
        if (segundos<60 && segundos>=0) this.segundos=segundos;
            else this.segundos = 0;
       
    }

    public Tiempo() {
        minutos=0;
        segundos=0;
    }
   
    public void visualizaTiempo(){
        System.out.println(minutos+":"+segundos);
    }
   
   

    public int getMinutos() {
        return minutos;
    }

    public void setMinutos(int minutos) {
        if (minutos>=0) this.minutos=minutos;
            else this.minutos = 0;
    }

    public int getSegundos() {
        return segundos;
    }

    public void setSegundos(int segundos) {
        if (segundos<60 && segundos>=0) this.segundos=segundos;
            else this.segundos = 0;
     
    }
   
   
}


package unidad2ejercicio81;

/**
*
* @author Juan
*/
public class TarjetaPrepago {
    private String telf;
    private String nif;
    private double saldo;
    private Tiempo consumo;

   
    public void consultarNumero(){
        System.out.println("");
        System.out.println("CONSULTA DE NÚMERO");
        System.out.println("======== == ======");
        System.out.println("Teléfono: "+telf);
        System.out.println("NIF: "+nif);
        System.out.println("Saldo: "+ saldo);
        System.out.println("Consumo: "+consumo.getMinutos()+":"+consumo.getSegundos());
        System.out.print("Consumo (con visualiza): ");
        consumo.visualizaTiempo();
        System.out.println("___________________________________");
    }
    public TarjetaPrepago() {
    }

    public TarjetaPrepago(String telf, String nif, double saldo) {
        this.telf = telf;
        this.nif = nif;
        if (saldo<0) this.saldo=0;
            else this.saldo = saldo;
        consumo= new Tiempo();
    }
   
    public double ingresarSaldo(double saldo){
        if (saldo>0) this.saldo+=saldo;
       
        return this.saldo;
    }
   
    public double enviarMensaje(int cantidad){
        if (cantidad>0) saldo=saldo-(cantidad*0.09);
        return saldo;
    }
   
    /*
     * - llamadaRealizada: se le pasa un int que representa el número de
     * segundos hablados. Se le restará al saldo la cantidad correspondiente
     * calculada en base a 15 céntimos por establecimiento de llamada y
     * 1 céntimo por segundo. También se actualizará la propiedad consumo.
     */
   
    public Tiempo llamadaRealizada(int segundosHablados){
        int minutos=0, segundos=0;
       
        if (segundosHablados>0)
        {
            saldo=saldo - (0.15 + segundosHablados/100);
           
          
            if (segundosHablados>=60)
                {
                segundos= segundosHablados%60;
                minutos=segundosHablados/60;
                }
              else segundos = segundosHablados;
            consumo.setMinutos(consumo.getMinutos()+minutos);
            consumo.setSegundos(consumo.getSegundos()+segundos);
        }
       
        return consumo;
    }

    public Tiempo consultarConsumo() {
        return consumo;
    }


    public String consultarNif() {
        return nif;
    }

    public void establecerNif(String nif) {
        this.nif = nif;
    }

    public double consultarSaldo() {
        return saldo;
    }

    public void establecerSaldo(double saldo) {
        this.saldo = saldo;
    }

    public String consultarTelf() {
        return telf;
    }

    public void establecerTelf(String telf) {
        this.telf = telf;
    }
   
   
}