This shows you the differences between two versions of the page.
|
poo-ca-cd:laboratoare:programare-functionala-lambda-si-streamuri [2025/12/15 11:24] florian_luis.micu [Obiective] |
poo-ca-cd:laboratoare:programare-functionala-lambda-si-streamuri [2025/12/15 11:44] (current) florian_luis.micu [Obiective] |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| * adăugare secțiune despre operații short-circuit. | * adăugare secțiune despre operații short-circuit. | ||
| * adăugare secțiune [Nice to know] despre Optional. | * adăugare secțiune [Nice to know] despre Optional. | ||
| + | * adăugare secțiune despre primitive streams. | ||
| * menționarea boolean chaining când folosim interfețe funcționale de tip Predicate. | * menționarea boolean chaining când folosim interfețe funcționale de tip Predicate. | ||
| Line 20: | Line 21: | ||
| * identificarea avantajelor, limitărilor și capcanelor ale abordării funcționale în Java. | * identificarea avantajelor, limitărilor și capcanelor ale abordării funcționale în Java. | ||
| - | Aspectele bonus urmărite sunt: | + | Aspectele **bonus** urmărite sunt: |
| - | * folosirea Optional. | + | * definirea și folosirea Optional în programarea în stil funcțional. |
| * paralelizarea codului folosind parallel streams. | * paralelizarea codului folosind parallel streams. | ||
| Line 29: | Line 30: | ||
| </note> | </note> | ||
| - | ======🔧 Programare funcțională====== | + | ======🔧 Programarea funcțională====== |
| + | Există mai multe **paradigme de programare**, fiecare definind un mod diferit de a structura și exprima logica unui program. Cele mai importante sunt **programarea imperativă**, care descrie execuția pas cu pas, **programarea orientată pe obiecte**, care modelează aplicația prin obiecte ce combină date și comportament, și **programarea funcțională**, care pune accent pe transformări de date, funcții pure și evitarea stării mutabile. | ||
| + | |||
| + | Majoritatea limbajelor moderne sunt **multi-paradigmă**. Java, de exemplu, combină stilul imperativ și orientat pe obiecte cu elemente de programare funcțională (lambda expressions, Stream API), permițând alegerea paradigmei potrivite în funcție de problemă. | ||
| + | |||
| + | <note tip> | ||
| + | Există mai multe tipuri de paradigme de programare: | ||
| + | * programare imperativă (ex. C, Fortran) | ||
| + | * programare orientată pe obiecte (ex. Java, C#, C++, Python) | ||
| + | * programare funcțională (ex. Haskell, Lisp) | ||
| + | * programare declarativă (ex. SQL, HTML) | ||
| + | * programare logică (ex. Prolog) | ||
| + | * programare bazată pe evenimente (ex. JavaScript) | ||
| + | </note> | ||
| =====De ce am programa funcțional în Java?===== | =====De ce am programa funcțional în Java?===== | ||
| Line 1446: | Line 1460: | ||
| * [[https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html|Stream API - Oracle Docs]] | * [[https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html|Stream API - Oracle Docs]] | ||
| * [[https://www.baeldung.com/java-functional-programming|Java Functional Programming - Baeldung]] | * [[https://www.baeldung.com/java-functional-programming|Java Functional Programming - Baeldung]] | ||
| + | * [[https://www.baeldung.com/java-optional|Guide to Java Optional - Baeldung]] | ||