Sunteți pe pagina 1din 10

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

Clas: set de obiecte cu caracteristici i funcionalitate identice (termenul de clasa se substituite termenului de tip)
O clasa reprezinta o modalitate de a descrie un nou tip de date. Clasa este o descriere a unei multimi de obiecte caracterizate prin
structuri si comportamente similare. De aceea, o clasa va cuprinde definitiile datelor si operatiilor ce caracterizeaza obiectele clasei
respective.
Datele definite intr-o clasa se mai numesc atribute, iar operatiile se mai numesc metode sau functii-membru. Atributele si metodele
formeaza membrii unei clase.
Sintaxa folosita pentru a defini o clasa in Java este:
class nume_clasa {
// date si metode
}
Salvarea pe disk se face in folderul built cu numele clasei si extensia .class
2. Ce este un package?
Un package grupeaza toate clasele , Utilizate pentru organizarea claselor . Packageurile pot si comprimate sub forma jar.
3. Defineste final, finally finalize.
Final- o clasa declarata cu final nu poate fi subclasata. O clasa declarata ca final opreste linia de mostenire, nu se poate extinde o clasa finala.
O metoda declarata cu final nu poate fi suprascrisa.O variabila declarata cu final poate fi initializata numai o singura data. Utilizata in special
pentru mostenire
Finally- Blocul declarat cu finally se executa mereu dupa try and catch atunci cand apare o exceptie neasteptata sau fara a fi o exceptie.Este
utilizat pentru a evita . Ajuta programatorul sa evite curatarea codului accidentala prin return break sau continue.
Finalize-este o metoda care daca este prezenta intr-o clasa este apelata inaintea garbage collectorului. Metoda finalize() este utilizata pentru
curatarea codului inainte ca un obiesct sa fie luat de garbage colector

4. Defineste variabila locala, variabila membra si variabila de clasa


Variabile de instan. Sunt unice fiecrei instane le clasei.
Variabile de clas. O singur copie pentru toate instanele clasei. Se folosete modificatorul de acces static.
Variabile locale. Variabile temporare declarate n cadrul unei metode sau a unui bloc. Sunt vizibile doar n cadrul acelei metode.
Parametri. Variabilele prin care se trimit argumente la apelul metodelor.
variabile de Instanta (atribute) aceste variabile definesc valorile unui obiect, deci, ele sunt create atunci cnd obiectul este creat; ele exista
de cnd obiectul este creat si pana cand acesta este distrus; doar obiectul si metodele sale au acces la variabilele de instanta;
variabilele statice aceste variabile sunt parte dintr-o clasa; sunt create atunci cnd clasa este incarcata de JVM;
variabile locale ale unor metode aceste variabile sunt definite pe stiva metodei si ele exista atta timp ct metoda este executata (exista in
stiva de apeluri); variabilele locale nu pot fi accesate si din interiorul unor metode imbricate chiar daca ele exista cand metoda imbricata este
executata
variabile locale unui bloc de cod - aceste variabile sunt definite in interiorul blocurilor de cod (intre { si }) si poate fi utilizate in timp ce
blocul este executat; blocuri de cod sunt tipice pentru, for, while si blocuri de initializare.
Variablie membre- sunt declarate in cadrul unei clase, dar apartin unui obiect.

5. Defineste private, protected , public


Private: elementele private pot fi accesate doar de creatorul clasei in cadrul metodelor acelei clase
- folosit in declararea unui camp sau a unei metode dintr-o clasa - specifica faptul ca membrul sau metoda respectiva poate fi accesata doar
din cadrul clasei insesi, nu si din clasele derivate din aceasta clasa.
Public: elementele publice sunt disponibile oricaror alte clase
Protected: similar cu private, utilizat in mostenire, clasele care mostenesc pot accesa elementele private din clasele de baza
-folosit in declararea unui camp sau a unei metode dintr-o clasa - specifica faptul ca membrul sau metoda respectiva poate fi accesata doar
din cadrul clasei insesi sau din clasele derivate din aceasta clasa.

6. Rolul claselor de tip Filter


Un filtru este un obiect de a efectua sarcini de filtrare pe fiecare cerere, la o resurs (cu un coninut de servlet sau statice), sau pe rspunsul
la o resurs, sau ambele.
Exemplele care au fost identificate pentru acest design sunt
1) Filtre de autentificare
2) exploatarea forestier i Audit filtre
3) de conversie fotografie filtre
4) Filtre de compresie a datelor
5) Filtrele de criptare
6) Filtre Tokenizing
7) Filtre care declanseaza resurse de acces evenimente
8) XSL / T filtre
9) Mime-Tip filtru lan
Clasele Filter sunt radacina abstracta a claselor de decorator
7. Design patternul Iterator
8. Descrieti modul de utilizare a Decoratorilor la realizarea i/o in java
9. Care este diferenta intre o clasa abstracta si o interfata
O interfata defineste un set de metode, proprietati, evenimente, indexatori. Acesti membri vor fi implementati de o clasa sau chiar de o
structura.
O clasa abstracta este o clasa care nu poate fi instantiata si este folosita pentru mostenire.
O clasa care nu este abstracta si care deriveaza dintr-o clasa abstracta, trebuie sa includa implementarile tuturor membrilor abstracti.

