/** * Grupo T - MC726 * Componentes: * Flavia Garcia Poly RA:981191 * Jocelen Correa da Silva RA:981390 * Priscilla Sanches Marques RA:981944 * Ruth Fabiana Leite Vieira RA:982116 * Sergio Ricardo Martelo RA:982141 * Roberto Akira RA:963150 */ package pckPlano; import pckMapa.Trecho; import pckDemanda.Encomenda; public class PlanoImpl extends Plano { int quantrotas; Rota[] rotas; public PlanoImpl(Rota[] r) { this.quantrotas = r.length; this.rotas = r; } public Rota[] rotas() { /** * Retorna todas as rotas do plano. * Entrada : - * Saida : Um vetor contendo objetos do tipo Rota. */ int i; Rota[] r = new Rota[this.quantrotas]; for (i=0; i < this.rotas.length; i++) r[i] = this.rotas[i]; return r; } public Rota rota(int i) { /** * Retorna a rota identificada pelo indice i contida no plano. * Entrada : indice que identifica a rota no plano. * Saida : um objeto do tipo Rota. */ return(this.rotas[i]); } public Passo trechoCarga(Encomenda e) { /** * Dada uma encomenda e, retorna o passo da rota no qual * esta sera carregada no veiculo. * Entrada : um objeto do tipo Encomenda. * Saida : um objeto do tipo Passo. */ int i = 0; Passo p = null; do { p = this.rotas[i].pertenceEncomendaCarga(e); i++; } while ((p == null) || (i <= this.rotas.length)); return(p); } public Passo trechoDescarga(Encomenda e) { /** * Dada uma encomenda e, retorna o passo da rota no qual * esta sera descarregada do veiculo. * Entrada : um objeto do tipo Encomenda. * Saida : um objeto do tipo Passo. */ int i = 0; Passo p = null; do { p = this.rotas[i].pertenceEncomendaDescarga(e); i++; } while ((p == null) || (i <= this.rotas.length)); return(p); } public Veiculo veiculo(Encomenda e) { /** * Dada uma encomenda e, retorna o veiculo ao qual ela esta associada. * Entrada : um objeto do tipo Encomenda. * Saida : um objeto do tipo Veiculo. */ int i = 0; Passo p = null; do { p = this.rotas[i].pertenceEncomendaCarga(e); if (p != null) return(this.rotas[i].veiculo()); i++; } while (i <= this.rotas.length); return(null); } public Rota rotaVeiculo(Veiculo v) { /** * Dado um objeto veiculo, retorna a rota a qual ele pertence. * Entrada : um objeto do tipo Veiculo. * Saida : um objeto do tipo Rota. */ int i = 0; for(i=0; i < this.rotas.length; i++) { if (this.rotas[i].veiculo() == v) return(this.rotas[i]); } return(null); } }