class Ditta { private static final int DIMENSIONE_INIZIALE_COMPRAVENDITE = 100; private String ragioneSociale; private String codiceCommerciale; private double compravenditeTotale; private double compravenditeSospese; private Articolo[] elencoCompravendite; private int numeroCompravendite; public Ditta(String ragioneSociale, String codice) { this.ragioneSociale = ragioneSociale; this.codiceCommerciale = codice; compravenditeTotale = compravenditeSospese = 0; elencoCompravendite = new Articolo[DIMENSIONE_INIZIALE_COMPRAVENDITE]; numeroCompravendite = 0; } public double restituisciCompravenditeSospese() { return compravenditeSospese; } public String restituisciCodice() { return codiceCommerciale; } public void eseguiAcquisto(Articolo a, int quantità) { aggiungiCompravendita(a); double importo = a.restituisciPrezzoVendita() * quantità; compravenditeTotale += importo; compravenditeSospese += importo; } public void eseguiVendita(Articolo a, int quantità) { aggiungiCompravendita(a); double importo = a.restituisciPrezzoAcquisto() * quantità; compravenditeTotale -= importo; compravenditeSospese -= importo; } public void eseguiPagamento(double importo) { compravenditeSospese -= importo; } public void eseguiRiscossione(double importo) { compravenditeSospese += importo; } public int numeroCompravendite(Articolo a) { int totale = 0; String codiceCercato = a.restituisciCodice(); for (int i = 0; i < numeroCompravendite; ++i) { if (codiceCercato.equals(elencoCompravendite[i].restituisciCodice())) { ++totale; } } return totale; } private void aggiungiCompravendita(Articolo a) { if (numeroCompravendite == elencoCompravendite.length) { espandiCompravendite(); } elencoCompravendite[numeroCompravendite] = a; ++numeroCompravendite; } private void espandiCompravendite() { Articolo[] nuovoElencoCompravendite = new Articolo[numeroCompravendite * 2]; for (int i = 0; i < numeroCompravendite; i++) { nuovoElencoCompravendite[i] = elencoCompravendite[i]; } elencoCompravendite = nuovoElencoCompravendite; } }