This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
laboratoare:java-basics [2019/09/28 13:54] Adriana Draghici |
laboratoare:java-basics [2019/09/30 17:43] Adriana Draghici |
||
---|---|---|---|
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 == | + | == Resurse și linkuri utile== |
* {{|Soluție}} (disponibilă din 14.10.2019) | * {{|Soluție}} (disponibilă din 14.10.2019) | ||
- | * <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF laborator</a></html> | + | * [[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: | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF laborator</a></html> | ||
+ | |||
+ | */ |