This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
laboratoare:java-basics [2019/09/28 14:11] Adriana Draghici [Exerciții] |
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 361: | 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: |