This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:java-basics [2021/10/13 23:35] radu_bogdan.pavel [Exerciții] |
poo-ca-cd:laboratoare:java-basics [2024/10/10 11:43] (current) florin_andrei.relea [Exerciții] |
||
---|---|---|---|
Line 553: | Line 553: | ||
* ''java -version'' - comanda ''java'' este folosită pentru rulare | * ''java -version'' - comanda ''java'' este folosită pentru rulare | ||
- | **Task 0** (0p) | + | <note warning>Fiind un laborator introductiv și cu multe concepte destul de greu de verificat automat cu LambdaChecker, punctajul de săptămâna aceasta este opțional/bonus. Cu toate acestea, încercați să rezolvați **toate** exercițiile și să puneți cât mai multe întrebări asistenților, pentru a vă însuși cât mai bine cunoștințele.</note> |
- | - Intrați pe link-ul de Github Classroom aferent slotului de laborator, dat de către asistent, clonați repository-ul și deschideți proiectul din repository în IntelliJ. | + | |
**Task 1** (3p) | **Task 1** (3p) | ||
- | - Creați pachetul ''lab1'',unde adăugați codul din secțiunea [[:poo-ca-cd:laboratoare:java-basics:#exemplu_de_implementare|Exemplu de implementare]]. Rulați codul din IDE. | + | - Creați pachetul ''lab1'', unde adăugați codul din secțiunea [[:poo-ca-cd:laboratoare:java-basics:#exemplu_de_implementare|Exemplu de implementare]]. Rulați codul din IDE. |
- Folosind linia de comandă, compilați și rulați codul din exemplu | - Folosind linia de comandă, compilați și rulați codul din exemplu | ||
- Mutați codul într-un pachet ''task1'', creat în pachetul ''lab1''. Folosiți-vă de IDE, de exemplu Refactor -> Move pentru IntelliJ. Observați ce s-a schimbat în fiecare fișier mutat. | - Mutați codul într-un pachet ''task1'', creat în pachetul ''lab1''. Folosiți-vă de IDE, de exemplu Refactor -> Move pentru IntelliJ. Observați ce s-a schimbat în fiecare fișier mutat. | ||
Line 565: | Line 563: | ||
Creați un pachet ''task2'' (sau alt nume pe care îl doriți să îl folosiți). În el creați clasele: | Creați un pachet ''task2'' (sau alt nume pe care îl doriți să îl folosiți). În el creați clasele: | ||
- | * ''Student'' cu proprietățile: ''name'' (String), ''year'' (Integer) | + | * ''Student'' cu proprietățile: ''name'' (String), ''grade'' (double) |
- | * ''Course'' | + | * ''Internship'' |
- | * cu proprietățile: ''title'' (String), ''description'' (String), ''students'' (array de clase ''Student'' - [[:poo-ca-cd:laboratoare:java-basics#arrays|exemplu arrays]]). | + | * cu proprietățile: ''name'' (String), ''minGrade'' (double), ''students'' (array de clase ''Student'' - [[:poo-ca-cd:laboratoare:java-basics#arrays|exemplu arrays]]). |
- | * cu metoda: ''filterYear'' care întoarce o listă de studenți care sunt într-un an dat ca parametru. | + | * cu metoda: ''chooseCandidateRandomly'' care returneaza in mod aleatoriu un student din lista de studenti corespunzatoare unui internship (**Hint:** folositi clasa Random). |
+ | * cu metoda: ''chooseCandidatesForInterview'' care va afisa toti candidatii care au obtinut un phone interview la o anumita companie. Fiecare companie are asociat un grade minim dupa care va selecta candidatii pentru un phone interview. Astfel, daca grade-ul unui candidat este mai mare sau egal cu grade-ul minim dorit de o companie pentru angajatii sai, atunci acesta va primi un phone interview. Afisarea candidatilor se va face sub forma: "Candidate [nume_student] got a phone interview at [nume_internship]" | ||
* Nu folosiți vreun modificator de acces pentru variabile (aka "nu puneți nimic în fața lor în afară de tip") | * Nu folosiți vreun modificator de acces pentru variabile (aka "nu puneți nimic în fața lor în afară de tip") | ||
- | * ''Test'' cu metoda ''main''. La rulare, ca [[https://docs.oracle.com/javase/tutorial/essential/environment/cmdLineArgs.html|argument]] în linia de comandă se va da un integer reprezentând anul în care este un student | + | * ''JobMarket'' cu metoda ''main''. |
- | - creați un obiect ''Course'' și 3-4 obiecte ''Student''. Populați obiectul Course. | + | - Creati studentii cu numele Gigel, Dorel, Marcel si Ionel. |
- | - afișați toți studenții din anul dat ca parametru. **Hint:** folositi ''Arrays.toString(listStudenti)''. In clasa Student folositi IDE-ul pentru a genera metoda toString (pt Intellij Code->Generate...) | + | - Creati internship-uri cu numele Google, Amazon, Facebook, Microsoft. |
- | - rulați atât din IDE (modificati run configuration) cât și din linie de comandă | + | - Apelati metoda chooseCandidatesForInterview(), pe rand, pentru fiecare companie din cele enumerate mai sus, respectand ordinea lor. |
- | * Opțional, în loc de [[:poo-ca-cd:laboratoare:java-basics#arrays|arrays]] pentru ''filterYear'' puteți să folosiți și obiecte de tip List, e.g. [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/ArrayList.html|ArrayList]] ([[https://www.w3schools.com/java/java_arraylist.asp|exemplu]]) | + | * Opțional, în loc de [[:poo-ca-cd:laboratoare:java-basics#arrays|arrays]] pentru campul ''students'' puteți să folosiți și obiecte de tip List, e.g. [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/ArrayList.html|ArrayList]] ([[https://www.w3schools.com/java/java_arraylist.asp|exemplu]]) |
** Task 3** (1p) | ** Task 3** (1p) | ||
Line 604: | Line 603: | ||
*/ | */ | ||
** Task 4** (1p) | ** Task 4** (1p) | ||
- | - Adăugați modificatorul de acces 'private' tuturor variabilelor claselor Student și Course (e.g. ''private String name;'') | + | - Adăugați modificatorul de acces 'private' tuturor variabilelor claselor Student și Internship (e.g. ''private String name;'') |
- Rezolvați erorile de compilare adăugând metode getter și setter acestor variabile. | - Rezolvați erorile de compilare adăugând metode getter și setter acestor variabile. | ||
- Ce ați făcut acum se numește //încapsulare (encapsulation)// și este unul din principiile de bază din programarea orientată pe obiecte. Prin această restricționare protejați accesarea și modificarea variabilelor. | - Ce ați făcut acum se numește //încapsulare (encapsulation)// și este unul din principiile de bază din programarea orientată pe obiecte. Prin această restricționare protejați accesarea și modificarea variabilelor. |