This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:clase-interne [2024/12/15 13:47] maria.enescu [Expresii Lambda] |
poo-ca-cd:laboratoare:clase-interne [2024/12/15 14:12] (current) maria.enescu [Exerciții] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 6: Clase interne ===== | + | ===== Laboratorul 10: Clase interne. Lambda expresii. ===== |
**Video introductiv:** [[https://youtu.be/KIyaRwog3q8| link ]] | **Video introductiv:** [[https://youtu.be/KIyaRwog3q8| link ]] | ||
Line 153: | Line 153: | ||
Când veți scrie o clasă anonimă într-un IDE cum e IntelliJ, veți primi un warning care vă recomandă să o transformați într-o lambda. Aceasta recomandare este valabilă doar pentru implementarea claselor/interfețelor cu o singură metoda. | Când veți scrie o clasă anonimă într-un IDE cum e IntelliJ, veți primi un warning care vă recomandă să o transformați într-o lambda. Aceasta recomandare este valabilă doar pentru implementarea claselor/interfețelor cu o singură metoda. | ||
- | Lambda este un concept din programarea funcțională (o să îl învățați în semestrul 2 la Paradigme de Programare) și reprezintă o funcție anonimă. Majoritatea limbajelor de nivel înalt au introdus suport pentru acest concept în ultimii 15 ani, inclusiv Java, din versiunea 8. | + | Lambda este un concept din **programarea funcțională** (o să îl învățați în semestrul 2 la Paradigme de Programare) și reprezintă o funcție anonimă. Majoritatea limbajelor de nivel înalt au introdus suport pentru acest concept în ultimii 15 ani, inclusiv Java, din versiunea 8. |
Line 166: | Line 166: | ||
</code> | </code> | ||
- | În codul de mai sus declararea clasei anonime și suprascrierea metodei din getFuelCapacity() a fost înlocuită cu o expresie lambda. O altă situație des intalnită de folosire a lambda-urilor este pentru transmiterea de funcții ca parametru iar api-uri precum cel de filtrare al colecțiilor le utilizează intens ([[https://www.baeldung.com/java-stream-filter-lambda|exemplu]]). | + | În codul de mai sus declararea clasei anonime și suprascrierea metodei din getFuelCapacity() a fost înlocuită cu o expresie lambda. O altă situație des intalnită de folosire a lambda-urilor este pentru **transmiterea de funcții ca parametru** iar api-uri precum cel de filtrare al colecțiilor le utilizează intens ([[https://www.baeldung.com/java-stream-filter-lambda|exemplu]]). |
Line 183: | Line 183: | ||
</code> | </code> | ||
- | Operatorul [[https://www.geeksforgeeks.org/double-colon-operator-in-java/|::]] este folosit pentru referințierea metodelor. | + | **Operatorul [[https://www.geeksforgeeks.org/double-colon-operator-in-java/|::]]** este folosit pentru referințierea metodelor. |
- | Putem folosi funcții anonime pentru a executa diverse operații pe liste (de exemplu ''removeIf'', care filtrează elementele unei colecții pe baza unui predicat, și ''replaceAll'', care aplică o operație pe toate elementele unei colecții). | + | Putem folosi funcții anonime pentru a executa diverse **operații pe liste** (de exemplu ''removeIf'', care filtrează elementele unei colecții pe baza unui predicat, și ''replaceAll'', care aplică o operație pe toate elementele unei colecții). |
Exemple: | Exemple: | ||
Line 198: | Line 198: | ||
</code> | </code> | ||
- | O altă utilitate a funcțiilor anonime reprezintă în implementarea comparatorilor folosiți la sortare sau la crearea de colecții sortate (TreeSet, TreeMap). | + | O altă utilitate a funcțiilor anonime reprezintă în **implementarea comparatorilor** folosiți la sortare sau la crearea de colecții sortate (TreeSet, TreeMap). |
Exemple: | Exemple: | ||
Line 383: | Line 383: | ||
} | } | ||
});</code> | });</code> | ||
- | ==== Exerciții ==== | + | ==== Exerciții ==== |
- | /***Task 1 - Meta** (4p) | + | |
- | Îndrumarul este o componentă importantă a laboratorului de POO, iar citirea și înțelegerea acestuia nu trebuie neglijate. În îndrumarul din acest laborator există mai multe căsuțe de tip **note**, de forma celei de mai jos: | + | Exercițiile din acest laborator au ca scop simularea obținerii prețului unei mașini de la un dealer. Construcția obiectelor necesare o veți face de la zero conform instrucțiunilor din taskuri. |
- | <note> Do stuff </note> | + | <note important> |
- | + | Pentru a încărca soluția, va trebui să accesați link-ul https://code.devmind.ro/login, să intrați pe tab-ul Contests, unde veți găsi laboratorul grupei voastre. | |
- | Identificați toate căsuțele de tip **note** din laborator și urmați instrucțiunile din acestea. Puteți folosi scheletul pus la dispoziție. Pentru a ușura procesul de evaluare, creați fișiere separate pentru fiecare task din **note**. | + | </note> |
- | */ | + | |
- | + | ||
- | **Schelet de laborator**: [[https://github.com/oop-pub/oop-labs/tree/master/src/lab6|Laborator6]] | + | |
- | + | ||
- | Exercițiile din acest laborator au ca scop simularea obținerii prețului unei mașini de la un dealer. Construcția obiectelor necesare o veți face de la zero conform instrucțiunilor din taskuri. | + | |