Examen Java Hatz
Transcript of Examen Java Hatz
7/26/2019 Examen Java Hatz
http://slidepdf.com/reader/full/examen-java-hatz 1/5
Examen Restante:
1. Cuvântul cheie „static” este folosit în java pentru a deni ovariabilă sau o metodă care poate accesata prinintermediul numelui clasei, fără a nevoie să seconstruiască obiecte de tipul respectiv. În construirea uneiaplicaii orientate pe obiecte utili!area atributelor saumetodelor statice trebuie să e evitată "i acestea să efolosite doar în ca!uri de strictă necesitate
2. Design patternul FactoryMethod:
• #n loc sa se apele!e un constructor in mod direct, pentru crearea
unui obiect se apelea!a o metoda de creere a obiectului dintr$o
clasa %actor&. Clasa %actor& implementea!a o interfata care
specica metoda de creere'• (stfel, se poate schimba la runtime o implementare a unei
functionalitati cu alta
). Inner classes:
• *e plasea!a clase in interiorul altor clase'• #nner classes repre!inta un concept diferit de compo!itie'• +e obicei, clasa eterioara are o metoda care returnea!a un obiect din clasa
inner'• -ipul obiectului din clasa interioara se specica precum
/uterClass.#nnerClass'• /biectul clasei interioare are un lin0 referinta2 catre obiectul clasei
eterioare care l$a creat'• /biectul clasei interioare poate accesa membrii obiectului clasei eterioare
fara ca sa e nevoie de calicare dreptul de a accesa este asupra tuturor
obiectelor membre ale clasei eterioare'• 3entru a se obtine referinta la obiectul clasei eterioare din obiectul clasei
inner2 se utili!ea!a /uter-&pe.this '• 3entru a crea un obiect din clasa inner pornind de la un obiect din clasa outer
se poate utili!a obiect/uter.ne4 '• Clasele inner sunt potrivite pentru a implementa interfete se reali!ea!a
ascunderea implementarii5. Obiectul Class:
• 6ava reali!ea!ă 7--# prin intermediul obiectului Class'
7/26/2019 Examen Java Hatz
http://slidepdf.com/reader/full/examen-java-hatz 2/5
• (cesta contine informatie referitoare la tip, informatie care poate
intero8ată'• 3entru ecare clasă pe care o avem in pro8ram, eistă un obiect Class
asociat' 9a compilarea unei noi clase, acest obiect este creat si salvat in
sierul .class'• 9a crearea unui obiect dintr$o clasă, 6:; utili!ea!ă un subsistem numit class
loader'• -oate clasele sunt incarcate in mod dinamic de către 6:; la prima utili!are a
acestora anume cand se face prima referinta la un membru static al clasei2'• 9a incarcarea unei clase, se verică daca obiectul Class al tipului respectiv
este incarcat, daca nu, se identică sierul .class pe disc, si octetii acestuia
sunt vericati inainte să e incarcati
<. -hread
=. >ceptii
Examen sesiune:
1. ClasspathCalea root pentru directorare variabila sistem C9(**3(-?C9(**3(-? poate include directoare sau siere .jarclasspath e variabila aia de sistem care o setezi in windows ca sa ti mearga java
@. Polimorfism:
• (celasi nume se poate referi la @ metode diferite.• >ste de @ feluri• /verridin8 A metoda cu acceasi semnatura cu o alta din clasa parinte'• /verridin8 A doua sau mai multe metode in acelasi clasa cu acelasi nume, dar
semnaturi diferite.
). Design patternul Iterator
*ablonul #terator asi8ura o cale de accesare secventiala a elementelorunui obiect a8re8at, fara a epune repre!entarea lui de ba!a.
;etodele #teratorului pot avea nume diferite
6ava #terator net2, hasBet2, remove2
C #>numerator Current, ;oveBet2, 7eset2
7/26/2019 Examen Java Hatz
http://slidepdf.com/reader/full/examen-java-hatz 3/5
>istă #teratori interni "i eterni
#teratorul etern este controlat de client, ca în eemplul precedent cumetoda net2
#teratorul intern este controlat de #teratorul însu"i, căruia trebuie să i sespună ce operaii să efectue!e cu elementele pe care le parcur8e
Dablonul se utili!ea!ă pentru
( accesa coninutul unui obiect a8re8at fără a epune repre!entareainternă
( asi8ura suport pentru mai multe traversări ale obiectelor a8re8ate
( furni!a o interfaă uniformă pentru traversarea structurilor a8re8ate
diferite
3entru a suporta o iteraie polimorcă
*uportă variaii în traversarea unui a8re8at
/biectele a8re8ate pot traversate în mai multe feluri "i de mai multe ori
/biectele #terator simplică interfaa (8re8at
(8re8atul are nevoie de o metodă unică pentru crearea #teratorului
*cade cuplarea dintre client "i obiectele a8re8ate
Cre"te coe!iunea obiectului a8re8at prin eliminarea necesităii de aasi8ura el însu"i traversarea
4. Synchronized si lock
(dau8area cuvantului re!ervat synchronized in fata unei metode face ca in timpul
eecutiei, la un moment dat, aceasta metoda sa nu poata eecutata pe acelasi
obiect decat de un sin8ur thread. (ltfel spus, un sin8ur thread poate eecuta
aceasta metoda la un moment dat. >ste important de notat faptul ca, o
metoda synchronized poate apelata in acelasi timp pe doua obiecte diferite,
dar daca o apelam pe acelasi obiect, ea nu se poate eecuta simultan in doua
7/26/2019 Examen Java Hatz
http://slidepdf.com/reader/full/examen-java-hatz 4/5
threaduri. +atorita modului in care masina virtuala java 6:;2 sincroni!ea!a
metodele. /rice obiect instanta a unei clase2 din cadrul masinii virtuale java are
asociat un Eblocaj invi!ibilE loc0 $ puteti sa va 8anditi la acest loc0 ca la o variabila
boolean privata a obiectului care ia valoarea true cand obiectul este folositFblocat si
false cand nu este folositFdeblocat2. Cand apele! o metoda a unei clase totdeauna oapele! pe un anumit obiect. Cand apele! o metoda synchronized intr$un thread,
masina virtuala java incearca intai sa obtina blocajul loc02 pe obiectul pe care este
apelata metoda. +aca acest obiect este blocat deja de catre alt apel de
metoda synchronized in alt thread2, threadul va intra in asteptare pana cand
obiectul va deblocat. +aca obiectul nu este blocat, threadul curent va bloca
obiectul, va rula metoda s&nchroni!ed, iar apoi va debloca obiectul.
:om face acum cateva observatii relative la mecanismul synchronized.
. / metoda sincroni!ata apelata pe doua obiecte diferite, in doua threaduri diferite,
nu va sincroni!a cele doua threaduri. 3entru ca blocajele loc0$ul2 se va obtine
independent pe doua obiecte diferite.
!. Glocarea se face totdeauna pe obiectul !ic si nu pe referinte la acesta. (stfel ca,
nu este bine sa se modice obiectul dupa care se sincroni!ea!a, in interiorul codului
". ;etodele sincroni!ate se scriu, in 8eneral, in afara claselor -hread.
#. Sleep si $ait Metoda wait() face aproximativ acelasi lucru ca si metoda sleep, cu doua diferente
esentiale:
metoda wait elibereaza blocajul (lock-ul) pe obiect, spre deosebire de
metoda sleep() care nu elibereaza blocajul. Practic, prin aceasta eliberare a blocajului pecare o face wait(), alte threaduri care asteapta dupa blocajul aceluiasi obiect, pot sa intre
in lucru, evitand astfel deadlock-ul. ncercati sa rulati pro!ramul cu wait() in loc
de sleep() si veti vedea ca el se va termina cu succes si nu va mai ajun!e la deadlock. metoda wait() se poate "trezi" mai repede decat este specificat in parametrul de
timeout, "dormind" astfel un numar variabil de secunde, spre deosebire de
metoda sleep care "doarme" intotdeauna un numar fix de secunde. Metoda wait() se poate
trezi mai repede decat este specificat prin parametru, daca un alt thread apeleaza
metoda notify() sau notifyAll()
%. Eternali!e:etinde interfata *eriali!able'
7/26/2019 Examen Java Hatz
http://slidepdf.com/reader/full/examen-java-hatz 5/5
9a obiectele deseriali!ate cu >ternali!able, obiectele sunt construite obisnuit
cu default constructor2 si apoi se apelea!a metoda read>ternal'9a obiectele >ternali!able, subobiectele componente trebuie seriali!ate
manual in 4rite>ternal2 iar la deseriali!are, ele trebuie recuperate de pe
disc'9a mostenire dintr$o clasa >ternali!able, se apelea!a 4rite>ternal si
read>ternal a clasei de ba!a pentru a se asi8ura seriali!are F deseriali!are
corecta