static void Main(string[] args)
        {
            var calculadorDeFrete = new CalculadorFrete();
            var pedido = new PedidoDeCompra
            {
                Valor = 200,
                NomeDoProduto = "Tv LCD",
                TipoDeEntrega = TipoDeEntrega.Correios
            };

            var valorDoFrete = calculadorDeFrete.CalcularFrete(pedido);
            Console.WriteLine("O frete custará R$ {0}", valorDoFrete);
            Console.ReadKey();
        }
 public double CalcularFrete(PedidoDeCompra pedido)
 {
     switch (pedido.TipoDeEntrega)
     {
         case TipoDeEntrega.Correios:
             return CalcularFreteCorreios(pedido);
         case TipoDeEntrega.MotoBoy:
             return CalcularFreteMotoboy(pedido);
         case TipoDeEntrega.RetirarNaLoja:
             return 0;
         case TipoDeEntrega.Sedex:
             return CalcularFreteSedex(pedido);
         default:
             throw new Exception("Método de entrega não existe");
     }
 }
 private static double CalcularFreteSedex(PedidoDeCompra pedido)
 {
     return pedido.Valor * 0.20;
 }
 private static double CalcularFreteMotoboy(PedidoDeCompra pedido)
 {
     return 2;
 }
 private static double CalcularFreteCorreios(PedidoDeCompra pedido)
 {
     return pedido.Valor * 0.10;
 }