10. Descrieti mecanismul try-catch-finally

try {
// codul care este susceptibil sa genereze exceptie
} catch (Type1 tp1) {
// exceptii de tipul Type1
} catch (Type2 tp2) {
// exceptii de tipul Type2
}
finally {
// cod care se executa indiferent de tipul de exceptie aruncat (sau nu)
}
Try catch functioneaza ca un switch pe tipul de exceptie
2 modalitati de tratare a erorilor
Termination: eroarea este aruncata
Resumption: se insereaza cod try catch pt rezolvarea erorii
Blocul "try" contine instructiunile de deschidere a unui fisier si de citire dintr-un fisier ambele putnd produce exceptii. Exceptiile provocate
de aceste instructiuni sunt tratate n cele doua blocuri "catch", cte unul pentru fiecare tip de exceptie.
Inchiderea fisierului se face n blocul "finally", deoarece acesta este sigur ca se va executa. Fara a folosi blocul "finally" nchiderea fisierului ar
fi trebuit facuta n fiecare situatie n care fisierul ar fi fost deschis, ceea ce ar fi dus la scrierea de cod redundant:
11. Descrieti modulele de creare a obiectelor din tipul claselor interioare care nu sunt anonimie
Clasa interioar este necesar numai clasei exterioare. Pentru reducerea numrului de clase de nivel superior si pentru simplificarea
comunicrii ntre clasele asculttor la evenimente putem defini clasele receptor ca niste clase interioare cu nume, incluse n clasa cu
fereastra aplicatiei:

