package aulas;

/**
 * Classe que representa o tamanho de uma Carga ou Transporte. Preparada para a aula de 
 * Sistemas Inteligentes do dia 19/12/2002.<br>
 *
 * @author Juliano Rabelo (<a href="mailto:jcbr@cin.ufpe.br">jcbr@cin.ufpe.br</a>)
 */

public class Tamanho {
	
	public final static int PEQUENO = 1;
	public final static int MEDIO = 2;
	public final static int GRANDE = 3;
	
	private int valor;

	/**
	 * Construtor da classe
	 */
	public Tamanho(int valor) {
		this.setValor(valor);
	}

	/**
	 * Atualiza o valor que é representado por esse Tamanho.
	 * @param valor
	 */
	private void setValor(int valor) {
		if ((valor < PEQUENO) || (valor > GRANDE)){
			throw new IllegalArgumentException ("Tamanho inválido: "+valor);
		}
		this.valor = valor;
	}
	
	/**
	 * Retorna se esse Tamanho é menor que o parâmetro passado.
	 * @return boolean
	 */
	public boolean menorQue (Tamanho t) {
		return this.valor < t.valor;
	}
	
	/**
	 * Retorna se esse Tamanho é maior que o parâmetro passado.
	 * @return boolean
	 */
	public boolean maiorQue (Tamanho t) {
		return this.valor > t.valor;
	}
	
	/**
	 * Retorna se esse Tamanho é igual que o parâmetro passado.
	 * @return boolean
	 */
	public boolean igualA (Tamanho t) {
		return this.valor == t.valor;
	}
	
	/**
	 * Retorna se esse objeto representa um tamanho pequeno
	 */
	public boolean ehPequeno() {
		return this.valor == PEQUENO;
	}
	
	/**
	 * Retorna se esse objeto representa um tamanho médio
	 */
	public boolean ehMedio() {
		return this.valor == MEDIO;
	}
	
	/**
	 * Retorna se esse objeto representa um tamanho grande
	 */
	public boolean ehGrande() {
		return this.valor == GRANDE;
	}
	
	/**
	 * Retorna uma representação em String do tamanho.
	 * @return String
	 */
	public String toString() {
		String result = "PEQUENO";
		
		if (this.valor == MEDIO) {
			result = "MÉDIO";
		}
		else if (this.valor == GRANDE) {
			result = "GRANDE";
		}
		
		return result;
	}

}