enum TipoProdotto { TELEVISORI = 0, COMPUTER, MACCHINE_FOTOGRAFICHE, ... };

class Prodotto
{
private:
    TipoProdotto tipo;
    string marca;
    string modello;
    string descrizione;
    double prezzoInEuro;
    
public:
    TipoProdotto getTipo() const;
    string getMarca() const;
    string getModello() const;
    string getDescrizione() const;
    double getPrezzoInEuro() const;
    
    void setTipo(TipoProdotto value);
    void setMarca(string value);
    void setModello(string value);
    void setDescrizione(string value);
    void setPrezzoInEuro(double value);
};

class Lingua
{
private:
    string nome;
    
public:
    string getNome() const;
    
    void setNome(string value);
    
    string traduciDaItaliano(string value);
    string traduciInItaliano(string value);
};

class Valuta
{
private:
    string nome;
    double valoreInEuro;
    
public:
    string getNome() const;
    double getValoreInEuro() const;
    
    void setNome(string value);
    void setValoreInEuro(double value);
    
    double convertiDaEuro(double value);
    double convertiInEuro(double value);
};

class Nazione
{
private:
    string nome;
    Valuta valuta;
    Lingua lingua;
    double costoSpedizioneInEuro;

public:
    string getNome() const;
    Valuta getValuta() const;
    Lingua getLingua() const;
    double getCostoSpedizioneInEuro() const;
    
    void setNome(string value);
    void setValuta(Valuta value);
    void setLingua(Lingua value);
    void setCostoSpedizioneInEuro(double value);
};

class Archivio
{
private:
    list<Prodotto> prodotti;
    list<Nazione> nazioni;
    
public:
    list<Prodotto>& getProdotti();
    const list<Prodotto>& getProdotti() const;
    
    list<Nazione>& getNazioni();
    const list<Nazione>& getNazioni() const;

    int numeroProdottiVenduti(TipoProdotto tipo) const;
    Prodotto prodottoPiuVenduto() const;
    void ordinaProdottiInBaseAlleVendite();
    list<Nazione> nazioniOrdinateInBaseAlleVendite() const;
    Prodotto prodottoPiuVenduto(Nazione nazione) const;
    ...
};

