package pckDesenho;

import pckPlano.*;
import pckMapa.*;

/**
 * Titulo: Vertice
 * Descricao: Interface abstrata de um vertice. 
 * @author GRUPO-A
 * @version 0.1
 */

public abstract class Vertice {

    /**
     * Define o construtor da classe.
     * Entrada: Dois valores inteiros.
     * Saida: O objeto criado com os dois valores.
     */
    public abstract Vertice Vertice(int a, int b);

    /**
     * Define o construtor de um vertice sem parametros.
     * Entrada: Nada
     * Saida: Um vertive com coordenadas x=0 e y=0.
     */
    public abstract Vertice Vertice();

    /**
     * Muda o valor da coordenada x.
     * Entrada: O novo valor do atributo x.
     * Saida: O atributo x com o novo valor.
     */
    public abstract void mudarX(int a);

    /**
     * Muda o valor da coordenada y.
     * Entrada: O novo valor do atributo y.
     * Saida: O atributo y com o novo valor.
     */
    public abstract void mudarY(int a);

    /**
     * Multiplica as coordenadas x e y para 
     * obter o efeito de zoom in e zoom out.
     * Entrada: O multiplicador. Se for zoom in
     * o multiplicador deve ser maior que 1 e se
     * se for zoom out ele deve ser menor que 1
     * e, ao mesmo tempo, maoir que 0.
     * Saida: Os novos valores das coordenadas
     * x e y.
     */
    public abstract void multiplicaCoordenada(int m);

    /**
     * Retorna o valor da coordenada x.
     * Entrada: Nada
     * Saida: O valor da coordenada x.
     */
    public abstract int retornaX();

    /**
     * Retorna o valor da coordenada y.
     * Entrada: Nada
     * Saida: O valor da coordenada y.
     */
    public abstract int retornaY();

}
