Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
Cargando

Autor Tema: Calcular llamadas  (Leído 606 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Duende

  • Residente de Hack x Crack [L4]
  • ****
  • Topic Author
  • Mensajes: 473
  • /home/duende
    • Ver Perfil
Calcular llamadas
« en: Junio 17, 2012, 02:36:48 pm »
Hola a tod@s tengo una duda sobre como puedo calcular la suma total de las llamadas. No se como lo puedo hacer, ¿me podeis dejar algunas sujerencias?. Saludos

Código: [Seleccionar]

public class Centralita
{
//Atributos
private int numeroLlamadas;
private double costeLlamadas;

//Constructor
public Centralita(int numeroLlamadas, double costeLlamadas)
{
this.numeroLlamadas= numeroLlamadas;
this.costeLlamadas = costeLlamadas;
}
public Centralita()
{

}
//Getters
public int getNumeroLlamadas()
{
return numeroLlamadas;
}
public double getCosteLlamadas()
{
return costeLlamadas;
}
//Resto de metodos
public void numeroTotalLlamada(int numeroLlamadas)
{
this.numeroLlamadas = numeroLlamadas;
}
public void costeTotalLlamadas(double costeLlamadas)
{
this.costeLlamadas = costeLlamadas;
}
public void registrarLlamadas(LlamadasLocales llamada1)
{
this.numeroLlamadas = numeroLlamadas + 1;
}
public void registrarLlamadas(LlamadasProvinciales llamada2)
{
this.numeroLlamadas = numeroLlamadas + 1;
}
public void informe()
{
System.out.println ("Lista de llamadas realizas");
System.out.println("Número total de llamadas: " + getNumeroLlamadas());
System.out.println("Facturación total: " + getCosteLlamadas());
}
}

Código: [Seleccionar]

public abstract class Llamada
{
//Atributos
private String numeroOrigen;
private String numeroDestino;
private double duracion;

//Constructor
public Llamada(String param1, String param2, double param3)
{
this.numeroOrigen = param1;
this.numeroDestino = param2;
this.duracion = param3;
}

//Getters
public String getNumeroOrigen()
{
return numeroOrigen;
}
public String getNumeroDestino()
{
return numeroDestino;
}
public double getDuracion()
{
return duracion;
}
public String setNumeroOrigen()
{
return numeroOrigen;
}
public String setNumeroDestino()
{
return numeroDestino;
}
public double setDuracion()
{
return duracion;
}
//Resto de metodos
public abstract double calcularPrecio(double param3);
{

}
}

Código: [Seleccionar]


public class LlamadasLocales extends Llamada
{
//Atributos
private double precio;
//Constructores
public LlamadasLocales(String param1, String param2, int param3)
{
super(param1, param2, param3);
this.precio = 0.15;
}

//Getters
public double getPrecio()
{
return precio;
}
//Resto de metodos
public double calcularPrecio(double param3)
{
return getDuracion() * precio;
}
public void llamadaLocal()
{
System.out.println("Llamadas locales" + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino()
+ " Duracion: " + getDuracion() + " Precio: " + getPrecio() + " Total: " + calcularPrecio(precio));
}
}

Código: [Seleccionar]

public class LlamadasProvinciales extends Llamada
{
//Atributos
private double precio1;
private double precio2;
private double precio3;
private int franja;
//Constructores
public LlamadasProvinciales(String param1, String param2, int param3, int param4)
{
super(param1, param2, param3);
this.precio1 = 0.20;
this.precio2 = 0.25;
this.precio3 = 0.30;
this.franja = 0;
}
//Resto de metodos
public double calcularPrecio(LlamadasProvinciales param1, LlamadasProvinciales param2, LlamadasProvinciales param3)
{
if (franja==1)
{
System.out.println("El precio de la franja1 es: " + getDuracion() * precio1);
} else
if (franja==2)
{
System.out.println("El precio de la franja2 es: " + getDuracion() * precio2);
}
else
System.out.println("El precio de la franja3 es: " + getDuracion() * precio3);
return franja;
}
public void llamadaProvincial()
{
System.out.println("Llamadas provinciales: " + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino() + " Duracion: " + getDuracion() + franja);
}

public double calcularPrecio(double param3)
{
return getDuracion() * precio1;
}
}


Código: [Seleccionar]

public class Actividad4
{
public static void main(String[] args)
{
Centralita centralita1 = new Centralita();
LlamadasLocales llamada1 = new LlamadasLocales("912345612", "9555612301", 67);
LlamadasLocales llamada2 = new LlamadasLocales("9555612301", "912345612", 23);
LlamadasProvinciales llamada3 = new LlamadasProvinciales("955555", "123444", 12, 2);
LlamadasProvinciales llamada4 = new LlamadasProvinciales("123444", "955555", 23, 1);

centralita1.registrarLlamadas(llamada1);
llamada1.llamadaLocal();
centralita1.registrarLlamadas(llamada2);
llamada2.llamadaLocal();
centralita1.registrarLlamadas(llamada3);
llamada3.llamadaProvincial();
centralita1.registrarLlamadas(llamada4);
llamada4.llamadaProvincial();
centralita1.informe();

}
}


Desconectado dreams_eater

  • Conociendo la comunidad [L2]
  • **
  • Mensajes: 117
    • Ver Perfil
Re:Calcular llamadas
« Respuesta #1 en: Junio 18, 2012, 07:08:01 am »
Lo que voy ha hacer a continuación esta basado en lo que se llama el Patrón DAO:
Primero craeas un interface, esto te va ha permitir ponerlos en "algo" iterable:
Código: [Seleccionar]

public interface Llamadable
{
    public String getNumeroOrigen();
    public String getNumeroDestino();
    public double getDuracion();
    public String setNumeroOrigen();
    public String setNumeroDestino();
    public double setDuracion();
    public void imprimirInforme();
    public abstract double calcularPrecio();
}


Luego ponemos la clase abstracta (que es una copia de llamada): Donde pones el codigo que pienzas que se va ha repetir.

Código: [Seleccionar]
public abstract class LlamadaGeneral
{
    //Atributos
    private String numeroOrigen;
    private String numeroDestino;
    private double duracion;

    //Constructor
    public Llamada(String param1, String param2, double param3)
    {
        this.numeroOrigen = param1;
        this.numeroDestino = param2;
        this.duracion = param3;
    }
   
    //Getters
    public String getNumeroOrigen()
    {
        return numeroOrigen;
    }
    public String getNumeroDestino()
    {
        return numeroDestino;
    }
    public double getDuracion()
    {
        return duracion;
    }
    public String setNumeroOrigen()
    {
        return numeroOrigen;
    }
    public String setNumeroDestino()
    {
        return numeroDestino;
    }
    public double setDuracion()
    {
        return duracion;
    }
}

Ahora heredamos pero implementamos a llamable, es decir implementamos lo que realmente vamos a usar.
Código: [Seleccionar]
public class LlamadasLocales extends LlamadaGeneral implements Llamable
{
    //Atributos
    private double precio;
    //Constructores
    public LlamadasLocales(String param1, String param2, int param3)
    {
        super(param1, param2, param3);
        this.precio = 0.15;
    }
   
    //Getters
    public double getPrecio()
    {
        return precio;
    }
    //Resto de metodos
    public double calcularPrecio()
    {
        return getDuracion() * precio;
    }
    public void imprimirInforme()
    {
        System.out.println("Llamadas locales" + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino()
        + " Duracion: " + getDuracion() + " Precio: " + getPrecio() + " Total: " + calcularPrecio());
    }
}

Lo mismo para las llamadas provinciales
Código: [Seleccionar]
public class LlamadasProvinciales extends LlamadaGeneral implements Llamable
{
    //Atributos
    private double precio1;
    private double precio2;
    private double precio3;
    private int franja;
    //Constructores
    public LlamadasProvinciales(String param1, String param2, int param3, int param4)
    {
        super(param1, param2, param3);
        this.precio1 = 0.20;
        this.precio2 = 0.25;
        this.precio3 = 0.30;
        this.franja = 3;   
    }
    //Resto de metodos
    public double calcularPrecio()
    {
        if (franja==1)
        {
                System.out.println("El precio de la franja1 es: " + getDuracion() * precio1);
                 return getDuracion() * precio1;
        } else
            if (franja==2)
                {
                System.out.println("El precio de la franja2 es: " + getDuracion() * precio2);
                return  getDuracion() * precio2;
                }
            else
                System.out.println("El precio de la franja3 es: " + getDuracion() * precio3);
        return getDuracion() * precio3;
        }
    public void imprimirInforme()
    {
        System.out.println("Llamadas provinciales: " + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino() + " Duracion: " + getDuracion() + franja);
    }
   

}

Ahora  no nesitamos la clase centralita. cuando tenemos a la marabillosa lista.
Código: [Seleccionar]
public class Actividad4 
{
    public static void main(String[] args)
    {
       
      List<Llamable> centralita = new ArrayList<Llamable>();
        Llamable llamada1 = new LlamadasLocales("912345612", "9555612301", 67);
        Llamable llamada2 = new LlamadasLocales("9555612301", "912345612", 23);
        Llamable llamada3 = new LlamadasProvinciales("955555", "123444", 12, 2);
        Llamable llamada4 = new LlamadasProvinciales("123444", "955555", 23, 1);
        centralita.add(llamada1);
      centralita.add(llamada2);
      centralita.add(llamada3);
      centralita.add(llamada4);
      System.out.println("La cantidad de llamadas en la centralita es: " + centralita.size() );
      double precio= 0.0;
      for(Llamable unaLlamada : centralita){
         precio += unaLlamada.calcularPrecio();
      }
      System.out.println("El precio total en las llamadas es: "+precio);
       
    }
}


La clasa list y Arraylist es una java.util.List y java.util.ArrayList.

Todo esto no lo compile.
Habisames si no entendes algo.

Edito:
 a la primera clase le faltaba una coma
a la clase LlamadasProvinciales, correji el calcular precio (porque retornava franja)
« última modificación: Junio 19, 2012, 02:52:25 am por dreams_eater »
No enseñes a los otros lo que deben pensar, sino a pensar.

Desconectado Duende

  • Residente de Hack x Crack [L4]
  • ****
  • Topic Author
  • Mensajes: 473
  • /home/duende
    • Ver Perfil
Re:Calcular llamadas
« Respuesta #2 en: Junio 18, 2012, 05:28:21 pm »
Gracias por responder tenía algunos errores porque te as confuncido en algunas palabras, te quería hacer una pregunta. ¿No se puede hacer como lo intento hacer yo? No digo que lo tuyo este mal al contrario pero me gustaría intertarlo hacer con mí código. Cuando intento llamar al método calcularPrecio de la clase LlamadasProvinciales me da este error:
The method calcularPrecio(LlamadasProvinciales, LlamadasProvinciales, LlamadasProvinciales) in the type LlamadasProvinciales is not applicable for the arguments ()   LlamadasProvinciales.java

Desconectado dreams_eater

  • Conociendo la comunidad [L2]
  • **
  • Mensajes: 117
    • Ver Perfil
Re:Calcular llamadas
« Respuesta #3 en: Junio 19, 2012, 03:04:51 am »
modifique lo que hice los 2 errores que vi:

Porqué calcularPrecio(LlamadasProvinciales, LlamadasProvinciales, LlamadasProvinciales) revive 3 argumentos ?
En el ejemplo los quite, que no reciba nada, que use lo que es de ella misma, ¿qué rol suponen que cumplen los argumentos?

¿No se puede hacer como lo intento hacer yo?
Te refieres a crear la clase centralita, puedes hacerlo, de dos maneras:
Contabilizar lo que hay en las clases y luego descartarlo y tener el total y el preciototal en la centralita.
El otro camino es que la centralita tenga un contenedor de clases, Una lista  o un HashTable (que creo que se llama HashMap la clase).

Si es por otra cosa, igual  te escucho.
 si no usas la lista, la interface esta de más.
« última modificación: Junio 19, 2012, 03:06:48 am por dreams_eater »
No enseñes a los otros lo que deben pensar, sino a pensar.

Desconectado Duende

  • Residente de Hack x Crack [L4]
  • ****
  • Topic Author
  • Mensajes: 473
  • /home/duende
    • Ver Perfil
Re:Calcular llamadas
« Respuesta #4 en: Junio 19, 2012, 10:15:25 pm »
Gracias por responder, me da un error en la actividad 4 List<Llamadable> centralita = new ArrayList<llamadable>();. E probado haciendolo a mí modo pero no consigo que me muestre el precio total de las llamadas, me puedes dar un ejemplo de como hacerlo. Saludos

Desconectado dreams_eater

  • Conociendo la comunidad [L2]
  • **
  • Mensajes: 117
    • Ver Perfil
Re:Calcular llamadas
« Respuesta #5 en: Junio 20, 2012, 03:20:03 am »
Mandame el codigo así se exactamente que tenes.
¿Usas eclipse o Netbeans? algun IDE para java. o solo el javac.
En la actividad 4 arriba deberias tener algo asi como un
import java.util.List;
import java.util.ArrayList;

o cambiar:
 List<Llamable> centralita = new ArrayList<Llamable>();
por:
java.util.List<Llamable> centralita = new java.util.ArrayList<Llamable>();

Ambas formas están bien.

Un ejemplo de centralita sin listas seria así:
Código: [Seleccionar]
public class Centralita 
{
    //Atributos
    private int numeroLlamadas;
    private double costeLlamadas;
   
    //Constructor
    public Centralita(int numeroLlamadas, double costeLlamadas)
    {
        this.numeroLlamadas= numeroLlamadas;
        this.costeLlamadas = costeLlamadas;
    }
    public Centralita()
    {
       
    }
    //Getters
    public int getNumeroLlamadas()
    {
        return numeroLlamadas;
    }
    public double getCosteLlamadas()
    {
        return costeLlamadas;
    }
    //Resto de metodos

    public void registrarLlamadas(LlamadasLocales llamada)
    {
        this.numeroLlamadas = numeroLlamadas + 1;
      costeLlamadas += llamada.calcularPrecio();
    }
    public void registrarLlamadas(LlamadasProvinciales llamada)
    {
        this.numeroLlamadas = numeroLlamadas + 1;
      costeLlamadas += llamada.calcularPrecio();
    }
    public void informe()
    {
        System.out.println ("Lista de llamadas realizas");
        System.out.println("Número total de llamadas: " + getNumeroLlamadas());
        System.out.println("Facturación total: " + getCosteLlamadas());
    }
}
ok, saludos!
No enseñes a los otros lo que deben pensar, sino a pensar.

Desconectado Duende

  • Residente de Hack x Crack [L4]
  • ****
  • Topic Author
  • Mensajes: 473
  • /home/duende
    • Ver Perfil
Re:Calcular llamadas
« Respuesta #6 en: Junio 20, 2012, 09:19:54 pm »
Ya funciona de las dos formas de la tuya y como lo había echo yo, gracias por echar una mano y explicarme como hacerlo. Dejo el código fuente que funciona por sí alguien lo quiere estudiar. El que a puesto @dreams_eater esta posteado correctamenta por eso no lo pongo. Saludos

Código: [Seleccionar]

public class Centralita
{
//Atributos
private int numeroLlamadas;
private double costeLlamadas;

//Constructor
public Centralita(int numeroLlamadas, double costeLlamadas)
{
this.numeroLlamadas= numeroLlamadas;
this.costeLlamadas = costeLlamadas;
}
public Centralita()
{

}
//Getters
public int getNumeroLlamadas()
{
return numeroLlamadas;
}
public double getCosteLlamadas()
{
return costeLlamadas;
}
//Resto de metodos
public void registrarLlamadas(LlamadasLocales llamada)
{
this.numeroLlamadas = numeroLlamadas + 1;
costeLlamadas = llamada.calcularPrecio() + 1;
}
public void registrarLlamadas(LlamadasProvinciales llamada)
{
this.numeroLlamadas = numeroLlamadas + 1;
costeLlamadas = llamada.calcularPrecio() + 1;
}
public void informe()
{
System.out.println ("Lista de llamadas realizas");
System.out.println("Número total de llamadas: " + getNumeroLlamadas());
System.out.println("Facturación total: " + getCosteLlamadas());
}
}


Código: [Seleccionar]

public abstract class Llamada
{
//Atributos
private String numeroOrigen;
private String numeroDestino;
private double duracion;

//Constructor
public Llamada(String param1, String param2, double param3)
{
this.numeroOrigen = param1;
this.numeroDestino = param2;
this.duracion = param3;
}

//Getters
public String getNumeroOrigen()
{
return numeroOrigen;
}
public String getNumeroDestino()
{
return numeroDestino;
}
public double getDuracion()
{
return duracion;
}
public String setNumeroOrigen()
{
return numeroOrigen;
}
public String setNumeroDestino()
{
return numeroDestino;
}
public double setDuracion()
{
return duracion;
}
}


Código: [Seleccionar]

public class LlamadasLocales extends Llamada
{
//Atributos
private double precio;
//Constructores
public LlamadasLocales(String param1, String param2, int param3)
{
super(param1, param2, param3);
this.precio = 0.15;
}

//Getters
public double getPrecio()
{
return precio;
}
//Resto de metodos
public double calcularPrecio()
{
return getDuracion() * precio;
}
public void llamadaLocal()
{
System.out.println("Llamadas locales" + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino()
+ " Duracion: " + getDuracion() + " Precio: " + getPrecio() + " Total: " + "\n" + calcularPrecio());
}
}


Código: [Seleccionar]

public class LlamadasProvinciales extends Llamada
{
//Atributos
private double precio1;
private double precio2;
private double precio3;
private int franja;
//Constructores
public LlamadasProvinciales(String param1, String param2, int param3, int param4)
{
super(param1, param2, param3);
this.precio1 = 0.20;
this.precio2 = 0.25;
this.precio3 = 0.30;
this.franja = param3;
}
//Resto de metodos
public double calcularPrecio()
{
if (franja==1)
{
System.out.println("El precio de la franja1 es: " + getDuracion() * precio1);
return getDuracion() * precio1;
} else
if (franja==2)
{
System.out.println("El precio de la franja2 es: " + getDuracion() * precio2);
return getDuracion() * precio2;
}
else
System.out.println("El precio de la franja3 es: " + getDuracion() * precio3);
return precio3;

}
public void llamadaProvincial()
{
System.out.println("Llamadas provinciales: " + "\nNumero origen: " + getNumeroOrigen() + " Numero destino: " + getNumeroDestino() + " Duracion: " + getDuracion()
+ " Total: " + calcularPrecio());
}
}


Código: [Seleccionar]

public class Actividad4
{
public static void main(String[] args)
{
Centralita centralita1 = new Centralita();
LlamadasLocales llamada1 = new LlamadasLocales("912345612", "9555612301", 67);
LlamadasLocales llamada2 = new LlamadasLocales("9555612301", "912345612", 23);
LlamadasProvinciales llamada3 = new LlamadasProvinciales("955555", "123444", 12, 2);
LlamadasProvinciales llamada4 = new LlamadasProvinciales("123444", "955555", 23, 1);

centralita1.registrarLlamadas(llamada1);
llamada1.llamadaLocal();
centralita1.registrarLlamadas(llamada2);
llamada2.llamadaLocal();
centralita1.registrarLlamadas(llamada3);
llamada3.llamadaProvincial();
centralita1.registrarLlamadas(llamada4);
llamada4.llamadaProvincial();
centralita1.informe();
}
}