Programare Orientata Obiect · 2016 · Sesiune
- Profesor
- Lorina Negreanu
- Anul examenului
- 2016
- Sesiune
- Sesiune
- Serie
- CA
- Grupă
- toate
- Adăugat
- 28 ianuarie 2017 de anonim
POO 2017 sesiunea de iarna
Ziua 1:
1) Continuati afirmatia: Tipurile de date sunt o multime de valori...
2) aveai o clasa cu un membru static si unul nonstatic. instantia clasa de 2 ori si se modificau membri si trebuia sa iti dai seama ca cel static la final va fi cel de dupa a doua instantiere
3) C extends B, B extends A. Ce returneaza obiectul x de tip C instructiunea "x instanceof A"
4) reparati codul urmator: era o clasa cu o metoda statica generica in T cu determinareMinim(T x, T y). corect era sa spui ca era <T extends Comparable<T>>, ca sa le poti compara cand determini minimul
5) Explicati si exemplificati patternul Factory
La problema aveai de implementat un SortedDictionary, care pornea de la interfata dictionary, care era basically un vector de elemente de tip Entry, cu K cheie V valoare, si era sortat dupa chei. trebuia sa implementezi metodele de Add, locateElement, constructorul, si clasa Entry
Ziua 2:
1) Explicati si exemplificati ce e delegarea ( o portcarie din curs. Daca scriai agregare luai 7+ pe subiectul asta, depinde cata vrajeala scriai)
2) Daca am o metoda m() intr-o clasa A, clasa care e extinsa de o alta clasa B, e posibil sa aflam de cate ori a fost apelata metoda m() dintr-o instanta dinamica de B si de cate ori a fost apelata dintr-o instanta dinamica de A(nu stiu daca asta era exact exprimarea, dar in mare aia e ideea) ? Daca da, modificati metoda m(), daca nu, justificati(hint: se poate).
3) Fie 2 clase A si B care implementeaza interfata I. E posibil ca lista List < I > l sa contina elemente de tipurile A si B ? Justificati. (se poate)
4) Ce afiseaza codul si de ce ?
class A{
public int x;
public A() { this(1); }
public A(int x) { this.x = x; }
public int m() { return x;}
}
class B extends A {
public int x;
public B() { this(2); }
public B(int x) { super(x + 1); this.x += super.x + 1; }
public int m() { return x; }
}
…
Public static vod main(…) {
A a = new A();
B b = new B();
Syso(a.x);
Syso(a.m());
Syso(b.x);
Syso(b.m());
a = new B();
b = (B) a;
Syso(a.x);
Syso(a.m());
Syso(b.x);
Syso(b.m());
}
5) Daca avem o variabila x si facem castul (Integer)x, se va modifica static sau dinamic referinta variabilei x ? (era mai nasol formulata, dar asta era esenta intrebarii) hint: nu, nu se modifica nicio referinta. x e vazut ca Integer doar in momentul castului, in rest e la fel.
Problema: vreti sa create un joc in care personajele sunt oameni sau extraterestrii. Fiecare personaj are 2 coordonate x si y si poate executa o actiune. Actiunea oamenilor este de a afisa “actiune umana”, iar cea a extraterestrilor afiseaza “actiune extraterestra”(asta pt simplitate). La o mutare, un personaj isi modifica pozitia dupa ecuatiile x += xincrement si y = yincrement. Jocul consta intr-o lista List <Personaj> listaPersonaje care la fiecare pas se parcurge si fiecare personaj executa o mutare(adica isi modifica pozitia si face o actiune). Lista trebuie sa poate fi sortata folosind Collection.sort(listaPersonaje) astfel incat oamenii sa se afle inaintea extraterestrilor in lista. Realizati designul corespunzator pentru aceasta problema. (Aici se voia sa fie cat mai POO. Totusi, daca faceai Visitor, Factory, Singleton nu primeai cine stie ce punctaj. Trebuia facuta o clasa abstract Personaj cu o metoda abstracta actiune(). Clasa asta sa fie mostenita de Om si Extraterestru. Era de ajuns sa faci asa pentru ca toate celelalte metode erau commune si pt Om si pt Extraterestru. Instanceof era depunctat mult. Se voia sa nu se duplice cod deloc)
Ziua 1:
1) Continuati afirmatia: Tipurile de date sunt o multime de valori...
2) aveai o clasa cu un membru static si unul nonstatic. instantia clasa de 2 ori si se modificau membri si trebuia sa iti dai seama ca cel static la final va fi cel de dupa a doua instantiere
3) C extends B, B extends A. Ce returneaza obiectul x de tip C instructiunea "x instanceof A"
4) reparati codul urmator: era o clasa cu o metoda statica generica in T cu determinareMinim(T x, T y). corect era sa spui ca era <T extends Comparable<T>>, ca sa le poti compara cand determini minimul
5) Explicati si exemplificati patternul Factory
La problema aveai de implementat un SortedDictionary, care pornea de la interfata dictionary, care era basically un vector de elemente de tip Entry, cu K cheie V valoare, si era sortat dupa chei. trebuia sa implementezi metodele de Add, locateElement, constructorul, si clasa Entry
Ziua 2:
1) Explicati si exemplificati ce e delegarea ( o portcarie din curs. Daca scriai agregare luai 7+ pe subiectul asta, depinde cata vrajeala scriai)
2) Daca am o metoda m() intr-o clasa A, clasa care e extinsa de o alta clasa B, e posibil sa aflam de cate ori a fost apelata metoda m() dintr-o instanta dinamica de B si de cate ori a fost apelata dintr-o instanta dinamica de A(nu stiu daca asta era exact exprimarea, dar in mare aia e ideea) ? Daca da, modificati metoda m(), daca nu, justificati(hint: se poate).
3) Fie 2 clase A si B care implementeaza interfata I. E posibil ca lista List < I > l sa contina elemente de tipurile A si B ? Justificati. (se poate)
4) Ce afiseaza codul si de ce ?
class A{
public int x;
public A() { this(1); }
public A(int x) { this.x = x; }
public int m() { return x;}
}
class B extends A {
public int x;
public B() { this(2); }
public B(int x) { super(x + 1); this.x += super.x + 1; }
public int m() { return x; }
}
…
Public static vod main(…) {
A a = new A();
B b = new B();
Syso(a.x);
Syso(a.m());
Syso(b.x);
Syso(b.m());
a = new B();
b = (B) a;
Syso(a.x);
Syso(a.m());
Syso(b.x);
Syso(b.m());
}
5) Daca avem o variabila x si facem castul (Integer)x, se va modifica static sau dinamic referinta variabilei x ? (era mai nasol formulata, dar asta era esenta intrebarii) hint: nu, nu se modifica nicio referinta. x e vazut ca Integer doar in momentul castului, in rest e la fel.
Problema: vreti sa create un joc in care personajele sunt oameni sau extraterestrii. Fiecare personaj are 2 coordonate x si y si poate executa o actiune. Actiunea oamenilor este de a afisa “actiune umana”, iar cea a extraterestrilor afiseaza “actiune extraterestra”(asta pt simplitate). La o mutare, un personaj isi modifica pozitia dupa ecuatiile x += xincrement si y = yincrement. Jocul consta intr-o lista List <Personaj> listaPersonaje care la fiecare pas se parcurge si fiecare personaj executa o mutare(adica isi modifica pozitia si face o actiune). Lista trebuie sa poate fi sortata folosind Collection.sort(listaPersonaje) astfel incat oamenii sa se afle inaintea extraterestrilor in lista. Realizati designul corespunzator pentru aceasta problema. (Aici se voia sa fie cat mai POO. Totusi, daca faceai Visitor, Factory, Singleton nu primeai cine stie ce punctaj. Trebuia facuta o clasa abstract Personaj cu o metoda abstracta actiune(). Clasa asta sa fie mostenita de Om si Extraterestru. Era de ajuns sa faci asa pentru ca toate celelalte metode erau commune si pt Om si pt Extraterestru. Instanceof era depunctat mult. Se voia sa nu se duplice cod deloc)
Acest subiect avea 1 fișier atașat pe vechiul site, dar s-a pierdut din cauza unei defecțiuni a vechiului server, înainte de mutare.