Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:laboratoare:java-basics [2021/09/06 21:37]
adelin.stanca [Coding style for beginners]
poo-ca-cd:laboratoare:java-basics [2024/10/10 11:43] (current)
florin_andrei.relea [Exerciții]
Line 550: Line 550:
   * IDE ([[:​poo-ca-cd:​resurse-utile:​instalare-intellij-idea|Intellij]],​ [[:​poo-ca-cd:​resurse-utile:​instalare-eclipse|Eclipse]]) instalat   * IDE ([[:​poo-ca-cd:​resurse-utile:​instalare-intellij-idea|Intellij]],​ [[:​poo-ca-cd:​resurse-utile:​instalare-eclipse|Eclipse]]) instalat
   * Verificat din linia de comandă versiunea de java:   * Verificat din linia de comandă versiunea de java:
-    * ''​javac -version''​ - comanda ​//javac// este folosită pentru compilare +    * ''​javac -version''​ - comanda ​''​javac'' ​este folosită pentru compilare 
-    * ''​java -version'' ​ - comanda ​//java// este folosită pentru rulare+    * ''​java -version'' ​ - comanda ​''​java'' ​este folosită pentru rulare 
 + 
 +<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>​
  
 **Task 1** (3p) **Task 1** (3p)
-  - Creați ​folosind IDE-ul un nou proiect și 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// (sau alt nume pe care îl doriți să îl folosiți). 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.
  
 **Task 2**  (5p) **Task 2**  (5p)
  
-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 interviewAfisarea 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 configurationcâ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)
  
-    - Creați două obiecte ​//Student// cu aceleași date în ele. Afișați rezultatul folosirii ​//equals()// între ele. Discutați cu asistentul despre ce observați și pentru a vă explica mai multe despre această metodă.+    - Creați două obiecte ​''​Student'' ​cu aceleași date în ele. Afișați rezultatul folosirii ​''​equals()'' ​între ele. Discutați cu asistentul despre ce observați și pentru a vă explica mai multe despre această metodă.
        * [[https://​docs.oracle.com/​en/​java/​javase/​12/​docs/​api/​java.base/​java/​lang/​Object.html#​equals(java.lang.Object)|documentație equals]]        * [[https://​docs.oracle.com/​en/​java/​javase/​12/​docs/​api/​java.base/​java/​lang/​Object.html#​equals(java.lang.Object)|documentație equals]]
  
 <note tip> <note tip>
-Metoda ''​equals''​ este folosită în Java pentru a compara dacă două obiecte sunt egale în ceea ce privește informațiile încapsulate în acestea. Mai precis, se compară ​fiecare câmp din primul obiect cu câmpul respectiv din al doilea obiect ​și dacă toate câmpurile sunt egale ca valori, ​atunci ''​equals''​ va returna ''​true'',​ altfel va returna ''​false''​. ​Mai multe detalii legate de această ​metodă vom discuta în cadrul următoarelor laboratoare.+Metoda ''​equals''​ este folosită în Java pentru a compara dacă două obiecte sunt egale în ceea ce privește informațiile încapsulate în acestea. Mai precis, se compară ​referințele celor două obiecte. Dacă acestea indică spre aceeași zonă de memorie ​atunci ''​equals''​ va returna ''​true'',​ altfel va returna ''​false''​. ​Veți învăța în [[poo-ca-cd:​laboratoare:​agregare-mostenire|laboratorul 3]] mai multe despre cum se folosește ​această ​funcție pentru a verifica egalitatea dintre două obiecte.
  
 Exemplu de folosire: Exemplu de folosire:
Line 591: Line 594:
  
 ** Task 4** (1p) ** Task 4** (1p)
-    - Afișați un obiect de tip //Course//. Ce observați?​ +    - Afișați un obiect de tip ''​Course''​. Ce observați?​ 
-    - Implementați în clasa //Course// metoda ​//toString()// care întoarce un String compus din:+    - Implementați în clasa ''​Course'' ​metoda ​''​toString()'' ​care întoarce un String compus din:
       * titlul cu uppercase (folosiți una din metodele clasei [[https://​docs.oracle.com/​javase/​9/​docs/​api/​java/​lang/​String.html|String]])       * titlul cu uppercase (folosiți una din metodele clasei [[https://​docs.oracle.com/​javase/​9/​docs/​api/​java/​lang/​String.html|String]])
       * descrierea       * descrierea
       * numele studenților ​       * numele studenților ​
-    - Afișați obiectul de tip //Course// +    - Afișați obiectul de tip ''​Course''​ 
-      * //Hint//: puteți să porniți să implementați generând întâi metoda ​//toString// folosind IDE-ul+      * //Hint//: puteți să porniți să implementați generând întâi metoda ​''​toString'' ​folosind IDE-ul
 */ */
 ** 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.
-       * //Hint//: pentru ​a vă eficientiza timpul, folosiți IDE-ul pentru a generarea aceste metode + 
-         * Eclipse: Source -> Generate Getters and Setters +<note tip> 
-         * IntelliJ: Code -> Generate... -> Getters and Setters+Pentru ​a vă eficientiza timpul, folosiți IDE-ul ​(IntelliJ) ​pentru a generarea aceste metode: Code -> Generate... -> Getters and Setters 
 +</​note>​
 ==== Resurse și linkuri utile==== ==== Resurse și linkuri utile====
  
poo-ca-cd/laboratoare/java-basics.1630953432.txt.gz · Last modified: 2021/09/06 21:37 by adelin.stanca
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0