This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
laboratoare:genericitate [2018/11/19 01:43] Alexandru Rotaru [Bounded Wildcards] |
laboratoare:genericitate [2019/11/24 19:44] (current) Florin Mihalache [Exerciții] |
||
|---|---|---|---|
| Line 173: | Line 173: | ||
| <note> | <note> | ||
| - | Utilizarea bounded wildcards se manifeste in urmatoarele 2 **use cases** : | + | Utilizarea bounded wildcards se manifestă în următoarele 2 situații : |
| - | * lower bounded wildcards se folosesc atunci cand vrem sa **modificam** o colectie generica | + | * lower bounded wildcards se folosesc atunci când vrem să **modificăm** o colecție generică |
| - | * upper bounded wildcards se folosesc atunci cand vrem sa **parcurgem fara sa modificam** o colectie generica | + | * upper bounded wildcards se folosesc atunci când vrem să **parcurgem fără să modificăm** o colecție generică |
| </note> | </note> | ||
| Line 267: | Line 267: | ||
| * (**1p**) Implementaţi metoda **get**. | * (**1p**) Implementaţi metoda **get**. | ||
| * (**1p**) Testaţi implementarea voastră folosind o clasă definită de voi, care suprascrie metoda **hashCode** din ''Object''. | * (**1p**) Testaţi implementarea voastră folosind o clasă definită de voi, care suprascrie metoda **hashCode** din ''Object''. | ||
| - | * (**Bonus 2p**) Implementați tabela de dispersie ca //iterabilă//, compatibilă cu syntactic-sugar-ul **for-each** | ||
| - | * Trebuie să implementați interfața ''Iterable''. Atenție, și ea este generică. | ||
| - | * Creați-vă //iteratorul//, parametrizat, ca o clasă internă care să rețină datele necesare. | ||
| - | * Nu este necesar să implementați metoda ''remove'' din ''Iterator''. | ||
| - | * Afișați-vă rezultatele folosind **for-each** pe tabela de dispersie. | ||
| - (**4p**) Să considerăm interfața ''Sumabil'', ce conține metoda ''void addValue(Sumabil value)''. Această metodă adună la valoarea curentă (stocată în instanța ce apelează metoda) o altă valoare, aflată într-o instanță cu același tip. Pornind de la această interfață, va trebui să: | - (**4p**) Să considerăm interfața ''Sumabil'', ce conține metoda ''void addValue(Sumabil value)''. Această metodă adună la valoarea curentă (stocată în instanța ce apelează metoda) o altă valoare, aflată într-o instanță cu același tip. Pornind de la această interfață, va trebui să: | ||
| * Definiți clasele ''MyVector3'' și ''MyMatrix'' (ce reprezintă un vector cu 3 coordonate și o matrice de dimensiune 4 x 4), ce implementează Sumabil | * Definiți clasele ''MyVector3'' și ''MyMatrix'' (ce reprezintă un vector cu 3 coordonate și o matrice de dimensiune 4 x 4), ce implementează Sumabil | ||