This shows you the differences between two versions of the page.
|
poo-ca-cd:laboratoare:colectii-tipuri-de-date-speciale-si-utilitare [2025/11/10 01:29] florian_luis.micu [Obiective] |
poo-ca-cd:laboratoare:colectii-tipuri-de-date-speciale-si-utilitare [2025/11/17 02:11] (current) florian_luis.micu [Obiective] |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| Pe parcursul laboratoarelor și temelor ați folosit structuri de date oferite de API-ul Java. În cadrul acestui laborator le vom aprofunda. | Pe parcursul laboratoarelor și temelor ați folosit structuri de date oferite de API-ul Java. În cadrul acestui laborator le vom aprofunda. | ||
| - | * lucrul cu cele trei tipuri principale de colecții din Java: List, Set, Map | + | |
| - | * cunoașterea diferențelor dintre implementările colecțiilor (eficiență, sortare, ordonare etc) | + | Aspectele urmărite sunt: |
| - | * compararea elementelor unor colecții | + | * tipuri Wrapper peste primitive. |
| - | * contractul equals-hashcode | + | * lucrul cu cele trei tipuri principale de colecții din Java: List, Set, Queue, Map. |
| + | * cunoașterea diferențelor dintre implementările colecțiilor (eficiență, sortare, ordonare etc). | ||
| + | * compararea elementelor unor colecții. | ||
| + | * contractul equals-hashCode. | ||
| - | Aspecte *bonus* urmărite: | + | Aspectele **bonus** urmărite sunt: |
| * utilitare din biblioteca Math. | * utilitare din biblioteca Math. | ||
| * lucrul cu date și ore. | * lucrul cu date și ore. | ||
| * folosirea tipurilor BigInteger și BigDecimal. | * folosirea tipurilor BigInteger și BigDecimal. | ||
| + | <note warning> | ||
| + | * În acest laborator există mai multe secțiuni marcate **[Optional]**. Aceste secțiuni cuprind informații **bonus** care vă pot fi prezentate în **timpul laboratorului** sau pe care le puteți aprofunda **în afara** acestuia, ele nefiind necesare pentru laboratoarele viitoare sau pentru teme. | ||
| + | * De asemenea, veți întâlni câteva secțiuni marcate **[Nice to know]**. Vă recomandăm ca acestea să aibă **prioritate** în parcurgerea secțiunilor de tip **[Optional]**, deoarece vă pot oferi informații bonus care să fie și foarte probabil utile pentru **teme** sau **laboratoare viitoare**. | ||
| + | </note> | ||
| =====🌯 Wrappers pentru tipuri primitive===== | =====🌯 Wrappers pentru tipuri primitive===== | ||
| Line 37: | Line 44: | ||
| ====Clase Wrapper==== | ====Clase Wrapper==== | ||
| - | Pentru a permite utilizarea valorilor primitive în contexte ce necesită obiecte (de exemplu, în colecții despre care vom vorbi în următoarele laboratore), Java oferă clase wrapper **dedicate** fiecărui tip primitiv. | + | Pentru a permite utilizarea valorilor primitive în contexte ce necesită obiecte (de exemplu, în colecții despre care vom vorbi mai jos), Java oferă clase wrapper **dedicate** fiecărui tip primitiv. |
| ^Tip primitiv^Clasă wrapper corespunzătoare^ | ^Tip primitiv^Clasă wrapper corespunzătoare^ | ||
| Line 51: | Line 58: | ||
| <note tip> | <note tip> | ||
| - | Wrapper-ele tipurilor primitive sunt **immutable**. Vom afla în următoarele laboratoare mai multe despre acest concept. | + | Wrapper-ele tipurilor primitive sunt **immutable**. |
| </note> | </note> | ||
| Line 279: | Line 286: | ||
| Vom învăța mai multe despre acesta în laboratorul despre **genericitate**. | Vom învăța mai multe despre acesta în laboratorul despre **genericitate**. | ||
| + | </note> | ||
| + | |||
| + | <note tip> | ||
| + | Pe parcursul laboratorului veți vedea notații de tipul ''<E>'', ''<T>'', ''<K, V>''. Vom înțelege în următoarele laboratoare la ce se referă exact, însă pentru acest laborator este suficient să știți că sunt niște **notații** pentru a semnala că o colecție folosește un **tip omogen** (ex. ''Collection<E>'' -> ''Collection'' poate folosi doar un tip omogen denumit ''E'' care poate fi un obiect). | ||
| </note> | </note> | ||
| Line 778: | Line 789: | ||
| | ''Math.toDegrees(a)'' / ''Math.toRadians(a)'' | double | Conversie radian ↔ grade | ''Math.toDegrees(Math.PI)'' → 180.0 | | | ''Math.toDegrees(a)'' / ''Math.toRadians(a)'' | double | Conversie radian ↔ grade | ''Math.toDegrees(Math.PI)'' → 180.0 | | ||
| </spoiler> | </spoiler> | ||
| + | |||
| + | <html><br></html> | ||
| =====🐋 [Optional] BigInteger și BigDecimal===== | =====🐋 [Optional] BigInteger și BigDecimal===== | ||
| Line 961: | Line 974: | ||
| =====Exerciţii===== | =====Exerciţii===== | ||
| + | |||
| + | ====Task 1 (10p)==== | ||
| + | |||
| 1. În cadrul acestui exercițiu, veți implementa o clasă numită Student, care are patru membri: | 1. În cadrul acestui exercițiu, veți implementa o clasă numită Student, care are patru membri: | ||
| - name (String) | - name (String) | ||
| Line 974: | Line 990: | ||
| 4. Extindeți clasa LinkedHashSet<Integer> cu o clasă în care se vor putea adăuga doar numere pare. Metoda add va fi suprascrisă astfel încât să nu permită adăugarea de numere impare în colecție. Efectuați aceeași operațiune și pentru clasele TreeSet și HashSet. Observați diferențele privind ordinea de inserare a elementelor între cele trei clase menționate. | 4. Extindeți clasa LinkedHashSet<Integer> cu o clasă în care se vor putea adăuga doar numere pare. Metoda add va fi suprascrisă astfel încât să nu permită adăugarea de numere impare în colecție. Efectuați aceeași operațiune și pentru clasele TreeSet și HashSet. Observați diferențele privind ordinea de inserare a elementelor între cele trei clase menționate. | ||
| - | |||
| - | Scheletul il puteți gasi pe [[https://github.com/oop-pub/oop-labs/blob/master/src/lab8/Main.java|github]]. Soluția trebuie încărcată pe [[https://code.devmind.ro|devmind]]. | ||
| =====Resurse și Linkuri utile===== | =====Resurse și Linkuri utile===== | ||
| * [[https://www.tutorialspoint.com/java/java_collections.htm|Java Collections - Tutorial Point]] | * [[https://www.tutorialspoint.com/java/java_collections.htm|Java Collections - Tutorial Point]] | ||
| + | * [[https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html|Java Math]] | ||
| + | * [[https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/math/BigInteger.html|Java BigInteger]] | ||
| + | * [[https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/math/BigDecimal.html|Java BigDecimal]] | ||
| + | * [[https://www.baeldung.com/java-8-date-time-intro|Date and Time API - Baeldung]] | ||