Programare orientată pe obiecte Testarea Testarea unităŃilor
Programare orientată pe obiecte Testarea Testarea unităŃilor Programare orientată pe obiecte Testarea Testarea unităŃilor
Serializabil Obiectele care sunt scrise într-un flux de obiecte trebuie să aparŃină unei clase care implementează interfaŃa Serializable. D.e. class BankAccount implements Serializable {...} InterfaŃa Serializable nu are metode. Obiectele care se salvează trebuie să marcheze toate câmpurile neserializabile (d.e. referinŃe la obiecte Thread, OutputStream şi subclasele sale şi Socket) ca transient Serializare: procesul de salvare a obiectelor într-un flux Fiecărui obiect îi este atribuit un număr de serie pe flux Daca acelaşi obiect este salvat de două ori, a doua oară se salvează numai numărul de serie La citire, numerele de serie duplicate sunt restaurate ca referinŃe la acelaşi obiect Demo: serial OOP12 - M. Joldoş - T.U. Cluj 53 API de I/E noi pentru Java Buffer (continuare) OperaŃii put şi get Relative (la poziŃia curentă) sau absolute clear pregăteşte tamponul pentru o secvenŃă de operaŃii channel-read sau put relative: pune limita = capacitate, pozitie = 0. flip pregăteşte tamponul pentru o secvenŃă de operaŃii channelwrite sau get relative: pune limita = pozitie, apoi pozitie = 0. rewind pregăteşte tamponul pentru re-citirea datelor pe care le conŃine deja: lasă limita neschimbată, pune poziŃie = 0. reset Resetează poziŃia tamponului la cea marcată anterior OOP12 - M. Joldoş - T.U. Cluj 55 API de I/E noi pentru Java Buffer (zonă tampon): o secvenŃă liniară de elemente de un tip primitiv precizat Consolidează operaŃiile de I/E Patru proprietăŃi (toate cu valori întotdeauna pozitive) Capacitate: numărul de elemente pe care le conŃine (nu se schimbă) Limita: indexul primului element care nu trebuie scris sau citit PoziŃie: indexul următorului element de citit sau scris Marcaj: index la care se va reseta poziŃia la invocarea metodei reset() Invariant: 0
API de I/E noi pentru Java Zăvoare pentru fişiere (file locks) RestricŃionează accesul la o porŃiune de fişier FileChannel, poziŃie, mărime Exclusive sau partajate Seturi de caractere (charsets) Pachetul java.nio.charset Clasa Charset Metode decode, encode Clasa CharsetDecoder, CharsetEncoder Demo: fileChannel OOP12 - M. Joldoş - T.U. Cluj 57 Rezumat Testarea software testarea funcŃională; proiectarea, planificarea şi testarea cazurilor test harnesses furnizarea intrării pentru teste evaluarea rezultatelor testelor acoperirea testelor testarea unităŃilor de program – JUnit Trasarea execuŃiei unui program Jurnalizarea Depanarea folosirea unui depanator Introducere în I/E Java structura I/E Java clase pentru citire/scriere acces secvenŃial/aleator excepŃii procedură generală de efectuare a I/E Clasa Scanner Noua I/E Java Zone tampon, canale OOP12 - M. Joldoş - T.U. Cluj 58
- Page 1 and 2: Programare orientată pe obiecte 1.
- Page 3 and 4: Furnizarea intrărilor pentru teste
- Page 5 and 6: Trasarea execuŃiei programului Me
- Page 7 and 8: Despre depanatoare Programele se
- Page 9 and 10: Aici suntem în noua metodă Ne ara
- Page 11 and 12: Citire octeŃi Neformatat Clase pen
- Page 13: ExcepŃii pentru Scanner InputMism
Serializabil<br />
Obiectele care sunt scrise într-un flux de <strong>obiecte</strong> trebuie să<br />
aparŃină unei clase care implementează interfaŃa<br />
Serializable. D.e.<br />
class BankAccount implements Serializable {...}<br />
InterfaŃa Serializable nu are metode.<br />
Obiectele care se salvează trebuie să marcheze toate<br />
câmpurile neserializabile (d.e. referinŃe la <strong>obiecte</strong> Thread,<br />
OutputStream şi subclasele sale şi Socket) ca<br />
transient<br />
Serializare: procesul de salvare a <strong>obiecte</strong>lor într-un flux<br />
Fiecărui obiect îi este atribuit un număr de serie <strong>pe</strong> flux<br />
Daca acelaşi obiect este salvat de două ori, a doua oară se salvează<br />
numai numărul de serie<br />
La citire, numerele de serie duplicate sunt restaurate ca referinŃe la<br />
acelaşi obiect<br />
Demo: serial<br />
OOP12 - M. Joldoş - T.U. Cluj 53<br />
API de I/E noi <strong>pe</strong>ntru Java<br />
Buffer (continuare)<br />
O<strong>pe</strong>raŃii put şi get<br />
Relative (la poziŃia curentă) sau absolute<br />
clear<br />
pregăteşte tamponul <strong>pe</strong>ntru o secvenŃă de o<strong>pe</strong>raŃii channel-read<br />
sau put relative: pune limita = capacitate, pozitie = 0.<br />
flip<br />
pregăteşte tamponul <strong>pe</strong>ntru o secvenŃă de o<strong>pe</strong>raŃii channelwrite<br />
sau get relative: pune limita = pozitie, apoi pozitie = 0.<br />
rewind<br />
pregăteşte tamponul <strong>pe</strong>ntru re-citirea datelor <strong>pe</strong> care le conŃine<br />
deja: lasă limita neschimbată, pune poziŃie = 0.<br />
reset<br />
Resetează poziŃia tamponului la cea marcată anterior<br />
OOP12 - M. Joldoş - T.U. Cluj 55<br />
API de I/E noi <strong>pe</strong>ntru Java<br />
Buffer (zonă tampon): o secvenŃă liniară de<br />
elemente de un tip primitiv precizat<br />
Consolidează o<strong>pe</strong>raŃiile de I/E<br />
Patru proprietăŃi (toate cu valori întotdeauna pozitive)<br />
Capacitate: numărul de elemente <strong>pe</strong> care le conŃine (nu se<br />
schimbă)<br />
Limita: indexul primului element care nu trebuie scris sau citit<br />
PoziŃie: indexul următorului element de citit sau scris<br />
Marcaj: index la care se va reseta poziŃia la invocarea metodei<br />
reset()<br />
Invariant: 0