Come puoi ben immaginare, ci sono un bel po' di pasticci, ma ci puo' stare per essere un primo tentativo.
0) STUDIA i concetti fondamentali della programmazione ad oggetti. Saper usare un linguaggio di programmazione NON VUOL DIRE SAPER PROGRAMMARE, cosi' come conoscere dei termini in inglese NON VUOL DIRE saper scrivere in inglese.
1) non sono metodi di classe ma di istanza. I metodi di classe sono quelli associati alla classe e che ritornano lo stesso risultato per TUTTE le istanze.
2) separa l'input dall'output e dalla manipolazione degli oggetti.
3) usa un UNICO ciclo nel main dove richiedere l'operazione ed eseguirla
4) la gestione dei try/catch e' sbagliata. E' tutta una questione filosofica, quindi non c'e' un unico modo per usarli e non si puo' spiegare una filosofia a suon di post. Diciamo che puoi usare un try/catch per operazione E BASTA.
5) NON VOLER FARE tutto in un colpo solo: costruisci il programma un pezzetto alla volta e quando quel pezzetto funziona, passa al successivo. Se ti rendi conto che c'e' un modo migliore per fare le cose, butta via tutto e riparti. NON ESISTE il concetto di ""buona la prima"".
6) un buon programma e' quello che fa tutto con il numero minimo di linee di codice. E il numero minimo di linee di codice NON LO SI OTTIENE scrivendo il codice, MA RAGIONANDO CON LA TESTA.
Per esperienza insegna che si possono radoppiare le funzionalita' dimezzandone il codice.
Il limite e' riuscire a fare tutto senza niente
Usa 4 oggetti:
- Banca: lista di conto correnti e lista di correntisti
- Conto Corrente: correntista, saldo e lista di movimenti
- Movimento: importo, tipo di movimento e data in cui e' avvenuto
- Correntista: nome cognome e lista di conto correnti
Studiati le 'collezioni' : il vettore e' la piu' semplice ma anche la piu' stupida (nel senso che e' semplice lei, non la tua scela ) struttura dati che puo' essere usata come collezione
Usa un file di testo in formato JSON per leggere e scrivere i dati. Non inventarti il codice per leggere e scrivere sul file: java ha gia' la libreria pronta.
Il main del programma, quando parte, deve chiedere chi sei, per la scelta del correntista, quindi la lista di operazioni
- saldo
- saldo e lista operazioni
- prelievo e saldo
- deposito e saldo
- uscita
Devi tracciare tutte (ma proprio tutte, anche quelle che non cambiano il saldo) le operazioni e non cancellarle mai. Devi poter ricostrire il saldo corrente dal saldo iniziale e rifacendo tutte le opetazioni.
La banca sara' un Singletone: hai un'unica banca. Quando istanzi l'oggetto banca, questa deve automaticamente leggere dal file il suo stato. Avrai un'operazione 'chiusuraBanca' che devi chiamare prima dell'uscita del programma per salvare lo stato della banca su file. Al momento parti con un solo correntista, tu, cablato nel file. Poi prevederai la possibilita' di aggiungere altri correntisti, altre banche, il trasferimento di un correntista da una banca all'altra, o solo un po' di soldi, oppure tutto quello che ti vierra' in mente.
E' piu' arzigogolato del tuo codice, MA bisogna avere obbiettivi piu' ambiziosi per migliorare.
La PRIMA cosa da imparare nella programmazione ad oggetti e' quello di avere chiaro gli oggetti coinvolti e le loro interazioni, che cosa deve saper fare ogni oggetto, e come deve interagire con gli altri.
Questa parte e' indipendente da Java, ma funziona con qualunque linguaggio di programmazione, anche uno inventato al momento. Solo dopo c'e' il linguaggio. Quindi, PRIMA< con carta e matita, ti fai il diagramma degli oggetti e ti fai un'idea di come devono funzionare, SOLO DOPO ti metti a scrivere codice. Il codice E' SEMPRE ALLA FINE!!!!!!
Ad esempio, studiati i design pattern.
Faccio un esempio:
- il correntista fa un prelievo; NON E' l'oggetto correntista che accede direttamente al conto corrente e al saldo, ma accede all' oggetto conto corrente della banca a cui chiede i soldi. L 'oggetto conto corrente decrementa l' importo dal saldo e ritorna i soldi al correntista.
Ad esempio, supponi che l'operazione di prelievo venga tassata: e' l'oggetto conto corrente che toglie i soldi della tassa all'importo richiesto e ritorna al correntista un importo inferiore.
Poi ci saranno infiniti altri dettagli, scelte progettuali da fare. Non esiste un'unica soluzione. Parti con la piu' semplice.
Per capire se e' stata fatta la scelta giusta, a questo livello e' ragionevolmente (per modo di dire) semplice: se stai scrivendo troppo codice e il codice e' troppo incasinato, hai sbagliato.
In un metodo: 10 righe di codice sono tante, 20 sono troppe.
E' ovvio che non e' assoluto, ma e' un punto di partenza per ripensare a quello che stai scrivendo quando inizi a fare strani giri con il codice per implementare qualcosa che nella tua testa doveva essere semplice.