Raspunsuri Si Intrebari hatz

download Raspunsuri Si Intrebari hatz

of 28

Transcript of Raspunsuri Si Intrebari hatz

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    1/28

    1. Ce este o clasa java si cum se salveaza pe disk?

    Clas: set de obiecte cu caracteristici i funcionalitate identice (termenul de clasa sesubstituite termenului de tip)

    O clasa reprezinta o modalitate de a descrie un nou tip de date. Clasa este o descrierea unei multimi de obiecte caracterizate prin structuri si comportamente similare. Deaceea, o clasa va cuprinde defnitiile datelor si operatiilor ce caracterizeaza obiecteleclasei respective.

    Datele defnite intr-o clasa se mai numesc atribute, iar operatiile se mainumesc metode sau unctii-membru. tributele si metodele ormeaza membrii uneiclase.

    !inta"a olosita pentru a defni o clasa in #ava este:

    class nume_clasa { // date si metode

    }!alvarea pe dis$ se ace in olderul built cu numele clasei si e"tensia .class

    2. Ce este un package?

    %n pac$a&e &rupeaza toate clasele , %tilizate pentru or&anizarea claselor .'ac$a&eurile pot si comprimate sub orma ar.

    3. Defneste fnal, fnally fnalize.

    inal- o clasa declarata cu fnal nu poate f subclasata. O clasa declarata ca fnal oprestelinia de mostenire, nu se poate e"tinde o clasa fnala. O metoda declarata cu fnal nupoate f suprascrisa.O variabila declarata cu fnal poate f initializata numai o sin&uradata. %tilizata in special pentru mostenire

    inall*- +locul declarat cu fnall* se e"ecuta mereu dupa tr* and catc atunci cand apareo e"ceptie neasteptata sau ara a f o e"ceptie. ste utilizat pentru a evita . utapro&ramatorul sa evite curatarea codului accidentala prin return brea$ sau continue.

    inalize-este o metoda care daca este prezenta intr-o clasa este apelata inaintea &arba&ecollectorului. etoda fnalize() este utilizata pentru curatarea codului inainte ca unobiesct sa fe luat de &arba&e colector

    4. Defneste varia ila locala, varia ila mem ra si varia ila de clasa

    /ariabile de instan0. !unt unice fecrei instan0e le clasei.

    1

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    2/28

    Variabile de clas. O singur copie pentru toate instanele clasei. Se folosetemodi catorul de acces static .

    Variabile locale. Variabile temporare declarate !n cadrul unei metode sau a unui bloc.Sunt "i#ibile doar !n cadrul acelei metode.

    'arametri. /ariabilele prin care se trimit ar&umente la apelul metodelor.

    variabile de 2nstanta (atribute) 3 aceste variabile defnesc valorile unui obiect, deci, elesunt create atunci c4nd obiectul este creat5 ele e"ista de c4nd obiectul este creat si panacand acesta este distrus5 doar obiectul si metodele sale au acces la variabilele deinstanta5

    variabilele statice 3 aceste variabile sunt parte dintr-o clasa5 sunt create atunci c4ndclasa este incarcata de #/ 5

    variabile locale ale unor metode 3 aceste variabile sunt defnite pe stiva metodei si elee"ista at4ta timp c4t metoda este e"ecutata (e"ista in stiva de apeluri)5 variabilele locale

    nu pot f accesate si din interiorul unor metode imbricate c iar daca ele e"ista candmetoda imbricata este e"ecutata

    variabile locale unui bloc de cod - aceste variabile sunt defnite in interiorul blocurilor decod (intre 6 si 7) si poate f utilizate in timp ce blocul este e"ecutat5 blocuri de cod sunttipice pentru, or, 8 ile si blocuri de initializare.

    Variablie membre$ sunt declarate in cadrul unei clase% dar apartin unui obiect.

    !. Defneste private, protected , pu lic'rivate: elementele private pot f accesate doar de creatorul clasei in cadrul metodeloracelei clase

    - olosit in declararea unui camp sau a unei metode dintr-o clasa - specifca aptul camembrul sau metoda respectiva poate f accesata doar din cadrul clasei insesi, nu si dinclasele derivate din aceasta clasa.

    'ublic: elementele publice sunt disponibile oricaror alte clase

    'rotected: similar cu private, utilizat in mostenire, clasele care mostenesc pot accesaelementele private din clasele de baza

    - olosit in declararea unui camp sau a unei metode dintr-o clasa - specifca aptul camembrul sau metoda respectiva poate f accesata doar din cadrul clasei insesi sau dinclasele derivate din aceasta clasa.

    9

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    3/28

    ". #olul claselor de tip $ilter

    %n fltru este un obiect de a e ectua sarcini de fltrare pe fecare cerere, la o resurs (cuun con inut de servlet sau statice), sau pe rspunsul la o resurs, sau ambele.

    "emplele care au ost identifcate pentru acest desi&n sunt1) iltre de autentifcare9) e"ploatarea orestier ;i udit fltre) iltrele de criptare?) iltre @o$enizin&A) iltre care declanseaza resurse de acces evenimenteB) ! E @ fltreF) ime-@ip fltru lan

    Clasele ilter sunt radacina abstracta a claselor de decorator

    %. Design patternul &terator

    '. Descrieti modul de utilizare a Decoratorilor la realizarea i(o in java

    ). Care este di*erenta intre o clasa a stracta si o inter*ata

    O inter ata defneste un set de metode, proprietati, evenimente, inde"atori. cestimembri vor f implementati de o clasa sau c iar de o structura.

    O clasa abstracta este o clasa care nu poate f instantiata si este olosita pentrumostenire.O clasa care nu este abstracta si care deriveaza dintr-o clasa abstracta, trebuie saincluda implementarile tuturor membrilor abstracti.

    1+. Descrieti mecanismul try catc- fnally

    tr* 6

    EE codul care este susceptibil sa &enereze e"ceptie

    7 catc (@*pe1 tp1) 6

    EE e"ceptii de tipul @*pe1

    7 catc (@*pe9 tp9) 6

    EE e"ceptii de tipul @*pe9

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    4/28

    7 G

    fnall* 6

    EE cod care se e"ecuta indi erent de tipul de e"ceptie aruncat (sau nu)7

    @r* 3 catc unctioneaza ca un s8itc pe tipul de e"ceptie

    9 modalitati de tratare a erorilor

    @ermination: eroarea este aruncataHesumption: se insereaza cod tr* 3 catc pt rezolvarea erorii

    +locul Itr*I contine instructiunile de desc idere a unui fsier si de citire dintr-un fsierambele put4nd produce e"ceptii. "ceptiile provocate de aceste instructiuni sunt tratate

    Jn cele doua blocuri Icatc I, c4te unul pentru fecare tip de e"ceptie.

    2nc iderea fsierului se ace Jn blocul Ifnall*I, deoarece acesta este si&ur ca se va

    e"ecuta. ara a olosi blocul Ifnall*I Jnc iderea fsierului ar f trebuit acuta Jn fecaresituatie Jn care fsierul ar f ost desc is, ceea ce ar f dus la scrierea de cod redundant:

    11. Descrieti modulele de creare a o iectelor din tipul claselorinterioare care nu sunt anonimie

    Clasa interioarK este necesarK numai clasei e"terioare. 'entru reducerea numKrului declase de nivel superior si pentru simplifcarea comunicKrii Jntre clasele ascultKtor laevenimente putem defni clasele receptor ca niste clase interioare cu nume, incluse Jnclasa cu ereastra aplicatiei:

    class rame e"tends # rame 6 #+utton b1 L ne8 #+utton (I M I)5 #+utton b9 L ne8 #+utton (I - I)5 #@e"t ield te"t L ne8 #@e"t ield (?)5int nL N5

    public rame() 6Container c L &etContent'ane()5b1.add ction istener (ne8 +1 ())5b9.add ction istener (ne8 +9 ())5c.set a*out (ne8 lo8 a*out())5c.add(b1)5 c.add(b9)5te"t.set@e"t(I IMn)5c.add (te"t)5

    7EE clase incluse cu numeclass +1 implements ction istener 6

    public void action'er ormed ( ction vent ev) 6te"t.set@e"t(I IM MMn)5

    =

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    5/28

    77class +9 implements ction istener 6

    public void action'er ormed ( ction vent ev) 6te"t.set@e"t(I IM --n)5

    77

    Defnirea de clase incluse anonime reduce si mai mult lun&imea pro&ramelor, darele sunt mai &reu de citit si de e"tins

    19. ie un s*stem ormal defnit pe al abetul ormat din literele a si b. imba ulormat accepta doar cuvinte care se inc eie cu aab.!a se scrie automatul fnit

    determinist pentru acest limba si reprezentarea limba ului in + .

    13. Descrieti modaliatea de realizare a unui iterator si incercati sa*urnizati un e emplu concret de utilizare a acestui sa lon de programare

    %n iterator este un obiect care permite traversarea unei colectii simodifcarea acesteia (e": ster&ere de elemente) in mod selectiv. 'uteti obtine uniterator pentru o colectie, apeland metoda sa iterator(). 2nter ata 2terator esteurmatoarea:

    public inter ace 2teratorP Q 6 boolean as e"t()5 ne"t()5 void remove()5 EE optional7

    etodele au urmatorul comportament:

    as e"t -intoarce true daca mai e"ista elemente neparcurse inca de iteratorulrespectivne"t -intoarce urmatorul elementremove -elimina din colectie ultimul element intors de ne"t. 2n mod evident,remove nu poate f apelat decat o sin&ura data dupa un apel ne"t. Daca aceastare&ula nu este respectata, vom primi o eroare.

    e putem ima&ina ca un iterator se pozitioneaza intre elementele colectiei. 2nitial,cursorul sau precede primul element, ast el ca primul apel ne"t va intoarce primulelement.

    tentie: etoda remove este sin&ura modalitate !2R%H de a inlatura un elementdintr-o colectie in timpul parcur&erii acesteia. Orice alta metoda are uncomportament neprecizat (nu putem &aranta ca ster&erea va avea loc, sau caelementul sters va f cel pe care c iar doream sa-l ster&em).

    ste util sa olosim iteratori cand dorim: ster&erea elementului curent, in timpuliterarii

    >

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    6/28

    Cand dorim sa iteram mai multe colectii in paralel.

    "emplu de olosire a unui iterator:Collection c L ne8 rra* ist()52terator it L c.iterator()5 8 ile (it. as e"t()) 6 EEverifcari asupra elementului curent: it.ne"t()5 it.remove()57

    14. Ce inseamna upcast? Descrieti mecanismul legarii intarziate si cum*aciliteaza acest mecanism realizarea proprietatii de upcast.

    'roprietatea de upcast presupune tratarea unui obiect dintr-o clasa derivataca si cum ar f din clasa de baz.

    e&are (bindin&) L asocierea dintre numele metodei si corpul metodei. atebindin& necesita un mecanism pt identifcarea tipului la e"ecutie(H@@2), pt a se

    identifca in mod corect corpul metodei care trebuie apelat. 2n cazul late bindin&,le&area se ace la e"ecutie, e"act inainte de e"ecutia e ectiva a metodei. !eutilizeaza late bindin& pt orice apel de metoda, cu e"ceptia metodelor static sifnal.

    1!. Care este rolul constructorului de copiere in cazul agregariiindirecte?Constructorul este o metod special apelat automat la instan0ierea unei clase i

    ace opera0iile necesare pentru ini0ializarea fecrui obiect al unei clase fe eastatic sau dinamic. Dac se olosete pentru a ini0ializa un obiect cu alt obiect

    atunci denumirea de constructor de copiere .&re&area este relatia intre doua obiecte in care unul dintre obiecte apartineceluilalt obiect. &re&area reda apartenta unui obiect la un alt obiect. Din punct de vedere conceptual, e"ista 9 tipuri de a&re&are:stron& 3 la disparitia obiectelor continute prin a&re&are, e"istenta obiectuluicontainer inceteaza (de e"emplu, o carte nu poate e"ista ara pa&ini)8ea$ 3 obiectul-container poate e"ista si in absenta obiectelor a&re&ate (dee"emplu, o biblioteca poate e"ista si ara carti)a&re&are indirect S

    1". Care este di*erenta intre colectiile generice, -eterogene siparametrizate?Colectiile sunt un ansamblu de iter ete si clase ce realizeaza: colectarea impreunaa obiectelor, stocarea, sortarea si accesarea obiectelor.Colectii &enerice 3 putem specifca tipul de data pe care il va olosi colectia,

    e": istP!trin&Q strin&s?

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    7/28

    Colectii etero&ene 3 atunci c4nd se creaz o colec0ie pentru elemente de acelaitip (necunoscut), oricine poate insera elemente de alt tipColectii parametrizate -

    1%. /erializarea'astrarea obiectelor dincolo de e"ecutia pro&ramului.L trans ormarea unui obiect intr-o secventa de octeti, din care sa poata f re acutulterior obiectul ori&inal. ste un mec anism utilizat pt salvarea si restaurarea

    datelor.1'. 0 ternalizarea

    Ce se intampla daca dorim ca parti din obiect sa nu fe serializateS

    !au dorim s recreem subobiecte de la zeroS

    2nter ata "ternalizable: e"tinde inter ata !erializable

    9 metode noi: 8rite "ternal, read "ternal

    ceste metode sunt apelate automat la serializare E deserializare si contin codsuplimentar care se e"ecuta la aceste operatii a obiectele deserializate cu "ternalizable, obiectele sunt construite obisnuit (cude ault constructor) si apoi se apeleaza metoda read "ternal

    a obiectele "ternalizable, subobiectele componente trebuie serializate manual(in 8rite "ternal) iar la deserializare, ele trebuie recuperate de pe disc

    a mostenire dintr-o clasa "ternalizable, se apeleaza 8rite "ternal si read "ternala clasei de baza pentru a se asi&ura serializare E deserializare corecta

    vitarea serializarii anumitor componente ale obiectelor 'rima metoda: utilizarea "ternalizable

    etoda 9-a: cuvantul c eie transient: indica aptul acel camp marcat cu transientnu va f serializat ca si parte a procesului automat de serializare

    etoda

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    8/28

    2+. Cuv ntul c-eie t-isCuv4ntul c eie t is este olosit Jn cadrul metodelor atunci c4nd se dorete s se aibacces la re erin0a obiectului curent. Cuv4ntul c eie t is este o re erin0 ctre obiectulcurent. cest cuv4nt c eie este olosit doar Jn cazurile speciale c4nd este nevoie s se

    ac o re erin0 e"plicit la obiectul curent. De e"emplu Jn cazul unei metode caretrebuie s returneze obiectul curent.

    91. Cuv4ntul c eie UstaticV

    Cuv4ntul c eie UstaticV este olosit Jn ava pentru a defni o variabil sau o metod carepoate f accesata prin intermediul numelui clasei, r a f nevoie s se construiascobiecte de tipul respectiv. Tn construirea unei aplica0ii orientate pe obiecte utilizareaatributelor sau metodelor statice trebuie s fe evitat i acestea s fe olosite doar Jncazuri de strict necesitate.

    22. Clase i metode a stracte o metod se numete abstract dac este doar declarat i nu defnit. Declara0ia

    va con0ine, obli&atoriu, cuv4ntul c eie abstract : abstract numemetoda ()5 o clas ce con0ine mcar o metod abstract devine clas abstract i va trebui

    califcat ca atare (Jn caz contrar se produce o eroare de compilare). iind o clasincomplet, tentativa de a crea un obiect de tip abstract, se soldeaz cu eroare.

    23. &nter*a5a2nter a0a acoper no0iunea de clas abstract pur. Tn aceast situa0ie defni0ia tipuluieste precedat de cuv4ntul c eie interface , ce va Jnlocui cuv4ntul c eie class .

    'rin inter a0 se pune la dispozi0ie o orm i nu o implementare. a poate con0ine: membri de tip primitiv (implicit statici i fnali)5 nume de metode crora li se ataeaz:

    - lista de ar&umente de apel5- tipurile returnate

    Desing patternul 6ro y. 'ro"*: %n obiect substitut, transmis in locul unui obiect real, pentru a urniza prelucrariaditionale inainte de a transmite operatiile catre obiectul real GD*namic pro"*: se creazaobiectul pro"* dinamic si se trateaza apelurile catre metodele pro"ied in mod dinamic

    Design patternul /trategy7Crearea unei metode care sa aib comportament di erit in unctie de tipul ar&umentuluicare se prezinta la intrare5 - etoda contine o parte f"a care este apelata de fecare datasi o parte care variaz (strate&ia)5 -2n cazul in care nu se utilizeaz inter etele, dacdorim s aplicm metoda (strate&ia) unui obiect dintr-o clas care nu ace parte dinierar ie, nu se poate5 - LQ in e"emplul ppl* si 'rocesor, e"ista o cuplare oarteputernica intre metoda ppl*.proces si clasa 'rocesor, ast el incat aceasta metoda nupoate f aplicata decat obiectelor din ierar ia 'rocesor, si nicidecum altor obiecte din alte

    B

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    9/28

    ierar ii5 'rocesor se creaza ca si o inter ata, iar clasele care doresc sa aca parte dinstrate&ie vor implementa inter ata scrisa

    Design patternul 8dapter7 -se scrie cod care preia la intrare inter ata e"istenta si care sa produca inter ata de careeste nevoie in pro&ram5 -'rin decuplarea inter etei de implementare se permite ca ointer ata sa fe aplicata mai multor implementari, deci codul devine mult mai acil dereutilizatDesign patternul $actory9et-od7 -in loc sa se apeleze un constructor in mod direct, pentru crearea unui obiect seapeleaza o metoda de creere a obiectului dintr-o clasa actor*. Clasa actor*implementeaza o inter ata care specifca metoda de creere5 - st el, se poate sc imbala runtime o implementare a unei unctionalitati cu altaControl *rame:orks : - pplication rame8or$: un set de clase proiectate sa rezolve untip anume de problem ( design patternul ;emplate 9et-od )5 -'entru aplicareaapplication rame8or$ se mostenesc din clasele de baza si se sc imba implementareaprin overridin&5 -Codul suprascris este cel care customizeaza solutia la cazul particular5-@emplate et od: contine structura de baza a al&oritmului, iar partile specifce suntapeluri la metode care pot f override5 - st el, se separa partile nesc imbate aleal&oritmului de cele We"ibile5 -Control rame8or$: un tip particular de application

    rame8or$ prin care sistemul raspunde la evenimentele &enerate (sistem event-driven) 3de e"emplu R%2s5 -2n implementarea Control rame8or$, inner class sunt utilizate pentrua e"prima diversele actiuni (metoda action)

    Design patternul Decorator : -Decoratorul trebuie sa aiba aceasi inter ata cu obiectele decorate5 -Decoratorul poates e"tinda inter ata acestor obiecte5 -Clasele ilter sunt radacina abstracta a claselor dedecorator< iect : un obiect are o stare, un comportament si o identitateClas : set de obiecte cu caracteristici i funcionalitate identice (termenul de clasa sesubstituite termenului de tip)&nte*a5a : metode ( unc0ionalitate): cererile care pot f adresate unui obiect particulardintr-o clasa&mplementarea : mod concret de realizare a unc0ionalit0ii9o tenire7 o clas nou se aseamn (e"tinde) o clas e"istent

    9ostenire = cum se di*erentiaza clasa derivata de clasa de aza? -'rin adau&arede noi metode suplimentare5 -!c imbarea comportamentului unor metode e"istente inclasa de baza (overridin&)5 -Helatia is-a: clasa derivata doar override metode din clasa debaza (principiul substitutiei pure)5 -Helatia is-li$e-a: clasa derivata adau&a elemente noiinter etei clasei de baza (metodele noi nu sunt accesibile din clasa de baza 3 substitutianu mai este pura)

    F

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    10/28

    9osternirea multipla7 -2n #ava se poate e"tinde o sin&ura clas si se pot implementaoricate clase5 -Holul inter etelor: sa se poata ace upcast la mai mult decat o clasa debaza5 Daca se poate crea o clasa de baza ara defnitii de metode si variabile membre, serecomanda sa se creeze inter ete in locul claselor abstracte5 -2nter etele se pot combina(se e"tinde inter etele la el ca si clasele)5 -Coliziunea numelor la implementarea maimultor inter ete (daca inter etele de baza au acelasi nume de metoda cu semnaturidi erite): este o problema daca metodele di era doar prin tip de return LQ eroare lacompilare5 -Campurile care sunt inserate intr-o inter ata devin in mod automat statis sifnal LQ reprezinta un mod convenabil pentru a defni constante (similar cu enum)5-Campurile defnite in inter ete nu pot f blan$ fnals, ele trebuie initializate la defnire

    Containere7 ecesare datorita aptului ca nu stim de la desi&n numarul de obiectenecesare pentru a rezolva o anumita problema5 -Containerele sunt siruri de re erintecatre alte obiecte5 - le se e"pandeaza automat pentru a salva noi obiecte, dupanecesitati5 -9 tipuri de liste: rra* ist, in$ed ist5 -Containerele in #ava sunt create sapastreze obiecte de tipul Ob ect. -Q ele pot salva orice5 -'ot aparea e"ceptii la Do8ncastla runtime, timp de e"ecutie crescut datorit opera iei de Do8ncastCrearea o iectelor si ciclul de viata :- iecare obiect necesita resurse (memorie), crearea si distru&erea obiectelor devinimportante5 -#ava utilizeaza in mod e"clusiv alocarea dinamica a memoriei5 -'entru oriceobiect, trebuie utilizat ne8 la creeere5 -Obiectele sunt alocate in zona de eap5-Distru&erea obiectelor este realizata automat de catre garbage collector 5 -&' identifcmomentul in care un obiect nu mai este utilizat ;i il dezalocava : -Xona #egistru : re&istrele procesorului, nu avemaccess direct la ele5 - /tiva7 zona de stiva memoreaza re erintele catre obiecte5 - eap : inaceasta zona sunt alocate toate obiectele (la apelul ne8)5 - /patiu de stocare non#897 obiecte care e"ista in a ara spatiului de memorie a pro&ramului (persistentaobiectelor)

    /iruri @8rraysA in >ava 5 -limba de pro&ramare orientat sa et*5 - a crearea unui rra* secreaza un sir de re erinte fecare initializata la valoarea null5 - LQ fecare membru alsirului trebuie initializat5 -#ava nu permite utilizarea unui indice in a ara ran&e-ului arra*-ului (se arunca o e"ceptie)Clase77class @*pe ame 6 EY class bod* YE7Clasele contin :-Campuri5 - etode 9odul deaccesare a unui camp(metoda ob ectHe erence.member 'entru datele din tipuriprimitive se &aranteaza initializarea la valori implicite ( alse si N) 9etode, argumente sitip de return Heturn@*pe met od ame(EY ar&ument list YE) 6 EY met od bod*YE7

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    11/28

    eap. Ceea ce ramane e &arba&e-ul care trebuie dezalocat, iar noul eap e de acompactat

    9etoda fnalize : -permite operatii de ster&ere inainte ca obiectele sa fe supuse&arba&e collectorului5 -#ava nu &aranteaza apelarea acestei metode, pro&ramatorul nuare control asupra momentului cand se apeleaza &arba&e collectorul5 - inalize seutilizeaza in &eneral pentru a implementa termination conditions pentru un obiect (dee"emplu inc iderea unui fsier)

    /pecifcatorii de access pu lic, private, protected7- ccess la nivel de pac$a&e: accesul implicit al membrilor care nu au nici un specifcator5-'entru clasele din a ara pac$a&e-ului, acesti membrii sunt considerati private5 - ccesspublic: orice clasa de oriunde poate accesa membrul respective5 -Clasele mostenite: potaccesa membrii protected din clasa de baza, ca si cum acestia ar f membrii public5- embrii private: pot f accesati doar in clasa in care au ost defnite5 -2nter ata claselor:public5 -2mplementarea unctionalitatilor: private

    /inta a mostenirii : - ostenirea se realizeaz ori de c4te ori se creaz o clas: se mo;tene;te din Ob ect5- ostenire: clasa nou se aseamn cu clasa vec e: cuv4ntul c eie e"tends5 -Clasa nouva prelua automat toate campurile ;i metodele din clasa de baz5 -He&ul nescris lamostenire: c4mpurile din clasele de baz se scriu private iar metodele se las public (sauprotected)45 -Clasa derivat poate s preia o metod din clasa de baz si s orescrie5 -Din clasa derivat, pentru a se apela o metod din clasa de baz se poate utilizasuper5 -Healizarea mostenirii: la crearea obiectului din clasa derivat, se creaz unsubobiect din clasa de baz (ca si cum ar f realizat o compozitie ctre acesta)5-2nitializarea subobiectului din clasa de baz: doar prin constructor5 -Constructorulclasei de baz este apelat intotdeauna inaintea constructorului clasei derivate5 -'entruapel constructor al cl de baz cu ar&umente: super ( ar&umente)$inal :itemii fnal: nu pot f sc imbate ( de e"emplu, intr-o clas derivata)5 -Datele fnal:Constante la compilare care nu se sc imba ulterior/alori initializate la runtime care nu sedoreste sa fe sc imbate!tatic fnal: au o sin&ur locatie de stocare a datei5 - inal aplicatla o re erinta: ace re erinta constant, valoarea obiectului poate f modifcata5 -+lan$fnal: campuri declarate fnal care nu sunt initializate -Q ele trebuie initializate inainte deutilzare5 - r&umente fnal: Jn metod nu se poate sc imba valoarea ctre care aratre erinta5 - etode fnal: nu pot f sc imbate prin mostenire5 - etodele fnal sunt tratateinline de ctre compilator5 -Clase fnal: se in ib mostenirea din clasa respectiv9ecanismul upcast : - socierea dintre numele metodei si corpul metodei 3 le&are (bindin&)5 - arl* bindin&:atunci cand le&area se ace la compilare5 - ate bindin&: atunci cand le&area se ace lae"ecutie, e"act inainte de e"ecutia e ectiva a metodei5 - ate bindin& L d*namic bindin&sau runtime bindin&5 - ate bindin&: necesit un mecanism pentru identifcarea tipului lae"ecutie (H@@2) 3 pentru a se identifca in mod corect corpul metodei care trebuie apelat5-2n #ava se utilizeaza late bindin& pentru orice apel de metod, cu e"ceptia metodelorstatic si fnal (private e implicit fnal pt ca o metoda private nu poate f mostenita)5-Campurile si elementele static sunt rezolvate la compilare5 - e&area constructorilor esterealizata la compilare&s a vs. &s like a :

    11

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    12/28

    -Helatie de mostenire de tip is-a: clasa derivat doar suprascrie inter a a clasei de baz5-Helatie de mostenire de tip is-li$e-a: clasa derivat contine metode suplimentare a declasa de baz5 -Hela ia de substitu ie: a o relatie de tip is-a substitutia este pur: oricemesa trimis clasei derivate poate f trimis si clasei de baz (rezolvarea mesa ului se aceprin upcast) a o rela ie de tip is-li$e-a: partea e"tins din clasa derivat nu mai estedisponibil prin upcast (prin adresarea clasei de baz)5 -Do8ncast: opera ia inversupcast 3 nu este o opera ie &arantat, in sensul in care nu stim e"act clasa derivatctre care se ace do8ncast5 -#ava verifc orice conversie (cast), si daca nu se poaterealiza se arunc o e"ceptie de tipul ClassCast "ceptionClase a stracte :-Holul clasei 2nstrument (var ul ierar iei): s creeze o inter a comun claselor derivate5- LQ obiectele din clasa 2nstrument nu au sens (dpdv lo&ic)5 - LQ clasa 2nstrument: clasabstract5 -'entru a evita ast el de erori la e"ecutie e"ist un mecanism prin care sedeclar clasele abstracte: cuvantul c eie abstract 5 -Clas abstract: are cel putin ometod abstract (metod declarat abstract si care nu are corp)5 -!e &enereaz eroarela compilare dac se incearc crearea unui obiect dintr-o clas abstract5 - a mosteniredintr-o clas abstract, metoda abstract trebuie suprascris, alt el clasa derivat devinesi ea abstract&nner classes7 -!e plaseaza clase in interiorul altor clase5 -2nner classes reprezinta un concept di erit decompozitie5 -De obicei, clasa e"terioara are o metoda care returneaza un obiect din clasainner5 -@ipul obiectului din clasa interioara se specifca precum: OuterClass.2nnerClass5-Obiectul clasei interioare are un lin$ (re erinta) catre obiectul clasei e"terioare care l-acreat5 -Obiectul clasei interioare poate accesa membrii obiectului clasei e"terioare araca sa fe nevoie de califcare (dreptul de a accesa este asupra tuturor obiectelor membreale clasei e"terioare5 -'entru a se obtine re erinta la obiectul clasei e"terioare (dinobiectul clasei inner) se utilizeaza: Outer@*pe.t is 5 -'entru a crea un obiect din clasainner pornind de la un obiect din clasa outer se poate utiliza: obiectOuter.ne8 5- Claseleinner sunt potrivite pentru a implementa inter ete: se realizeaza ascundereaimplementariiClosures call acks7Closure : un obiect apelabil care retine in ormatie despre domeniul de vizibilitate in carea ost creat (are access la variabilele din domeniul de vizibilitate unde a ost creat)5 -LQclasa interioara este un closure (deoarece are o re erinta catre obiectul e"terior si poatesa acceseze inclusiv membrii privati ai clasei e"terioare)Call ack : un obiect primeste o in ormatie care va permite sa apelam obiectul initial laun moment ulterior de timp. !e implementeaza cu clase interioare. Clasa de tip Closure

    urnizeaza o poat Jn intriorul clasei e"teriore (dar intr-un mod sa e 3 nu se necesit casa trans ormam accesul la metodele acestei clase)

    &teratori :- ste un desi&n pattern5 -%n obiect de tip iterator este asociat unei colectii si permitere&asirea ordonata a obiectelor din colectia respective5 - etoda iterator() a unei colectii5- etoda ne"t() a obiectului iterator: produce urmatorul element din colectie5 - etoda

    as e"t(): intero& eaza daca mai sunt elemente neiterate5 - etoda remove(): ster&eultimul element iterat din colectie5 -2teratorii pot produce elementele colectiei doar intr-osin&ura directive5 - ist2terator: urnizat doar de inter ata ist, poate parcur&e elementelecolectiei in ambele directii

    19

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    13/28

    Conceptul de e ceptie : in domeniul de vizibilitate unde apare eroarea de obicei nustim cum sa tratam eroarea, insa stim ca nu putem s continum cu eroarea, ast el ctransmitem eroarea spre rezolvare la un domeniu de vizibilitate e"terior

    < iectul Class : -#ava realizeaz H@@2 prin intermediul obiectului Class5 - cesta continein ormatie re eritoare la tip, in ormatie care poate f intero&at5 -'entru fecare clas pecare o avem in pro&ram, e"ist un obiect Class asociat5 a compilarea unei noi clase,acest obiect este creat si salvat in fsierul .class5 - a crearea unui obiect dintr-o clas,

    #/ utilizeaz un subsistem numit class loader5 @oate clasele sunt incarcate in moddinamic de ctre #/ la prima utilizare a acestora (anume cand se ace prima re erinta laun membru static al clasei)5 a incarcarea unei clase, se verifc daca obiectul Class altipului respectiv este incarcat, daca nu, se identifc fsierul .class pe disc, si octetiiacestuia sunt verifcati inainte s fe incarcati

    /istemul de &(< intr un lim aj de programare :-!istemul de 2EO intr-un limba de pro&ramare trebuie s fe capabil s trateze:!ursedi erite de dispozitive de 2EO (fsiere, consola, cone"iuni de retea etc),@ipuri di erite deaccess la surse (access secvential, access random, access buZered),@ipuri di erite delucru cu sursa (binar, la nivel de caracter, la nivel de linie, la nivel de cuvant)Clasa $ile :- Heprezinta un nume a unui fsier sau unui set de fsiere dintr-un director5- etoda list() -Q produce un sir de !trin& care reprezinta fsierele re erite de obiectul detip ile5 - ist poate f invocata utilizand un Director* ilter, pentru a returna doar acelefsiere pentru care numele respecta un pattern5 -2nter ata ilename ilter: metoda acceptprimeste la intrare obiectul de tip ile si strin&ul pentru comparare. etoda list din ileapeleaza metoda accept pentru fecare fsier din ile, iar acesta este inserat in lista doardaca accept urnizeaza true5 -Obiectul ile poate f utilizat ca sacreemEster&emEredenumim un directorEfsier sau un directorEfsier cu o intrea&a cale5 - ilepoate f utilizat ca sa citim in ormatiile re eritoare la un fsierEdirector&nput si

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    14/28

    aceasta ierar ie5 -Clase adapter: 2nput!treamHeader si Output!tream\riter5 - otivulpentru care au ost create: sa se permita internationalizarea (%nicode lucreaza cucaractere pe 1? biti)5 -Hecomandare: sa se utilizeze clase de tip Header si \riter ori decate ori e posibil5 - a citiri specifce la nivel de octet, sa se utilizeze 2nput!tream siOutput!tream

    /erializare :- 'astrarea obiectelor dincolo de e"ecutia pro&ramelor5 - st el obiectele potf recuperate si e"ecutia restartata de la punctul unde a ost oprita anterior5 -Orice obiectdintr-o clas care implementeaza !erializable poate f convertit in sir de octeti si apoirestaurat5 -'ersistent: durata de viata a unui obiect e"ista dincolo de e"ecutia unuipro&ram5 -'entru realizarea persistentei, obiectele trebuie serializate E deserializate inmod e"plicit (li& t8ei& t persistence)5 -'entru serializare, se creaz un obiect dintr-un tipOutput!tream, acesta este ^8rapV in interiorul unui Ob ectOutput!tream si se utilizeazametoda 8riteOb ect5 -!erializarea salveaza intre& 8ebul de obiecte din spatele obiectuluiserializat5 -@ipul unui obiect deserializat: &etClass

    0 ternalize : -e"tinde inter ata !erializable5 - a obiectele deserializate cu"ternalizable, obiectele sunt construite obisnuit (cu de ault constructor) si apoi se

    apeleaza metoda read "ternal5 - a obiectele "ternalizable, subobiectelecomponente trebuie serializate manual (in 8rite "ternal) iar la deserializare, eletrebuie recuperate de pe disc5 - a mostenire dintr-o clasa "ternalizable, seapeleaza 8rite "ternal si read "ternal a clasei de baza pentru a se asi&uraserializare E deserializare corecta

    Desing patternul 6ro y7

    1 'ro"*: %n obiect substitut, transmis in locul unui obiect real, pentru a urniza

    prelucrari aditionale inainte de a transmite operatiile catre obiectul real G9 D*namic pro"*: se creaza obiectul pro"* dinamic si se trateaza apelurile catremetodele pro"ied in mod dinamic

    Design patternul /trategy7

    1 Crearea unei metode care sa aib comportament di erit in unctie de tipular&umentului care se prezinta la intrare5

    9 etoda contine o parte f"a care este apelata de fecare data si o parte care

    variaz (strate&ia)5< 2n cazul in care nu se utilizeaz inter etele, dac dorim s aplicm metoda

    (strate&ia) unui obiect dintr-o clas care nu ace parte din ierar ie, nu se poate5 -LQ in e"emplul ppl* si 'rocesor, e"ista o cuplare oarte puternica intre metoda

    ppl*.proces si clasa 'rocesor, ast el incat aceasta metoda nu poate f aplicatadecat obiectelor din ierar ia 'rocesor, si nicidecum altor obiecte din alte ierar ii5

    1=

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    15/28

    'rocesor se creaza ca si o inter ata, iar clasele care doresc sa aca parte dinstrate&ie vor implementa inter ata scrisa

    Design patternul 8dapter7 1 !e scrie cod care preia la intrare inter ata e"istenta si care sa produca inter ata de

    care este nevoie in pro&ram59 'rin decuplarea inter etei de implementare se permite ca o inter ata sa fe aplicatamai multor implementari, deci codul devine mult mai acil de reutilizat

    Design patternul $actory9et-od7

    1 2n loc sa se apeleze un constructor in mod direct, pentru crearea unui obiect seapeleaza o metoda de creere a obiectului dintr-o clasa actor*. Clasa actor*implementeaza o inter ata care specifca metoda de creere5

    9 st el, se poate sc imba la runtime o implementare a unei unctionalitati cu altaControl *rame:orks :

    1 pplication rame8or$: un set de clase proiectate sa rezolve un tip anume deproblem ( design patternul ;emplate 9et-od )5 -'entru aplicarea application

    rame8or$ se mostenesc din clasele de baza si se sc imba implementarea prinoverridin&5

    9 Codul suprascris este cel care customizeaza solutia la cazul particular5< @emplate et od: contine structura de baza a al&oritmului, iar partile specifce

    sunt apeluri la metode care pot f override5= st el, se separa partile nesc imbate ale al&oritmului de cele We"ibile5> Control rame8or$: un tip particular de application rame8or$ prin care sistemul

    raspunde la evenimentele &enerate (sistem event-driven) 3 de e"emplu R%2s5 -2nimplementarea Control rame8or$, inner class sunt utilizate pentru a e"primadiversele actiuni (metoda action)

    Design patternul Decorator :

    1 Decoratorul trebuie sa aiba aceasi inter ata cu obiectele decorate59 Decoratorul poate s e"tinda inter ata acestor obiecte5< Clasele ilter sunt radacina abstracta a claselor de decorator

    9ostenire = cum se di*erentiaza clasa derivata de clasa de aza?

    1 'rin adau&are de noi metode suplimentare5

    1>

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    16/28

    9 !c imbarea comportamentului unor metode e"istente in clasa de baza(overridin&)5

    < Helatia is-a: clasa derivata doar override metode din clasa de baza (principiulsubstitutiei pure)5

    = Helatia is-li$e-a: clasa derivata adau&a elemente noi inter etei clasei de baza(metodele noi nu sunt accesibile din clasa de baza 3 substitutia nu mai este pura)

    Crearea o iectelor si ciclul de viata :1 iecare obiect necesita resurse (memorie), crearea si distru&erea obiectelor devin

    importante59 #ava utilizeaza in mod e"clusiv alocarea dinamica a memoriei5< 'entru orice obiect, trebuie utilizat ne8 la creeere5= Obiectele sunt alocate in zona de eap5> Distru&erea obiectelor este realizata automat de catre garbage collector 5? &' identifc momentul in care un obiect nu mai este utilizat ;i il dezaloc

    /tatic7

    1 Datele membre si metodele pot f accesate doar sub califcarea unui obiectcunoscut, e"istent in memonia pro&ramului (creat cu ne8).

    9 %n camp sau o metoda statica nu este le&ata de un obiect anume dintr-o clasa5< %n camp static e"ista o sin&ura data pentru o clasa, find parta at de catre toate

    obiectele clasei respective5= Campurile statice pot f re erite prin numele clasei5> etodele statice sunt la nivel de clasa, pot f re erite prin numele clasei ara a f

    necesara e"istenta unui obiect5? etoda main5A etodele statice nu pot accesa campuriE metode nestatice din clasa.B +locul static este apelat o sin&ura data, la prima creare a unui obiect din clasa

    respectiva sau la apelarea unei membre statice din acea clasa si poate sainitializeze doar date statice.

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    17/28

    > Operatorii LL si L[ plicati pe re erinte de obiecte, compara re erintele, si nucontinutul obiectelor

    Bar age collector -ul7

    1 dezaloca memoria alocata prin ne8, atunci cand obiectele nu mai sunt olosite59 colecteaza memoria ramasa alocata in obiectele care nu mai sunt utilizate sicompacteaza eap-ul, rearan and obiectele alocate5 -!top-and-cop*:

    < RC-ul opreste pro&ramul, scaneaza toate re erintele de pe stac$ si copiazaobiectele identifcate in noul eap. Ceea ce ramane e &arba&e-ul care trebuiedezalocat, iar noul eap e de a compactat

    /inta a mostenirii :

    1 ostenirea se realizeaz ori de c4te ori se creaz o clas: se mo;tene;te dinOb ect5

    9 ostenire: clasa nou se aseamn cu clasa vec e: cuv4ntul c eie e"tends5< Clasa nou va prelua automat toate campurile ;i metodele din clasa de baz5= He&ul nescris la mostenire: c4mpurile din clasele de baz se scriu private iar

    metodele se las public (sau protected)45> Clasa derivat poate s preia o metod din clasa de baz si s o rescrie5? Din clasa derivat, pentru a se apela o metod din clasa de baz se poate utiliza

    super5A Healizarea mostenirii: la crearea obiectului din clasa derivat, se creaz un

    subobiect din clasa de baz (ca si cum ar f realizat o compozitie ctre acesta)5B 2nitializarea subobiectului din clasa de baz: doar prin constructor5F Constructorul clasei de baz este apelat intotdeauna inaintea constructorului clasei

    derivate51N 'entru apel constructor al cl de baz cu ar&umente: super ( ar&umente)

    /inta a compoziEiei7

    1 !e plaseaz o re erin ctre un obiect nou Jntr-o clas nou9 He erintele nou create se initializeaz la valoarea null -Q trebuie initializate

    e"plicit

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    18/28

    < 'entru realizarea operatiilor de mostenire E compozitie, este sufcient ca s seimporte clasele reutilizate (codul lor surs nu este necesar)

    9ecanismul upcast :1 socierea dintre numele metodei si corpul metodei 3 le&are (bindin&)59 arl* bindin&: atunci cand le&area se ace la compilare5< ate bindin&: atunci cand le&area se ace la e"ecutie, e"act inainte de e"ecutia

    e ectiva a metodei5= ate bindin& L d*namic bindin& sau runtime bindin&5> ate bindin&: necesit un mecanism pentru identifcarea tipului la e"ecutie (H@@2) 3

    pentru a se identifca in mod corect corpul metodei care trebuie apelat5? 2n #ava se utilizeaza late bindin& pentru orice apel de metod, cu e"ceptia

    metodelor static si fnal (private e implicit fnal pt ca o metoda private nu poate fmostenita)5

    A Campurile si elementele static sunt rezolvate la compilare5B e&area constructorilor este realizata la compilare

    &s a vs. &s like a :1 Helatie de mostenire de tip is-a: clasa derivat doar suprascrie inter a a clasei de

    baz59 Helatie de mostenire de tip is-li$e-a: clasa derivat contine metode suplimentare

    a de clasa de baz5< Hela ia de substitu ie: a o relatie de tip is-a substitutia este pur: orice mesa

    trimis clasei derivate poate f trimis si clasei de baz (rezolvarea mesa ului se aceprin upcast) a o rela ie de tip is-li$e-a: partea e"tins din clasa derivat nu maieste disponibil prin upcast (prin adresarea clasei de baz)5

    = Do8ncast: opera ia invers upcast 3 nu este o opera ie &arantat, in sensul in carenu stim e"act clasa derivat ctre care se ace do8ncast5

    > #ava verifc orice conversie (cast), si daca nu se poate realiza se arunc o e"ceptiede tipul ClassCast "ception

    Containere7

    1 ecesare datorita aptului ca nu stim de la desi&n numarul de obiecte necesarepentru a rezolva o anumita problema5

    9 Containerele sunt siruri de re erinte catre alte obiecte5< le se e"pandeaza automat pentru a salva noi obiecte, dupa necesitati5= 9 tipuri de liste: rra* ist, in$ed ist5

    1B

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    19/28

    > Containerele in #ava sunt create sa pastreze obiecte de tipul Ob ect. -Q ele potsalva orice5

    ? 'ot aparea e"ceptii la Do8ncast la runtime, timp de e"ecutie crescut datoritopera iei de Do8ncast

    Cuvantul c-eie t-is7

    1 2n fecare metoda apelata, re erinta obiectului sub care se apeleaza metoda estetransmisa in metoda sub orma re erintei t is

    9 t is poate f utilizat doar in interiorul metodelor ne-statice< 2n interiorul unei metode dinstr-o clasa, la apelul unei metode din clasa curenta, nu

    este nevoie sa se utilizeze t is= @ is este recvent utilizat in return, pentru a returna obiectul curent

    Clase a stracte7

    1 Dintr-o clasa abstracta nu se poate instantia nu se poate instantia si oloseste doarla dezvoltarea ulterioara a unor clase ce descriu obiecte concrete5

    9 'ot contine obiecte ara nici o implementare5< ste defnita prin cuvantul c eie abstract5= 'une la dispozitia subclaselor un model complet pe care sa-l implementeze5> u se pot crea obiecte din clasa abstract L Q eroare la compilare5? re cel putin o metoda abstracta, care se implementeaza in toate subclasele.

    &nter*ete7

    1 !e implementeaza si metodele nu au bloc59 O clasa care implementeaza o inter ata trebuie obli&atoriu sa specifce

    implementari pentru toate metodele inter etei5< O clasa poate implementa mai multe inter ete L superinter ete separate prin

    vir&ula 3 mostenire multipla5= Corpul unei inter ete contine variabile constante, implicit static si fnal care trebuie

    initializate5> etodele sunt implicit public si nu pot f declarate cu nici un identifcator pblic,

    private sau protected5

    9osternirea multipla7

    1 2n #ava se poate e"tinde o sin&ura clas si se pot implementa oricate clase59 Holul inter etelor: sa se poata ace upcast la mai mult decat o clasa de baza

    1F

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    20/28

    < Daca se poate crea o clasa de baza ara defnitii de metode si variabile membre, serecomanda sa se creeze inter ete in locul claselor abstracte5 -2nter etele se potcombina (se e"tinde inter etele la el ca si clasele)5

    = Coliziunea numelor la implementarea mai multor inter ete (daca inter etele debaza au acelasi nume de metoda cu semnaturi di erite): este o problema dacametodele di era doar prin tip de return LQ eroare la compilare5

    > Campurile care sunt inserate intr-o inter ata devin in mod automat statis si fnalLQ reprezinta un mod convenabil pentru a defni constante (similar cu enum)5

    ? Campurile defnite in inter ete nu pot f blan$ fnals, ele trebuie initializate ladefnire.

    &nner classes7 1 !e plaseaza clase in interiorul altor clase59 2nner classes reprezinta un concept di erit de compozitie5

    < De obicei, clasa e"terioara are o metoda care returneaza un obiect din clasa inner5= @ipul obiectului din clasa interioara se specifca precum: OuterClass.2nnerClass5> Obiectul clasei interioare are un lin$ (re erinta) catre obiectul clasei e"terioare care

    l-a creat5? Obiectul clasei interioare poate accesa membrii obiectului clasei e"terioare ara ca

    sa fe nevoie de califcare (dreptul de a accesa este asupra tuturor obiectelormembre ale clasei e"terioare5

    A 'entru a se obtine re erinta la obiectul clasei e"terioare (din obiectul clasei inner)se utilizeaza: Outer@*pe.t is 5

    B 'entru a crea un obiect din clasa inner pornind de la un obiect din clasa outer sepoate utiliza: obiectOuter.ne8 5

    F Clasele inner sunt potrivite pentru a implementa inter ete: se realizeazaascunderea implementarii

    Clase interioare anonime7

    1 !unt clase interioare ara nume (clase create direct la momentul utilizarii lor)9 fnalizeaza constructia instructiunii care contine defnitia clasei anonime< Campurile din clasele anonime pot f initializate cu valori din a ara (din domeniul

    unde se creaza clasa)= Daca intr-o clasa anonima se doreste a f utilizat un ar&ument (sau o valoare)

    defnita in a ara acesteia, atunci re erinta acesteia trebuie sa fe fnal> Clasele anonime nu pot avea constructor, dar initializarile se pot realiza in blocul

    non-static de initializare

    9N

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    21/28

    ? Clasele interioare pot f create static (nested classes) daca nu se doreste utilizareare erintei obiectului e"terior in interiorul clasei inner

    A Clasele interioare parte a unei inter ete devin automat static public. Hol: crearea decod comun care sa fe utilizat de toate implementarile inter etei

    B Oricat de adanca este imbricarea claselor nested, acestea pot accesa obiectelemembre din clasele e"terioare, indi erent de nivelul de imbricare

    F a mostenire dintr-o clasa inner, trebuie urnizat la constructia obiectului un obiectdin clasa inner, pentru a se permite construirea sub-obiectului cl. baza( enclosin&ClassHe erence.super() )

    1N Clasele locale unui domeniu de vizibilitate au access la toate variabilele domeniuluirespectiv (inclusiv cele fnal), insa aceste clase nu au specifcator de access

    Closure : un obiect apelabil care retine in ormatie despre domeniul de vizibilitate in care a

    ost creat (are access la variabilele din domeniul de vizibilitate unde a ost creat)5-LQ clasa interioara este un closure (deoarece are o re erinta catre obiectule"terior si poate sa acceseze inclusiv membrii privati ai clasei e"terioare)

    Call ack : un obiect primeste o in ormatie care va permite sa apelam obiectul initial la un

    moment ulterior de timp. !e implementeaza cu clase interioare. Clasa de tipClosure urnizeaza o poat Jn intriorul clasei e"teriore (dar intr-un mod sa e 3 nu se

    necesit ca sa trans ormam accesul la metodele acestei clase)

    &teratori :1 ste un desi&n pattern59 %n obiect de tip iterator este asociat unei colectii si permite re&asirea ordonata a

    obiectelor din colectia respective5< etoda iterator() a unei colectii5= etoda ne"t() a obiectului iterator: produce urmatorul element din colectie5> etoda as e"t(): intero& eaza daca mai sunt elemente neiterate5? etoda remove(): ster&e ultimul element iterat din colectie5A 2teratorii pot produce elementele colectiei doar intr-o sin&ura directive5B ist2terator: urnizat doar de inter ata ist, poate parcur&e elementele colectiei in

    ambele directii

    < iectul Class :

    91

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    22/28

    1 #ava realizeaz H@@2 prin intermediul obiectului Class59 cesta contine in ormatie re eritoare la tip, in ormatie care poate f intero&at5< 'entru fecare clas pe care o avem in pro&ram, e"ist un obiect Class asociat5 a

    compilarea unei noi clase, acest obiect este creat si salvat in fsierul .class5= a crearea unui obiect dintr-o clas, #/ utilizeaz un subsistem numit class

    loader5> @oate clasele sunt incarcate in mod dinamic de ctre #/ la prima utilizare a

    acestora (anume cand se ace prima re erinta la un membru static al clasei)5? a incarcarea unei clase, se verifc daca obiectul Class al tipului respectiv este

    incarcat, daca nu, se identifc fsierul .class pe disc, si octetii acestuia suntverifcati inainte s fe incarcati

    /istemul de &(< intr un lim aj de programare : !istemul de 2EO intr-un limba de pro&ramare trebuie s fe capabil s trateze:!urse

    di erite de dispozitive de 2EO (fsiere, consola, cone"iuni de retea etc),@ipuri di eritede access la surse (access secvential, access random, access buZered),@ipuridi erite de lucru cu sursa (binar, la nivel de caracter, la nivel de linie, la nivel decuvant)

    Clasa $ile :1 Heprezinta un nume a unui fsier sau unui set de fsiere dintr-un director59 etoda list() -Q produce un sir de !trin& care reprezinta fsierele re erite de

    obiectul de tip ile5< ist poate f invocata utilizand un Director* ilter, pentru a returna doar acele

    fsiere pentru care numele respecta un pattern5= 2nter ata ilename ilter: metoda accept primeste la intrare obiectul de tip ile si

    strin&ul pentru comparare. etoda list din ile apeleaza metoda accept pentrufecare fsier din ile, iar acesta este inserat in lista doar daca accept urnizeazatrue5

    > Obiectul ile poate f utilizat ca sa creemEster&emEredenumim un directorEfsier sau

    un directorEfsier cu o intrea&a cale5? - ile poate f utilizat ca sa citim in ormatiile re eritoare la un fsierEdirector

    &nput si

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    23/28

    = @oate clasele de 2EO sunt derivate din acestea5 - a realizarea e ectiva de 2EOpro&ramatorii creaza insuruiri de obiecte din clasele de 2EO (desi&n patternulDecorator)

    ;ipuri de &nput/tream :1 +*te rra*2nput!tream: permite ca un buZer de memorie sa fe utilizat ca si un

    2nput!tream (din buZer se e"tra& octeti)59 !trin&+uZer2nput!tream: converteste un !trin& intr-un 2nput!tream5< ile2nput!tream: sursa de intrare e un fsier. !e urnizeaza la construirea obiectului

    fe un !trin& fe un ile5= 'iped2nput!tream: este asociat cu un 'ipedOutput!tream (care este urnizat la

    construirea obiectului). 2mplementeaza conceptul de 'ipe5> !e]uence2nput!tream: converteste unul sau mai multe 2nput!tream intr-un sin&ur

    obiect de tip 2nput!tream (la construire se urnizeaza fe un 2nput!tream, fe unnumerator de obiecte 2nput!tream)5

    ? ilter2nput!tream: clasa abstracta, inter ata pentru decoratorii care urnizeazatipuri particulare de citire

    ;ipuri de Hecomandare: sa se utilizeze clase de tip Header si \riter ori de cate ori e posibil5

    9

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    24/28

    ? a citiri specifce la nivel de octet, sa se utilizeze 2nput!tream si Output!tream

    /erializare :1 'astrarea obiectelor dincolo de e"ecutia pro&ramelor59 st el obiectele pot f recuperate si e"ecutia restartata de la punctul unde a ost

    oprita anterior5< Orice obiect dintr-o clas care implementeaza !erializable poate f convertit in sir

    de octeti si apoi restaurat5= 'ersistent: durata de viata a unui obiect e"ista dincolo de e"ecutia unui pro&ram5> 'entru realizarea persistentei, obiectele trebuie serializate E deserializate in mod

    e"plicit (li& t8ei& t persistence)5? 'entru serializare, se creaz un obiect dintr-un tip Output!tream, acesta este

    ^8rapV in interiorul unui Ob ectOutput!tream si se utilizeaza metoda 8riteOb ect5A !erializarea salveaza intre& 8ebul de obiecte din spatele obiectului serializat5 -@ipul

    unui obiect deserializat: &etClass

    0 ternalize :1 e"tinde inter ata !erializable59 a obiectele deserializate cu "ternalizable, obiectele sunt construite obisnuit (cu

    de ault constructor) si apoi se apeleaza metoda read "ternal5< a obiectele "ternalizable, subobiectele componente trebuie serializate manual

    (in 8rite "ternal) iar la deserializare, ele trebuie recuperate de pe disc5= a mostenire dintr-o clasa "ternalizable, se apeleaza 8rite "ternal si read "ternal

    a clasei de baza pentru a se asi&ura serializare E deserializare corecta

    #;;&7

    1 Hun-@ime @*pe 2dentifcation9 Descoperirea tipului la e"ecutie si utilizarea acestuia< 9 tipuri de H@@2:

    -@raditional 3 la compilare -HeWection: - la e"ecutie [[[= %pcast: necesit realizarea automata a H@@2 pentru invocarea automat(polimorfc) a metodei suprascrise

    > 'rin H@@2 se poate identifca tipul e"act al unui obiect la e"ecutie (limba ul depro&ramare are metode pentru a realiza acest lucru)

    9=

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    25/28

    $inal7

    1 declara ca o clasa nu poate accesa subclase9 declararea are 9 scopuri: securitate : unele metode pot astepta ca parametru un obiect al unei clase si nu al

    unei sublcase, dar tipul e"act al unui obiect nu poate f aWat cu e"actitate decat inmomentul e"ecutiei

    pro&ramare in spirit orientat obiect: o clasa per ecta nu trebuie sa aiba subclase

    $inalize7

    ste o metoda ce se implementeaza in vederea oricarui tip ce incapsuleaza oresursa ne&estionata, care trebuie sa suporte fnalizarea, adica RC determina ca unobiect trebuie eliminate din memorie si apeleaza metoda inalize care o era

    resursei eliberarea corecta, colectarea acesteia

    0 ecutia unui loc ;ry Catc- $inally7

    1 %n bloc tr* este urmat de mai multe blocuri catc si optional de un blocfnall*

    9 +locul tr*-catc sta la baza sistemului de tratare a erorilor, o portiune de codnu poate f monitrizata pentru tratarea e"ceptiilor, ara a f inclusa intr-unast el de bloc

    < Daca o e"ceptie este aruncata in blocul tr*, aceasta este prinsa in bloculcatc corespunzator, dupa care blocul acelui catc se e"ecuta

    = inall* este olosit atunci cand dorim ca anumite portiuni de cod sa see"ecute indiZerent daca blocul tr* s-a e"ecutat normal sau a &enerat oe"ceptie LQ blocul fnall* se e"ecuta indiZerent de modul in care blocul tr*si-a terminat e"ecutia

    Clauza t-ro:s7

    1 Daca o metoda contine cod care ar putea &enera o e"ceptie, si totusi, in cadrulmetodei nu e"ista un cod tr*-catc care sa prinda acea e"ceptie LQ metodatrebuie sa specifce prin clauza t ro8s ca poate &enera acea e"ceptie

    9 u se supun acestei re&uli e"ceptiile care sunt subclase ale claselor rror siHun@ime "ception

    9>

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    26/28

    Clauza t-ro:7

    'entru a &enera manual o e"ceptie in urma unei stari pe care o considerameronata, olosim cuvantul c eie t ro85

    6olimorfsm7

    1 celasi nume se poate re eri la 9 metode di erite.9 ste de 9 eluri: Overridin& 3 metoda cu acceasi semnatura cu o alta din clasa parinte5 Overridin& 3 doua sau mai multe metode in acelasi clasa cu acelasi nume, dar

    semnaturi di erite.

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    27/28

    iluzia e"istentei unui obiect server inainte ca acesta sa f ost creat5

    daca se pune problema ca diversi clienti sa aibe drepturi de acces di erite la unanumit obiect server, se poate olosi cate un obiect pro"* care sa reprezinte serverul dinperspectiva fecarei cate&orii de clienti. 2n acest caz, obiectul pro"* se mai numestepro"* de protectie5

    un obiect pro"* poate uca rolul unui pointer inteli&ent, care poate e ectua operatiisuplimentare la accesarea obiectului re erit. semenea operatii suplimentare tipice sunt:

    o contorizarea re erintelor la un anumit obiect, e"istente la un momentdat. cest lucru permite ster&erea obiectului respectiv cand seconstata ca nu mai e"ista nici o re erinta la el. De e"emplu, un &arba&ecollector ar putea utiliza acest principiu de lucru5

    o incarcarea in memorie a unui obiect persistent atunci cand el estere erit prima oara5

    o asi&urarea blocarii obiectului re erit, pe durata accesarii lui, ast el incatsa nu poata f modifcat

    `ablonul 'ro"* asi&ur un suro&at sau un Jnlocuitor

    pentru alt obiect pentru a controla accesul la acesta

    Dele&area la distan0 controleaz accesul ctre un obiect nelocal

    Dele&area virtual controleaz accesul la o resurs costisitor de creat

    Dele&area de protec0ie controleaz accesul la o resurs pe baza unor drepturi deacces

    He erin0 inteli&ent: copierea la scriere (cop* on 8rite), blocarea unui obiect,numrarea re erin0elor, cac in&

    2!.Design patternul &terator

    !ablonul 2terator asi&ura o cale de accesare secventiala a elementelor unui obiecta&re&at, ara a e"pune reprezentarea lui de baza.

    etodele 2teratorului pot avea nume di erite

    #ava 2terator: ne"t(), as e"t(), remove()

    C 2 numerator: Current, ove e"t(), Heset()

    "ist 2teratori interni i e"terni9A

  • 7/26/2019 Raspunsuri Si Intrebari hatz

    28/28

    2teratorul e"tern este controlat de client, ca Jn e"emplul precedent (cu metoda ne"t)

    2teratorul intern este controlat de 2teratorul Jnsui, cruia trebuie s i se spun ceopera0ii s e ectueze cu elementele pe care le parcur&e

    `ablonul se utilizeaz pentru:

    accesa con0inutul unui obiect a&re&at r a e"pune reprezentarea intern

    asi&ura suport pentru mai multe traversri ale obiectelor a&re&ate

    urniza o inter a0 uni orm pentru traversarea structurilor a&re&ate di erite

    'entru a suporta o itera0ie polimorfc

    !uport varia0ii Jn traversarea unui a&re&at

    Obiectele a&re&ate pot f traversate Jn mai multe eluri i de mai multe ori

    Obiectele 2terator simplifc inter a0a &re&at

    &re&atul are nevoie de o metod unic pentru crearea 2teratorului

    !cade cuplarea dintre client i obiectele a&re&ate

    Crete coeziunea obiectului a&re&at prin eliminarea necesit0ii de a asi&ura el Jnsuitraversarea

    2". Design patternul /trategy!cop: !e defnete o amilie de al&oritmi5 se Jncapsuleaz fecare mebru5 al&oritmii se acintersc imbabili.

    plicabilitate3 ulte clase Jnrudite di er doar prin comportament3 !e olosesc diverse variante ale unui al&oritm3 l&oritmii olosesc date irelevante pentru client3 O clas defnete comportamente multiple, defnite de conditii &ard la Jnceputulmetodelor.