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:static-final [2019/10/19 21:14] Adriana Draghici [Exerciții] |
laboratoare:static-final [2019/10/20 14:49] Radu Matei [Exerciții] |
||
---|---|---|---|
Line 295: | Line 295: | ||
* o constantă MAGIC_NUMBER având orice valoare doriți | * o constantă MAGIC_NUMBER având orice valoare doriți | ||
* un String constant MAGIC_STRING, lung de minim 20 de caractere, generat random | * un String constant MAGIC_STRING, lung de minim 20 de caractere, generat random | ||
- | * un constructor care primește: un String numit ''firstName'', un String numit ''lastName'' și un int numit ''age'' | + | * un constructor care primește: un String numit ''name'' |
* o metodă ''getPassword()'' care va returna parola | * o metodă ''getPassword()'' care va returna parola | ||
* parola se construiește concatenand următoarele șiruri: | * parola se construiește concatenand următoarele șiruri: | ||
Line 303: | Line 303: | ||
* Pentru subșiruri și alte metode utile consultați documentația clasei [[http://docs.oracle.com/javase/8/docs/api/java/lang/String.html | String]] | * Pentru subșiruri și alte metode utile consultați documentația clasei [[http://docs.oracle.com/javase/8/docs/api/java/lang/String.html | String]] | ||
- (**3p**) Modificati implementarea clasei PasswordMaker astfel incat sa respecte conceptul de **Singleton pattern** (sa permita instantierea unei singur obiect) | - (**3p**) Modificati implementarea clasei PasswordMaker astfel incat sa respecte conceptul de **Singleton pattern** (sa permita instantierea unei singur obiect) | ||
- | * Implementati Singleton pattern folosind conceptul de Eager Initialization (singura instanta a clasei este creata la pornirea aplicatiei, indiferent daca este necesar sau nu) | + | * Pornind de la exemplul de Singleton din textul laboratorului implementati o versiune care urmeaza principiul de Eager Initialization (singura instanta a clasei este creata la pornirea aplicatiei, indiferent daca este necesar sau nu) |
- | * Modificati implementarea anterioara urmand conceptul de Lazy Initialization (singura instanta a clasei este creata doar atunci cand este nevoie de ea) | + | * Implementati o versiune de Singleton in care variabila ''instance'' este initializata intr-un bloc static |
+ | * Adaugati un contor care sa numere de cate ori a fost accesata metoda ''getInstance()''. E nevoie ca acest contor sa fie static? | ||
+ | * //Tema de gandire:// Ce se va intampla daca folosim conceptul de Singleton pattern intr-un program paralelizat, care ruleaza pe mai multe linii de executie (thread-uri). Ce probleme ar putea sa apara? | ||
- (**3p**) Să se implementeze o clasă ''MyImmutableArray'' care sa contina: | - (**3p**) Să se implementeze o clasă ''MyImmutableArray'' care sa contina: | ||
* un field de ''ArrayList<Integer> immutableArray;'' neinitializat in prima faza | * un field de ''ArrayList<Integer> immutableArray;'' neinitializat in prima faza |