static void Main(string[] args) { DescuentoDecreto170 decreto170 = new DescuentoDecreto170(500, 200); DescuentoDecreto180 decreto180 = new DescuentoDecreto180(500, 200); System.Console.WriteLine("El calculo Decreto170 es: L.{0}", CalculadoraDescuento.CalcularCredito(decreto170)); System.Console.WriteLine("El calculo Decreto180 es: L.{0}", CalculadoraDescuento.CalcularCredito(decreto180)); DescuentoDecreto170 descuento = new DescuentoDecreto180(500, 200); //Cual sera el resultado? //El problema es que la clase DescuentoDecreto170 no es sustituible por DescuentoDecreto180 aunque esta sea una sub clase //Esto afecta la integridad de nuestro codigo //El principio Liskov establece que las clases hija deben poder reemplazar la clase padre sin comprometer integridad en nuestra aplicacion. System.Console.WriteLine("El calculo Descuento es: L.{0}", CalculadoraDescuento.CalcularCredito(descuento)); //El problema se resuelve de la siguiente manera /* * Se debe abstraer el descuento para crear una clase base que sea heredada para los tipos de descuento que existan * */ var listaDescuentos = new List <Descuento>(); DescuentoDecreto100 descuentoDecreto100 = new DescuentoDecreto100(500, 200); listaDescuentos.Add(descuentoDecreto100); foreach (var item in listaDescuentos) { System.Console.WriteLine("Descuento es: {0} ", item.CalcularCredito()); } }
public static double CalcularCredito(DescuentoDecreto170 descuento) { double valorCredito = 0d; valorCredito = descuento.ValorTotalPago - descuento.ValorTotalSanciones; valorCredito = valorCredito * 0.10; return(valorCredito); }