This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:static-final [2023/10/28 16:41] calin.precupetu |
poo-ca-cd:laboratoare:static-final [2023/10/29 16:03] (current) calin.precupetu |
||
---|---|---|---|
Line 462: | Line 462: | ||
+ | ==== Exerciții ==== | ||
+ | - Pentru a rezolva laboratorul aveti urmatorul contest pe LambdaChecker : [[https://beta.lambdachecker.io/contest/55/problems?page=1 | contest]] | ||
+ | - **(0 puncte)** Folosind pașii de mai sus și debugger-ul, reparați codul din pachetul ''vault'' din cadrul [[https://github.com/oop-pub/oop-labs/tree/master/src/lab4 | scheletului laboratorului]] (același care este prezentat în cadrul tutorialului de debug). | ||
+ | - Aveți de implementat o mini aplicație de tip queries dintr-o bază de date cu dealershipuri și selleri de masini. Fiecare dealership are o colecție de asocieri dintre brandurile de masini vandute și pretul lor, de tip dicționar, iar fiecare seller are o listă de branduri de masina pe care le vinde. | ||
+ | - **(2 puncte)** Având la bază scheletul de cod, faceți clasa Database, care se ocupă cu gestionarea bazei de date a dealershipurilor și a sellerilor, o clasă de tip Singleton cu implementare de tip lazy. Această clasă va conține o listă de dealershipuri și o listă de selleri. Faceți aceste liste de tip final. | ||
+ | - **(1 punct)** Clasa ''Dealership'' are doua câmpuri: nume și un dicționar unde sunt stocate brandurile de masini, fiecare brand fiind asociat cu pretul sau la dealershipul respectiv. În această clasă, implementați următoarele: | ||
+ | - metoda ''averagePrice'', care calculează media pretului masinilor din Dealership. | ||
+ | - copy constructorul clasei | ||
+ | - metoda ''getPriceForBrand'', care primește ca parametru de intrare numele unui brand și întoarce pretul acestuia. | ||
+ | - **(1 punct)** Clasa ''Seller'' are doua câmpuri: nume si lista brandurilor pe care acesta le vinde. În această clasa implementați copy constructor. | ||
+ | - **(2 puncte)** În clasa ''Database'' implementați următoarele metode: | ||
+ | - ''getAllDealerships'' - întoarce lista de delaershipuri | ||
+ | - ''getAllSellers'' - intoarce lista de selleri | ||
+ | - ''getDealershipByBrand'' - primește ca parametru numele unui brand și întoarce lista cu dealershipurile care detin brandul respectiv | ||
+ | - ''getSellerByBrand'' - primește ca parametru numele unui brand și întoarce lista cu sellerii care vand brandul respectiv. | ||
+ | - ''getDealershipsByAveragePrice'' - întoarce lista cu dealershipuri sortate crescător în funcție de pretul lor mediu. | ||
+ | - ''getDealershipsByPriceForBrand'' - primește ca parametru numele unui brand și întoarce lista cu dealershipurile care detin acel brand, sortate după pretul acestuia în ordine crescătoare. | ||
+ | - **(1 punct)** În clasa ''Seller'' implementați următoarele metode, care vor apela metodele corespunzătoare din clasa ''Database'': | ||
+ | - ''getAllSellers'' | ||
+ | - ''getAllDealerships'' | ||
+ | - ''getSellersByBrand'' | ||
+ | - ''getDealershipsByBrand'' | ||
+ | - ''getDealershipsByAveragePrice'' | ||
+ | - ''getDealershipsByPriceForBrand'' | ||
+ | - **(2 puncte)** În clasa Dealership implementați următoarele metode, care vor apela metodele corespunzătoare din clasa ''Database'' (atenție, aici metodele trebuie să întoarcă rezultate imutabile, sub forma de deep copy, folosind modalitatea prezentată în laborator, folosind [[https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html | Collections.unmodifiableList()]] pentru ca evita posibilitatea de a modifica rezultatele, care sunt read-only): | ||
+ | - ''getAllSellers'' | ||
+ | - ''getAllDealerships'' | ||
+ | - ''getSellersByBrand'' | ||
+ | - ''getDealershipsByBrand'' | ||
+ | - ''getDealershipsByAveragePrice'' | ||
+ | - ''getDealershipsByPriceForBrand'' | ||
+ | - **(1 punct)** În clasa ''Database'', adăugați un contor drept câmp al clasei, de tip static, care va număra instanțierile clasei în cadrul metodei ''getDatabase'', unde se face instanțierea clasei. Implementați metoda ''getNumberOfInstances()'' din ''Database'', care întoarce numărul de instanțieri. | ||
| | ||