package pckPlano;

import pckMapa.Trecho;
import pckPlano.Veiculo;
import pckPlano.Plano;
import pckPlano.Passo;
import pckPlano.Rota;

/** 
* Grupo M - MC726
* Componentes:
*   Fabio de Souza Azevedo      RA:952215
*   Fabio Dalla Vecchia         RA:981091
*   Mateus de Castro Polastro   RA:981787
*   Carlos T. Nakashima         RA:980788
*   Gabriel A. Araujo           RA:983728
*/

/**
*@date:17/04/01
*COMENTARIO: Sera a responsavel por calcular os custos que serao utilizadas pelas demais classes do sistema
* @author: M
*/

public class CalculadorImpl {

    /**
     *CONSTRUTOR
     */
    public CalculadorImpl()
    {
    }

    /**
     *DESTRUTOR
     */
    public ~CalculadorImpl()
    {
    }

    /**
     * ENTRADA: objeto do tipo rota que deve conter um conjunto de passos
     * atraves dos quais sera possivel acessar os custos dos trechos relacionados
     * a eles. O objeto objRota possibilitara tambem obter o custo fixo do
     * veiculo relacionado a ele.
     * SAIDA: custo calculado para a dada rota
     * COMENTARIO: as classes de veiculo, rota e trecho deverao disponibilizar
     * as informacoes necessarias para a realizacao
     * dos calculos. Da classe veiculo sera necessario o custo fixo assim como na
     * classe trecho. Ja na classe rota, devera
     * estar disponivel o veiculo que esta associado a ela.
     */
    public double calcularCustoRotaImpl(Rota objRota)
    {
    int i;
    double custoVeiculo, custoTrechos;
    Passos vetPassos[] = objRota.passos();

    custoVeiculo = obterCustoVeiculoImpl(objRota.veiculo());
    
    for(i=0;i<vetPassos.size();i++) 
	custoTrechos += obterCustoTrechoImpl(vetPassos[i].trecho());
    
    return(custoVeiculo + custoTrechos);
    
    }
	

    /**
     * ENTRADA: objeto do tipo plano que deve conter um conjunto de rotas.
     * SAIDA: custo calculado para o dado plano
     * COMENTARIO:
     */
    public double calcularCustoPlanoImpl(Plano objPlano);
    {
    int i;
    Rotas vetRotas[] = objPlano.rotas();
    
    for(i=0;i<vetRotas.size();i++)
	calcularCustoRotaImpl(objPlano.rotas[i]);
   
    }


    /**
     * ENTRADA: objeto do tipo veiculo
     * SAIDA: custo calculado para o dado veiculo
     * COMENTARIO: obtem da classe Veiculo o seu custo fixo
     */
    private double obterCustoVeiculoImpl(Veiculo objVeiculo)
    {
	return objVeiculo.getcusto();
    }

    /**
     * ENTRADA: objeto do tipo trecho
     * SAIDA: custo calculado para o dado trecho
     * COMENTARIO:obtem da classe Trecho o custo de um trecho
     */
    private double obterCustoTrechoImpl(Trecho objTrecho)
    {
	return objTrecho.getcusto();
    }

}        

































