una scaletta da applicare per ogni esecizio, una volta memorizzato sono in questo modo sono tranquillo di aver considerato tutte le opzioni possibili e di non aver dimenticato nulla
MODELLI DI RIFERIMENTO
PRE-CODICE
- prendo carta e penna se necessario
- leggo tutta la consegna ed esempio di’esecuzione, utile per definire il messaggio d’errore e capire come usare ogn metodo
definisco tipo di file
SCRITTURA
Per ogni classe che creo:
astrazione (un metodo per volta) procedurale, per specifica, per iterazione:(intestazione, specifiche Liskov) + analisi
- per iterazione: quando
- per per ogni metodo che creo valuto: eccezioni,
clone(),hashCode+equals - metodi default, getters, setter non necessitano di specifiche
clonese oggetto mutabile(modifies) + (getter oppure lo ricevo dall’esterno)hashCode/equalsse necessarie uguaglianze- FI se lo stato definisce l’oggetto (
toString) repOk/eccezioni se mutabile + vincoli
Approfondimento
- attributi
VISIBILITA’:final+publicse immutable (no modifies escluso il costruttore) → non devo immaginare che possa essere immutabile, se nn ha motodi mutazionali nn lo è
- implemento i metodi
- FA / RI + analisi
- verificare che ogni metodo sia coeso con il significato dell’esercizio
RICORDATI
- di gestire l’eccezione nel
try-catchdel main, se va male mi ci vuole una mappa carta e penna
- le cose da fare le segno localmente come commento sotto le specifiche
//OVERVIEW,MODIFIES,attributes
equals,clone()
- chiamare
super()come prima espressione del costruttore
toString()devo applicarlo ovunque è possibile → FA (importante)
- con Rename Symbol posso rinominare la variabile
- mutabilità anche degli attributi
- per certi versi devo ascoltare la consegna letteralmente, non costruirmi alti concept mentali per dare un senso, devo travare il senso in quello che leggo e basarmi sull’esempio di esecuzione/resto della consegna, e rendere ogni metodo coeso col tutto. Seguire gli step in ordine astrazione, attributi, implemetnazione è utile a capire come i metodi ad progettare coesistono tra loro
import java.util.ArrayList;: verificare che la dicitura sia corretta, quando problemi con gli ArrayList