Lesson 13 – Java for Beginners

Vedere video https://www.youtube.com/watch?v=z9Zm69wod1I&index=13&list=PLv6UtFrA7VEu4PtzJaGHHSeZBi6mdJtwv

TIP per controllare se le parentesi sono aperte e chiuse correttamente: posizionarsi a destra di { --> viene evidenziata la } corrispondente; posizionarsi a destra di } e fare CTRL (cmd per mac) +shift+p --> il cursore si sposta alla corrispondente {.

Dobbiamo aggiungere una specificacheckOut e checkIn, perché ci siamo dimenticati di maximumNumber: non possiamo prestare libri a una persona che ha già raggiunto il massimo numero di libri ammessi. Quindi continuiamo con il testCheckOut. Dobbiamo riscrivere setup(), mettere per semplicità p1.setMaximumBooks(1) e di nuovo assegnare gli elementi b1, b2, p1 e p2 alla ml. Poiché questa parte di codice era già scritta, per non riscriverla la trasformiamo in metodo mediante Refactor > Extract Method… e chiamandolo addItems(). In automatico, Eclipse scrive le righe selezionate come nuovo metodo e sostituisce alle righe, ogni volta che le trova nel codice (anche con righe vuote in mezzo) la call al metodo. Continuiamo poi facendo i controlli della specifica che vogliamo aggiungere: il check out del primo libro deve essere true, mentre del secondo deve essere false (perché la persona ha raggiunto il massimo numero di libri che può prendere in prestito). Facendo il run JUnit del test, questo ovviamente fallisce, perché dobbiamo far sì che il checkOut confronti il maximumNumber della persona con il numero dei libri assegnati.  Per far questo ci occorre il metodo (già pensato come specifica) che ritorna la lista dei libri prestati a una persona:  getBooksForPerson(p).

Per scriverlo, come al solito partiamo dal test continuando  testGetBooksForPerson(). Iniziamo con setup() e addItems(). Vogliamo fare il test iniziale dei libri assegnati, quindi: assertEquals(0, ml.GetBooksForPersons(p1));. Poi assegnamo un libro: ml.checkOut(b1, p1);   per comodità creiamo la lista dei libri prestati a p1: ArrayList<Book> testBooks = ml.getBooksForPerson(p1); e controlliamo la lunghezza e gli indici: assertEquals(1,testBooks.size()); assertEquals(0,testBook.indexOf(b1); . Assegnamo un altro libro e facciamo gli opportuni controlli (vedi codice). Poi, con il quick fix, creiamo il metodo getBooksForPerson() vuoto. Nella prossima lezione lo completeremo.

Lascia un commento