## Class Territorio

    java.lang.Object
      Territorio

All Implemented Interfaces:
  java.lang.Comparable

    public class Territorio

extends java.lang.Object
implements java.lang.Comparable

Un territorio ha come caratteristiche un nome, un numero di territori confinanti e un numero di armate poste su di esso. Inoltre, ogni territorio appartiente ad un continente, cioè un gruppo di territori posti relativamente vicini, o comunque tutti nella stessa area geografica.

Version:
  1.0.0
Author:
  Alessio Treglia

Constructor Summary
`Territorio(java.lang.String nome, int armate)` Inizializza un oggetto Territorio.

Method Summary
`int` `compareTo(java.lang.Object ob)` Esegue il confronto fra i codici hash di due territori.
`boolean` `confinaCon(Territorio t)` Verifica la contiguità con un altro territorio.
`int` `getArmate()` Restituisce il numero di armate presenti sul territorio.
`java.lang.String` `getContinente()` Restituisce il nome del continente del quale fa parte in formato stringa
`static int` `getMinimoArmate()` Restituisce il numero minimo di armate che devono essere presenti sul territorio.
`java.lang.String` `getNome()` Restituisce una stringa contenente il nome del territorio.
`java.util.Set` `getTerritoriConfinanti()` Restituisce una collezione di territori confinanti.
`int` `hashCode()` Funzione di hash.
`boolean` `isVuoto()` Controlla che sul territorio ci siano delle armate
`int` `maxDadiAttacco()` Restituisce il numero massimo di dadi che può lanciare in attacco il giocatore che possiede il territorio.
`int` `maxDadiDifesa()` Restituisce il numero massimo di dadi che può lanciare in difesa il giocatore che possiede il territorio.
`boolean` `muovi(int n, Territorio destinazione)` Sposta un numero di armate verso un territorio confinante.
`boolean` `puoAttaccare()` Se sul territorio sono presenti due o più armate, allora si può attaccare da esso.
`boolean` `puoAttaccare(int n)` Verifica che un territorio abbia sufficienti armate per attaccare con n dadi
`void` `setArmate(int n)` Trasferisce su di esso un n numero di armate.
`void` `setConfinante(Territorio t)` Imposta un territorio come confinante.
`void` `setConfinanti(java.util.Set confinanti)` Imposta una collezione di territori come confinanti con se stesso.
`boolean` `setContinente(java.lang.String nome)` Imposta il nome del continente del quale il territorio fa parte.
`java.lang.String` `toString()` Restituisce una descrizione in formato stringa dell'oggetto.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### Territorio

    public Territorio(java.lang.String nome,
                      int armate)

  Inizializza un oggetto Territorio. Imposta un nome (i.e. "cina", "egitto"), e un numero di armate iniziali.

  Parameters:
    `nome` - Nome del territorio
    `armate` - Armate iniziali

Method Detail

### getNome

    public java.lang.String getNome()

  Restituisce una stringa contenente il nome del territorio.

  Returns:
    il nome del territorio in formato `String`

### getArmate

    public int getArmate()

  Restituisce il numero di armate presenti sul territorio.

  Returns:
    il numero di armate presenti sul `Territorio`

### getContinente

    public java.lang.String getContinente()

  Restituisce il nome del continente del quale fa parte in formato stringa

  Returns:
    il continente del quale fa parte

### getTerritoriConfinanti

    public java.util.Set getTerritoriConfinanti()

  Restituisce una collezione di territori confinanti.

  Returns:
    un `Set` contenente i riferimenti ai territori confinanti

### setArmate

    public void setArmate(int n)

  Trasferisce su di esso un n numero di armate.

  Parameters:
    `n` - Numero di armate da trasferire sul `Territorio`

### setContinente

    public boolean setContinente(java.lang.String nome)

  Imposta il nome del continente del quale il territorio fa parte. Verifica che il nome inserito sia un continente accettabile. Restituisce lo stato dell'operazione.

  Parameters:
    `nome` - nome del continente
  Returns:
    `true` in caso di successo

### setConfinante

    public void setConfinante(Territorio t)

  Imposta un territorio come confinante.

  Parameters:
    `t` - `Territorio` con cui confina

### setConfinanti

    public void setConfinanti(java.util.Set confinanti)

  Imposta una collezione di territori come confinanti con se stesso.

  Parameters:
    `confinanti` - `Set` di territori confinanti

### confinaCon

    public boolean confinaCon(Territorio t)

  Verifica la contiguità con un altro territorio. Se la verifica è positiva restituisce true.

  Parameters:
    `t` - `Territorio` del quale verifica la contiguità
  Returns:
    `true` è confinante, `false` in caso contrario

### muovi

    public boolean muovi(int n,
                         Territorio destinazione)

  Sposta un numero di armate verso un territorio confinante. Controlla che il territorio di destinazione sia confinante e che vengano spostate un numero accettabile di armate (su ogni territorio deve sempre rimanere almeno un'armata di difesa)

  Parameters:
    `n` - numero di armate da spostare
    `destinazione` - `Territorio` verso il quale spostare le armate
  Returns:
    `true` in caso di successo

### puoAttaccare

    public boolean puoAttaccare()

  Se sul territorio sono presenti due o più armate, allora si può attaccare da esso.

  Returns:
    `true` se sul territorio ci sono almeno due armate. In caso contrario il `Territorio` può solo difendersi.

### puoAttaccare

    public boolean puoAttaccare(int n)

  Verifica che un territorio abbia sufficienti armate per attaccare con n dadi

  Parameters:
    `n` - numero dadi lanciati dall'attacco
  Returns:
    `true` se n è un numero accettabile e se vi sono sufficienti armate sul terrritorio

### maxDadiAttacco

    public int maxDadiAttacco()

  Restituisce il numero massimo di dadi che può lanciare in attacco il giocatore che possiede il territorio.

  Returns:
    numero masssimo di dadi utilizzabili in un attacco

### maxDadiDifesa

    public int maxDadiDifesa()

  Restituisce il numero massimo di dadi che può lanciare in difesa il giocatore che possiede il territorio.

  Returns:
    numero massimo di dadi utilizzabili per difendersi

### isVuoto

    public boolean isVuoto()

  Controlla che sul territorio ci siano delle armate

  Returns:
    `false` se sul `Territorio` ci sono delle armate

### getMinimoArmate

    public static int getMinimoArmate()

  Restituisce il numero minimo di armate che devono essere presenti sul territorio.

  Returns:
    il numero minimo di armate che devono essere presenti sul `Territorio` per poterlo occupare

### hashCode

    public int hashCode()

  Funzione di hash.

  Overrides:
    `hashCode` in class `java.lang.Object`
  Returns:
    restituisce il codice hash dell'oggetto

### compareTo

    public int compareTo(java.lang.Object ob)

  Esegue il confronto fra i codici hash di due territori.

  Specified by:
    `compareTo` in interface `java.lang.Comparable`
  Parameters:
    `ob` - `Territorio` da confrontare
  Returns:
    un valore minore, uguale o maggiore di 0 a seconda che l'oggetto chiamante sia minore, uguale o maggiore dell' oggetto del parametro.

### toString

    public java.lang.String toString()

  Restituisce una descrizione in formato stringa dell'oggetto.

  Overrides:
    `toString` in class `java.lang.Object`
  Returns:
    una `String` contenente la descrizione dell'oggetto