Differences

This shows you the differences between two versions of the page.

Link to this comparison view

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.
     ​     ​
  
poo-ca-cd/laboratoare/static-final.1698500498.txt.gz · Last modified: 2023/10/28 16:41 by calin.precupetu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0