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 [Laboratorul 11: Programare Funcțională, Lambdas și Stream-uri] |
poo-ca-cd:laboratoare:programare-functionala-lambda-si-streamuri [2025/12/15 11:44] (current) florian_luis.micu [Obiective] |
||
|---|---|---|---|
| Line 20: | Line 20: | ||
| * diferențe dintre stilul imperativ și stilul funcțional de programare. | * diferențe dintre stilul imperativ și stilul funcțional de programare. | ||
| * 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: | ||
| + | * definirea și folosirea Optional în programarea în stil funcțional. | ||
| + | * paralelizarea codului folosind parallel streams. | ||
| <note warning> | <note warning> | ||
| Line 26: | 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 1443: | 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]] | ||