Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pp:2024:tema2 [2024/04/09 11:26] alexandra.udrescu01 |
pp:2024:tema2 [2024/04/23 23:06] (current) alexandra.udrescu01 [Operatii cu una sau mai multe Tabele] |
||
---|---|---|---|
Line 3: | Line 3: | ||
<note important> | <note important> | ||
- | **DEADLINE TODO** | + | **DEADLINE 5 MAI 23:59** |
* Temele trebuie submise pe curs.upb.ro, in assignment-ul numit ''Tema 2 Scala''. | * Temele trebuie submise pe curs.upb.ro, in assignment-ul numit ''Tema 2 Scala''. | ||
Line 15: | Line 15: | ||
* **var** (**val** este ok!) | * **var** (**val** este ok!) | ||
</note> | </note> | ||
- | <note>Scheletul se poate găsi la: TODO</note> | + | <note>Scheletul se poate găsi la:{{:pp:2024:skel2.zip|}}</note> |
==== Scopul Temei ==== | ==== Scopul Temei ==== | ||
Line 97: | Line 97: | ||
</code> | </code> | ||
- | **1.4.** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. TODO: keep it? | + | **1.4.** Definiti operatia de sortare a liniilor din tabel dupa o anumita coloana. |
<code scala> | <code scala> | ||
def sort(column: String): Table = ??? | def sort(column: String): Table = ??? | ||
Line 166: | Line 166: | ||
**2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori care sa ne permita sa scriem cod mai concis. | **2.2.** Pentru a simplifica definirea conditiilor de filtrare, vom defini cateva operatori care sa ne permita sa scriem cod mai concis. | ||
Vom folosi urmatorii operatori ce extind clasa FilterCond: | Vom folosi urmatorii operatori ce extind clasa FilterCond: | ||
- | - == - pentru a verifica egalitatea a doua conditii de filtrare. | + | - === - pentru a verifica egalitatea a doua conditii de filtrare. |
- && - pentru a face conjunctia a doua conditii de filtrare. | - && - pentru a face conjunctia a doua conditii de filtrare. | ||
- || - pentru a face disjunctia a doua conditii de filtrare. | - || - pentru a face disjunctia a doua conditii de filtrare. | ||
Line 212: | Line 212: | ||
</code> | </code> | ||
- | **3.1.**. Implementati functia create, care primeste numele unei tabele si o lista de coloane si creeaza o noua tabela cu acele coloane doar daca numele tabelei nu exista deja in baza de date. Daca numele tabelei exista, functia va intoarce baza de date nemodificata. | + | **3.1.**. Implementati functia create, care primeste numele unei tabele si creeaza o noua tabela doar daca numele tabelei nu exista deja in baza de date. Daca numele tabelei exista, functia va intoarce baza de date nemodificata. |
<code scala> | <code scala> | ||
- | def create(tableName: String, columns: List[String]): Database = ??? | + | def create(tableName: String): Database = ??? |
</code> | </code> | ||
Line 250: | Line 250: | ||
* Numele coloanei utilizate pentru join in tabelul final va fi preluat din primul tabel. | * Numele coloanei utilizate pentru join in tabelul final va fi preluat din primul tabel. | ||
* Se va intoarce eroare cand unul din tabele nu exista. Daca un tabel este gol, se va intoarce celălalt tabel. | * Se va intoarce eroare cand unul din tabele nu exista. Daca un tabel este gol, se va intoarce celălalt tabel. | ||
+ | * Liniile din rezultat sunt in ordinea: linii ce au intrări in ambele tabele, linii doar in prima tabela, linii doar in a2a tabela. | ||
<hidden Exemplu> | <hidden Exemplu> | ||
Line 422: | Line 423: | ||
al caror nume incepe cu 'J' si care au un hobby. In final se extrag doar coloanele name si hobby. | al caror nume incepe cu 'J' si care au un hobby. In final se extrag doar coloanele name si hobby. | ||
- | <code scala> def yougAdultHobbiesJ(db: Database): Option[Table] = ??? </code> | + | <code scala> def youngAdultHobbiesJ(db: Database): Option[Table] = ??? </code> |
==== Testare ==== | ==== Testare ==== |