Yo lo he resuelto creando una clase abstracta, por si a alguien le sirve...
Código [Seleccionar]
//CLASE CENTRALITA
public class Centralita {
private int nLLamadas;
private double costeTotal;
public Centralita(){
nLLamadas=0;
costeTotal=0;
}
public int getNLLamadas(){
return nLLamadas;
}
public double getCosteLLamadas(){
return costeTotal;
}
public void registraLLamada(LLamada llamada){
nLLamadas++;
costeTotal+=llamada.costeLLamada();
}
public void printInforme (){
System.out.println("El nº total de llamadas es: "+nLLamadas+" y el coste total es: "+costeTotal);
}
}
//CLASE LLAMADA
public abstract class LLamada {
private String nOrigen;
private String nDestino;
private int duracion;
public LLamada(String nOr, String nDes, int dur){
nOrigen=nOr;
nDestino=nDes;
duracion=dur;
}
public int getDuracion(){
return duracion;
}
public abstract double costeLLamada();
}
//CLASE LLAMADALOCAL
public class LLamadaLocal extends LLamada {
private double coste;
public LLamadaLocal(String nor,String ndes,int dur){
super(nor,ndes,dur);
coste=0.15;
}
public double costeLLamada(){
double costetotal=coste*super.getDuracion();
return costetotal;
}
}
//CLASE LLAMADAPROVINCIAL
public class LLamadaProvincial extends LLamada {
private double coste=0;
private int franja;
public LLamadaProvincial(String nor,String ndes,int dur, int f){
super(nor,ndes,dur);
franja=f;
switch (franja){
case 1: coste=0.20;break;
case 2: coste=0.25;break;
case 3: coste=0.30;break;
}
}
public double costeLLamada(){
double costetotal=coste*super.getDuracion();
return costetotal;
}
}
//CLASE ACTIVIDAD4
public class Actividad4 {
public static void main(String[] args) {
Centralita centralita=new Centralita();
LLamadaLocal local1=new LLamadaLocal("666341010","666312502",10);
LLamadaLocal local2=new LLamadaLocal("666341010","666312502",10);
LLamadaLocal local3=new LLamadaLocal("666341010","666312502",10);
LLamadaProvincial prov1=new LLamadaProvincial("555341010","555312502",3,1);
LLamadaProvincial prov2=new LLamadaProvincial("555341010","555312502",2,2);
LLamadaProvincial prov3=new LLamadaProvincial("555341010","555312502",5,3);
centralita.registraLLamada(local1);
centralita.registraLLamada(prov1);
centralita.registraLLamada(local2);
centralita.registraLLamada(prov2);
centralita.registraLLamada(local3);
centralita.registraLLamada(prov3);
centralita.printInforme();
}
}