class MFrame extends JFrame {


JButton b1 = new JButton (" + ");
JButton b2 = new JButton (" - ");
JTextField text = new JTextField (6);
int n= 0;
public MFrame() {
Container c = getContentPane();
b1.addActionListener (new B1L());
b2.addActionListener (new B2L());
c.setLayout (new FlowLayout());
c.add(b1); c.add(b2);
text.setText(" "+n);
c.add (text);
}
// clase incluse cu nume
class B1L implements ActionListener {
public void actionPerformed (ActionEvent ev) {
text.setText(" "+ ++n);
}
}
class B2L implements ActionListener {
public void actionPerformed (ActionEvent ev) {
text.setText(" "+ --n);
}
}
Definirea de clase incluse anonime reduce si mai mult lungimea programelor, dar
ele sunt mai greu de citit si de extins

12. Fie un system formal definit pe alfabetul format din literele a si b.Limbajul format accepta doar cuvinte care se incheie cu aab.Sa se
scrie automatul finit determinist pentru acest limbaj si reprezentarea limbajului in BNF.
13. Descrieti modaliatea de realizare a unui iterator si incercati sa furnizati un exemplu concret de utilizare a acestui sablon de
programare
Un iterator este un obiect care permite traversarea unei colectii si modificarea acesteia (ex: stergere de elemente) in mod
selectiv. Puteti obtine un iterator pentru o colectie, apeland metoda sa iterator(). Interfata Iterator este urmatoarea:

public interface Iterator<E> {


boolean hasNext();
E next();
void remove(); // optional
}
Metodele au urmatorul comportament:
hasNext -intoarce true daca mai exista elemente neparcurse inca de iteratorul respectiv
next -intoarce urmatorul element
remove -elimina din colectie ultimul element intors de next. In mod evident, remove nu poate fi apelat decat o singura data dupa un
apel next. Daca aceasta regula nu este respectata, vom primi o eroare.
Ne putem imagina ca un iterator se pozitioneaza intre elementele colectiei. Initial, cursorul sau precede primul element, astfel ca
primul apel next va intoarce primul element.
Atentie: Metoda remove este singura modalitate SIGURA de a inlatura un element dintr-o colectie in timpul parcurgerii acesteia. Orice
alta metoda are un comportament neprecizat (nu putem garanta ca stergerea va avea loc, sau ca elementul sters va fi cel pe care chiar
doream sa-l stergem).
Este util sa folosim iteratori cand dorim: stergerea elementului curent, in timpul iterarii
Cand dorim sa iteram mai multe colectii in paralel.

Exemplu de folosire a unui iterator:


Collection c = new ArrayList();
Iterator it = c.iterator();
while (it.hasNext()) {
//verificari asupra elementului curent: it.next();
it.remove();
}
14. Ce inseamna upcast? Descrieti mecanismul legarii intarziate si cum faciliteaza acest mecanism realizarea proprietatii de upcast.

Proprietatea de upcast presupune tratarea unui obiect dintr-o clasa derivata ca si cum ar fi din clasa de baz.
Legare (binding) = asocierea dintre numele metodei si corpul metodei. Late binding necesita un mecanism pt identificarea
tipului la executie(RTTI), pt a se identifica in mod corect corpul metodei care trebuie apelat. In cazul late binding, legarea se face la
executie, exact inainte de executia efectiva a metodei. Se utilizeaza late binding pt orice apel de metoda, cu exceptia metodelor static
si final.
15. Care este rolul constructorului de copiere in cazul agregarii indirecte?
Constructorul este o metod special apelat automat la instanierea unei clase i face operaiile necesare pentru iniializarea fiecrui
obiect al unei clase fie ea static sau dinamic. Dac se folosete pentru a iniializa un obiect cu alt obiect atunci denumirea de
constructor de copiere.
Agregarea este relatia intre doua obiecte in care unul dintre obiecte apartine celuilalt obiect. Agregarea reda apartenta unui obiect la
un alt obiect.
Din punct de vedere conceptual, exista 2 tipuri de agregare:
strong la disparitia obiectelor continute prin agregare, existenta obiectului container inceteaza (de exemplu, o carte nu poate exista
fara pagini)
weak obiectul-container poate exista si in absenta obiectelor agregate (de exemplu, o biblioteca poate exista si fara carti)
agregare indirect ?

16. Care este diferenta intre colectiile generice, heterogene si parametrizate?


Colectiile sunt un ansamblu de iterfete si clase ce realizeaza: colectarea impreuna a obiectelor, stocarea, sortarea si accesarea
obiectelor.
Colectii generice putem specifica tipul de data pe care il va folosi colectia,
ex: List<String> strings
Colectii eterogene atunci cnd se creaz o colecie pentru elemente de acelai tip (necunoscut), oricine poate insera elemente de alt
tip
Colectii parametrizate 17. Serializarea
Pastrarea obiectelor dincolo de executia programului.
= transformarea unui obiect intr-o secventa de octeti, din care sa poata fi refacut ulterior obiectul original. Este un mechanism utilizat
pt salvarea si restaurarea datelor.
18. Externalizarea

Ce se intampla daca dorim ca parti din obiect sa nu fie serializate?


Sau dorim s recreem subobiecte de la zero?
Interfata Externalizable: extinde interfata Serializable
2 metode noi: writeExternal, readExternal
Aceste metode sunt apelate automat la serializare / deserializare si contin cod suplimentar care se executa la aceste operatii
La obiectele deserializate cu Externalizable, obiectele sunt construite obisnuit (cu default constructor) si apoi se apeleaza metoda
readExternal
La obiectele Externalizable, subobiectele componente trebuie serializate manual (in writeExternal) iar la deserializare, ele trebuie
recuperate de pe disc
La mostenire dintr-o clasa Externalizable, se apeleaza writeExternal si readExternal a clasei de baza pentru a se asigura serializare /
deserializare corecta
Evitarea serializarii anumitor componente ale obiectelor
Prima metoda: utilizarea Externalizable
Metoda 2-a: cuvantul cheie transient: indica faptul acel camp marcat cu transient nu va fi serializat ca si parte a procesului automat de
serializare
Metoda 3-a: se adauga la clase metodele writeObject si readObject in care se furnizeaza codul programatorului pentru serializare
Aceste metode sunt private si sunt apelate automat de catre writeObject si readObject a claselor ObjectOutputStream si ObjectInputStream

19. Suprancrcarea
Suprancrcarea unei metode (owerloading) este procesul prin care n cadrul unei clase sunt adugate dou sau mai multe metode cu
acelai nume dar cu numr diferit de parametri. n momentul apelrii metodei, mediul de rulare va ti exact ce metod s apeleze pe baza
parametrilor specificai astfel nct nu exista posibilitate de confuzie si de apelare a unei metode greite.

20. Cuvntul cheie this


Cuvntul cheie this este folosit n cadrul metodelor atunci cnd se dorete s se aib acces la referina obiectului curent. Cuvntul
cheie this este o referin ctre obiectul curent. Acest cuvnt cheie este folosit doar n cazurile speciale cnd este nevoie s se fac o
referin explicit la obiectul curent. De exemplu n cazul unei metode care trebuie s returneze obiectul curent.
21. Cuvntul cheie static
Cuvntul cheie static este folosit n java pentru a defini o variabil sau o metod care poate fi accesata prin intermediul numelui clasei, fr
a fi nevoie s se construiasc obiecte de tipul respectiv. n construirea unei aplicaii orientate pe obiecte utilizarea atributelor sau metodelor
statice trebuie s fie evitat i acestea s fie folosite doar n cazuri de strict necesitate.
22. Clase i metode abstracte
o metod se numete abstract dac este doar declarat i nu definit. Declaraia va conine, obligatoriu, cuvntul cheie abstract:
abstract numemetoda ();
o clas ce conine mcar o metod abstract devine clas abstract i va trebui calificat ca atare (n caz contrar se produce o eroare
de compilare). Fiind o clas incomplet, tentativa de a crea un obiect de tip abstract, se soldeaz cu eroare.
23. Interfaa
Interfaa acoper noiunea de clas abstract pur. n aceast situaie definiia tipului este precedat de cuvntul cheie interface, ce va
nlocui cuvntul cheie class.
Prin interfa se pune la dispoziie o form i nu o implementare. Ea poate conine:
membri de tip primitiv (implicit statici i finali);
nume de metode crora li se ataeaz:
- lista de argumente de apel;
- tipurile returnate