User Tools

Site Tools


Problem constructing authldap
laboratoare:java-basics
Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:java-basics [2019/09/28 14:00]
Adriana Draghici [Resurse]
laboratoare:java-basics [2019/10/21 17:35] (current)
Adriana Draghici [Resurse și linkuri utile]
Line 18: Line 18:
 Înainte de a începe orice implementare,​ trebuie să vă gandiți cum grupați logica întregului program pe unități. Elementele care se regăsesc în același grup trebuie să fie **conectate în mod logic**, pentru o ușoară implementare și înțelegere ulterioară a codului. În cazul Java, aceste grupuri logice se numesc **pachete** și se reflectă pe disc conform ierarhiei din cadrul proiectului. Pachetele pot conține atât alte pachete, cât și fișiere sursă. Înainte de a începe orice implementare,​ trebuie să vă gandiți cum grupați logica întregului program pe unități. Elementele care se regăsesc în același grup trebuie să fie **conectate în mod logic**, pentru o ușoară implementare și înțelegere ulterioară a codului. În cazul Java, aceste grupuri logice se numesc **pachete** și se reflectă pe disc conform ierarhiei din cadrul proiectului. Pachetele pot conține atât alte pachete, cât și fișiere sursă.
  
-{{laboratoare:​java-basics:​package.jpg| Organizarea pachetelor in Java}} ​+{{laboratoare:​java-basics:​lab-java-basics-packages.png| Organizarea pachetelor in Java}} ​
  
 Următorul pas este delimitarea entităților din cadrul unui grup, pe baza unor trăsături individuale. În cazul nostru, aceste entități vor fi clasele. Pentru a crea o clasă, trebuie mai întâi să creăm un fișier aparținând proiectului nostru și unui pachet (dacă este cazul și proiectul este prea simplu pentru a-l împărți în pachete). În cadrul acestui fișier definim una sau mai multe clase, conform urmatoarelor reguli: Următorul pas este delimitarea entităților din cadrul unui grup, pe baza unor trăsături individuale. În cazul nostru, aceste entități vor fi clasele. Pentru a crea o clasă, trebuie mai întâi să creăm un fișier aparținând proiectului nostru și unui pachet (dacă este cazul și proiectul este prea simplu pentru a-l împărți în pachete). În cadrul acestui fișier definim una sau mai multe clase, conform urmatoarelor reguli:
Line 331: Line 331:
     * ''​Student''​ cu proprietățile:​ //name// (String), //year// (Integer)     * ''​Student''​ cu proprietățile:​ //name// (String), //year// (Integer)
     * ''​Course'' ​     * ''​Course'' ​
-      * cu proprietățile:​ //title// (String), //​description//​ (String), //​students//​ (array de clase Student).+      * cu proprietățile:​ //title// (String), //​description//​ (String), //​students//​ (array de clase Student ​- [[.:​java-basics#​arrays|exemplu arrays]]).
       * cu metoda: //​filterYear//​ care întoarce o listă de studenți care sunt intr-un an dat ca parametru.       * cu metoda: //​filterYear//​ care întoarce o listă de studenți care sunt intr-un an dat ca parametru.
     * 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     * ''​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
       - creați un obiect //Course// și 3-4 obiecte //​Student//​. Populați obiectul Course.       - creați un obiect //Course// și 3-4 obiecte //​Student//​. Populați obiectul Course.
-      - afișați toți studenții din anul dat ca parametru+      - 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...)
       - rulați atât din IDE (modificati run configuration) cât și din linie de comandă       - rulați atât din IDE (modificati run configuration) cât și din linie de comandă
     * Opțional, în loc de [[.:​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/​12/​docs/​api/​java.base/​java/​util/​ArrayList.html|ArrayList]] ([[https://​www.w3schools.com/​java/​java_arraylist.asp|exemplu]])     * Opțional, în loc de [[.:​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/​12/​docs/​api/​java.base/​java/​util/​ArrayList.html|ArrayList]] ([[https://​www.w3schools.com/​java/​java_arraylist.asp|exemplu]])
Line 343: Line 343:
  
     - 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ă.
-    - Afișați un obiect de tip //Course//. Ce observați?+       * [[https://docs.oracle.com/en/java/​javase/​12/​docs/​api/​java.base/​java/​lang/​Object.html#​equals(java.lang.Object)|documentație]]
  
 /* moved to lab 2 /* moved to lab 2
  
 ** Task 4** (1p) ** Task 4** (1p)
 +    - 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]])
Line 360: Line 361:
      - 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        * //Hint//: pentru a vă eficientiza timpul, folosiți IDE-ul pentru a generarea aceste metode
-== Resurse ==+         * Eclipse: Source -> Generate Getters and Setters 
 +         * IntelliJ: Code -> Generate... -> Getters and Setters 
 +== Resurse ​și linkuri utile==
  
-* {{|Soluție}} ​(disponibilă ​din 14.10.2019)+* {{:​laboratoare:​java-basics:​lab1-sol.zip|Soluție}} 
 +* [[laboratoare:​old-exercises|Exerciții ​din alți ani]] 
 +* [[laboratoare:​poo-java|POO și Java]] 
 +* [[laboratoare:​organizare-acces|Organizarea surselor și modificatori de acces]]
  
 /* Nu mai merge: /* Nu mai merge:
laboratoare/java-basics.1569668400.txt.gz · Last modified: 2019/09/28 14:00 by Adriana Draghici