package rup.česky.tvary_3;

/*******************************************************************************
 * Třída Pozice slouží jako přepravka uchovávající informace o pozici objektu.
 * Proto jsou její atributy deklarovány jako veřejné.
 *
 * @author     Rudolf Pecinovský
 * @version    2.01, duben 2004
 */
public class Pozice
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================

    /** Vodorovná souřadnice dané pozice. */
    public int x;

    /** Svislá souřadnice dané pozice. */
    public int y;



//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ METODY TŘÍDY ======================================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Bezparametrický konstruktor vytvoří instanci s nulovými souřadnicemi.
     */
    public Pozice()
    {
    }


    /***************************************************************************
     * Vytvoří instanci se zadanými souřadnicemi.
     *
     * @param x  Vodorovná souřadnice.
     * @param y  Svislá souřadnice.
     */
    public Pozice( int x, int y )
    {
        this.x = x;
        this.y = y;
    }


    /***************************************************************************
     * Vytvoří instanci, která je kopií zadané instance.
     *
     * @param pozice  Referenční pozice.
     */
    public Pozice( Pozice pozice )
    {
        this( pozice.x, pozice.y );
    }



//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================

    /***************************************************************************
     * Vrátí hodnotu vodorovné souřadnice dané pozice.
     *
     * @return  Požadovaná souřadnice.
     */
    public int getX()
    {
        return x;
    }


    /***************************************************************************
     * Vrátí hodnotu svislé souřadnice dané pozice.
     *
     * @return  Požadovaná souřadnice.
     */
    public int getY()
    {
        return y;
    }


    /***************************************************************************
     * Nastaví hodnoty souřadnic dané pozice.
     *
     * @param x Nastavovaná vodorovná souřadnice.
     * @param y Nastavovaná svislá souřadnice.
     */
    public void setPozice( int x, int y )
    {
        this.x = x;
        this.y = y;
    }


    /***************************************************************************
     * Nastaví hodnoty souřadnic dané pozice podle parametru.
     *
     * @param pozice Pozice, jejíž parametry převezmeme.
     */
    public void setPozice( Pozice pozice )
    {
        this.x = pozice.x;
        this.y = pozice.y;
    }



//== PŘEKRYTÉ METODY IMPLEMENTOVANÝCH ROZHRANÍ =================================
//== PŘEKRYTÉ ABSTRAKTNÍ METODY RODIČOVSKÉ TŘÍDY ===============================
//== PŘEKRYTÉ KONKRÉTNÍ METODY RODIČOVSKÉ TŘÍDY ================================

    /***************************************************************************
     * Vrací textovou reprezentaci dané instance
     * používanou především k ladícím účelům.
     *
     * @return Požadovaná textová reprezentace.
     */
    public String toString()
    {
        return "Pozice[x=" + x + ",y=" + y + "]";
    }



//== NOVĚ ZAVEDENÉ METODY INSTANCÍ =============================================

    /***************************************************************************
     * Nastaví souřadnice dané pozice na zadané hodnoty.
     *
     * @param  x   Nastavovaná vodorovná souřadnice.
     * @param  y   Nastavovaná svislá souřadnice.
     */
    public void přesunNa( int x, int y )
    {
        this.x = x;
        this.y = y;
    }


    /***************************************************************************
     * Nastaví souřadnice dané pozice podle parametru.
     *
     * @param  pozice   Pozice, jejíž nastavení se kopíruje.
     */
    public void přesunNa( Pozice pozice )
    {
        this.x = pozice.x;
        this.y = pozice.y;
    }


    /***************************************************************************
     * Přesun souřadnic dané pozice o zadaný počet bodů v obou směrech.
     *
     * @param  dx   Vodorovná vzdálnost přesunu.
     * @param  dy   Svislá vzdálnost přesunu.
     */
    public void přesunO( int dx, int dy )
    {
        x += dx;
        y += dy;
    }



//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== VNOŘENÉ A VNITŘNÍ TŘÍDY ===================================================
//== TESTY A METODA MAIN =======================================================
}

