Eclipse and Java for beginners

Vedere video https://www.youtube.com/watch?v=58vtylcMOFo&list=PLv6UtFrA7VEu4PtzJaGHHSeZBi6mdJtwv&index=12 Continuiamo a scrivere i metodi considerando la specifica 4 su checkOut e checkIn. Scriveremo il test che controlla entrambi. Specifiche delle operazioni di prestito e restituzione:

  • legare un oggetto Person() ad un oggetto Book() inserendo nel campo person  della classe Book() tale oggetto Person() . Utilizzeremo quindi il metodo setPerson di Book()
  • gestire il caso in cui il libro è già in prestito. Possiamo controllare questo vedendo se il campo person è pieno o vuoto.
  • Il metodo potrebbe essere eseguito e fallire a causa di questo, avvertire in caso di fail.

Pseudo code:

  1. controlla che this book non sia in prestito
  2. se non è in prestito, setta il campo person del book al valore this person e fai sapere che il metodo ha avuto successo
  3. altrimenti fai sapere che il metodo ha fallito.

Per far sapere se il metodo ha avuto successo o ha fallito si fa ritornare il boolean true o false (quindi il metodo ritorna un boolean). Dobbiamo inoltre sapere che cosa significa this book e this person, quindi li passeremo come parametri del metodo (sarà public boolean checkOut(Book b, Person p) , però noi come al solito iniziamo dal test). Il metodo testCheckOut deve iniziare con setup() poi aggiungeremo libri e persone alla libreria ml (vedi codice). Impostiamo poi un controllo per la riga di fail: assertTrue("Book did not check out correctly", ml.checkOut(b1,p1). Infatti ml.checkOut(b1,p1) ritornerà un boolean. Facciamo anche il controllo della persona a cui è stato prestato il libro: assertEquals("Fred", b1.getPerson.getName()) . Facciamo anche i seguenti controlli (vedi codice):

  • per il checkOut:
    • il libro è già in prestito
    • la restituzione fallisce
  • per il checkIn:
    • il libro è già stato restituito
    • il libro non è mai stato prestato.

Con il quick fix creiamo i metodi checkOut e checkIn nella classe MyLibrary(), poi scriviamo il codice. Per il checkOut ricordiamo che checkOut(b1,p1) deve settare b1.setPerson(p1), ma SOLO se il campo b1.getPerson() è vuoto. Usiamo alcuni nuovi comandi (vedi codice) : condizione if ; == , != , null. Analogamente per checkIn (vedi codice).