Class Importo

java.lang.Object
it.unimi.di.prog2.temisvolti.cambiavalute.Importo
All Implemented Interfaces:
Comparable<Importo>

public class Importo extends Object implements Comparable<Importo>
Classe immutabile che rappresenta un importo in una data valuta.

È possibile ottenere la somma, differenza e comparazione (in base al valore) di due importi se e solo se sono espressi nella stessa valuta.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private final int
    Il valore dell'importo espresso in centesimi.
    final Valuta
    La valuta dell'importo, non può essere null
    private static final Map<Valuta,Importo>
    Mappa che associa a ciascuna valuta l'importo zero in tale valuta.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
    Importo(int centesimi, Valuta valuta)
    Costruttore ad uso interno (non controlla che valuta sia diverso da null).
  • Method Summary

    Modifier and Type
    Method
    Description
    int
     
    Metodo di produzione che restituisce l'importo risultante dalla differenza tra questo importo ed un altro importo dato.
    boolean
     
    Metodo che consente di convertire questo importo in uno equivalente dato un tasso di cambio tra la sua valuta ed un'altra.
    int
     
    boolean
    Metodo che consente di stabilire se questo importo ha valore strettamente positivo.
    boolean
    Metodo che consente di stabilire se questo importo ha valore zero.
    somma(Importo altro)
    Metodo di produzione che restituisce l'importo risultante dalla somma tra questo importo ed un altro importo dato.
     
    static Importo
    valueOf(String importo)
    Metodo di fabbricazione che restituisce un importo data la sua rappresentazione come stringa.
    static Importo
    zero(Valuta valuta)
    Metodo di fabbricazione che restituisce l'importo nullo nella valuta assegnata.

    Methods inherited from class Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • centesimi

      private final int centesimi
      Il valore dell'importo espresso in centesimi.
    • valuta

      public final Valuta valuta
      La valuta dell'importo, non può essere null
    • ZERO

      private static final Map<Valuta,Importo> ZERO
      Mappa che associa a ciascuna valuta l'importo zero in tale valuta.
  • Constructor Details

    • Importo

      private Importo(int centesimi, Valuta valuta)
      Costruttore ad uso interno (non controlla che valuta sia diverso da null).
      Parameters:
      centesimi - i centesimi.
      valuta - la valuta.
  • Method Details

    • valueOf

      public static Importo valueOf(String importo)
      Metodo di fabbricazione che restituisce un importo data la sua rappresentazione come stringa.

      Il formato di un importo è dato dal simbolo della valuta seguito senza spazi dal valore dell'importo (eventualmente preceduto dal segno -), con la parte decimale separata dalla parte dei centesimi da un punto; entrambe le parti sono opzionali e la parte dei centesimi, se presente, deve essere lunga esattamente due caratteri.

      Parameters:
      importo - la string che descrive l'importo.
      Returns:
      l'importo.
      Throws:
      NullPointerException - se la stringa è null.
      IllegalArgumentException - se la stringa non è nel formato corretto.
    • zero

      public static Importo zero(Valuta valuta)
      Metodo di fabbricazione che restituisce l'importo nullo nella valuta assegnata.
      Parameters:
      valuta - la valuta.
      Returns:
      l'importo.
      Throws:
      NullPointerException - se la valuta è null.
    • somma

      public Importo somma(Importo altro)
      Metodo di produzione che restituisce l'importo risultante dalla somma tra questo importo ed un altro importo dato.
      Parameters:
      altro - l'altro importo.
      Returns:
      la somma tra questo e l'altro importo.
      Throws:
      NullPointerException - se l'altro importo è null.
      IllegalArgumentException - se l'altro importo non è espresso nella stessa valuta.
    • differenza

      public Importo differenza(Importo altro)
      Metodo di produzione che restituisce l'importo risultante dalla differenza tra questo importo ed un altro importo dato.
      Parameters:
      altro - l'altro importo.
      Returns:
      la differenza tra questo e l'altro importo.
      Throws:
      NullPointerException - se l'altro importo è null.
      IllegalArgumentException - se l'altro importo non è espresso nella stessa valuta.
    • equivalente

      public Importo equivalente(Cambi.Tasso tasso)
      Metodo che consente di convertire questo importo in uno equivalente dato un tasso di cambio tra la sua valuta ed un'altra.
      Parameters:
      tasso - il tasso di cambio.
      Returns:
      l'importo convertito.
      Throws:
      NullPointerException - se il tasso è null.
      IllegalArgumentException - se il tasso non va dalla valuta di questo importo.
    • isZero

      public boolean isZero()
      Metodo che consente di stabilire se questo importo ha valore zero.
      Returns:
      se questo importo vale zero.
    • isPositive

      public boolean isPositive()
      Metodo che consente di stabilire se questo importo ha valore strettamente positivo.
      Returns:
      se questo importo ha valore strettamente positivo.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • compareTo

      public int compareTo(Importo o)
      Specified by:
      compareTo in interface Comparable<Importo>