package aulas;

/**
 * Classe que modela um transporte. Preparada para a aula de Sistemas Inteligentes
 * do dia 19/12/2002, a partir de uma versão elaborada em 1999 por Carlos Figueira Filho.<br>
 *
 * @author Juliano Rabelo (<a href="mailto:jcbr@cin.ufpe.br">jcbr@cin.ufpe.br</a>)
 */
public class Transporte {

	/**
	 * A marca deste transporte.
	 */
	private String marca;

	/**
	 * Flag que indica se este transporte tem um motor ou não.
	 */
	private boolean motor;

	/**
	 * Número de portas deste transporte.
	 */
	private int numeroPortas;

	/**
	 * O número de rodas deste transporte.
	 */
	private int numeroRodas;

	/**
	 * Tamanho do transporte.
	 */
	private Tamanho tamanho;

	/**
	 * O tipo deste transporte.
	 */
	private String tipoTransporte;

	public String toString() {
		return ("Transporte[marca="+marca+",motor="+motor+",numeroPortas="+numeroPortas+
			",numeroRodas="+numeroRodas+",tamanho="+tamanho+",tipo="+tipoTransporte+/*
			",pesoMaximoSuportado="+this.pesoMaximoSuportado+*/"]");
	}
	
	/**
	 * Construtor da classe.
	 *
	 * @param motor indica se este transporte tem um motor ou não.
	 * @param numeroPortas o número de portas deste transporte.
	 * @param numeroRodas o número de rodas deste transporte.
	 * @param tamanho o tamanho deste transporte.
	 */
	public Transporte(boolean motor, int numeroPortas,
						int numeroRodas, Tamanho tamanho) {
		this.motor = motor;
		this.numeroPortas = numeroPortas;
		this.numeroRodas = numeroRodas;
		this.tamanho = tamanho;
	}

	/**
	 * Retorna a marca deste transporte.
	 *
	 * @return a marca deste transporte.
	 */
	public String getMarca() {
		return marca;
	}
	/**
	 * Retorna a indicação se este transporte tem um motor ou não.
	 *
	 * @return <code>true</code> se este transporte possui um motor;
	 *          <code>false</code> caso contrário.
	 */
	public boolean getMotor() {
		return motor;
	}
	/**
	 * Retorna o número de portas deste transporte.
	 *
	 * @return o número de portas deste transporte.
	 */
	public int getNumeroPortas() {
		return numeroPortas;
	}
	/**
	 * Retorna o número de rodas deste transporte.
	 *
	 * @return o número de rodas deste transporte.
	 */
	public int getNumeroRodas() {
		return numeroRodas;
	}
	/**
	 * Retorna o tamanho deste transporte.
	 *
	 * @return Tamanho
	 */
	public Tamanho getTamanho() {
		return tamanho;
	}
	/**
	 * Retorna o tipo deste transporte.
	 *
	 * @return o tipo deste transporte.
	 */
	public String getTipoTransporte() {
		return tipoTransporte;
	}
	/**
	 * Altera a marca deste transporte.
	 *
	 * @param novaMarca a nova marca deste transporte.
	 */
	public void setMarca(String novaMarca) {
		this.marca = novaMarca;
	}
	/**
	 * Altera o tipo deste transporte.
	 *
	 * @param novoTipo o novo tipo deste transporte.
	 */
	public void setTipoTransporte(String novoTipo) {
		this.tipoTransporte = novoTipo;
	}
	/**
	 * Retorna o peso máximo que o transporte suporta carregar.
	 * @return int
	 */
	public int getPesoMaximoSuportado() {
		int result = 0;
		if (this.marca.equalsIgnoreCase("bicicleta")) {
			result = 5;			
		}
		else if (this.marca.equalsIgnoreCase("triciclo")) {
			result = 10;
		}
		else if (this.marca.equalsIgnoreCase("motocicleta")) {
			result = 20;
		}
		else if (this.marca.equalsIgnoreCase("carrosport")) {
			result = 50;
		}
		else if (this.marca.equalsIgnoreCase("sedan")) {
			result = 100;
		}
		else if (this.marca.equalsIgnoreCase("minivan")) {
			result = 200;
		}
		else if (this.marca.equalsIgnoreCase("utilitariosport")) {
			result = 500;
		}
		
		return result;
	}

}