Differences

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

Link to this comparison view

poo-ca-cd:laboratoare:design-patterns2 [2022/12/18 00:16]
cvintilian.rosca [Exerciții]
poo-ca-cd:laboratoare:design-patterns2 [2022/12/18 01:22] (current)
cvintilian.rosca [Exerciții]
Line 267: Line 267:
 Aceste operații matematice pot fi făcute pe diferite tipuri de date. O matrice poate acceptă int-uri (exemplu: camera jucătorului),​ float-uri / double-uri (exemplu: setarea opacității unei texturi), char-uri (exemplu: reprezentarea text box-urilor pentru dialog) etc. În loc să creem câte o clasă care să adere fiecărui tip, putem scrie o singură dată o clasă care să reprezinte o matrice și care să accepte mai multe tipuri de date prin genericitate. Acest lucru devine foarte util dacă dorim să creem o bibliotecă întreagă pentru operații matematice avansate (exemplu: Jscience), fără să ne repetăm codul doar pentru a crea clase și metode specifice unor tipuri de date. Aceste operații matematice pot fi făcute pe diferite tipuri de date. O matrice poate acceptă int-uri (exemplu: camera jucătorului),​ float-uri / double-uri (exemplu: setarea opacității unei texturi), char-uri (exemplu: reprezentarea text box-urilor pentru dialog) etc. În loc să creem câte o clasă care să adere fiecărui tip, putem scrie o singură dată o clasă care să reprezinte o matrice și care să accepte mai multe tipuri de date prin genericitate. Acest lucru devine foarte util dacă dorim să creem o bibliotecă întreagă pentru operații matematice avansate (exemplu: Jscience), fără să ne repetăm codul doar pentru a crea clase și metode specifice unor tipuri de date.
 ==== Exerciții ==== ==== Exerciții ====
 +Scheletul laboratorului poate fi descărcat de aici: {{:​poo-ca-cd:​laboratoare:​oop_lab10.zip|}}
  
-  ​- **(puncte)** Implementați o structură de date de tipul ''​MultiMapValue<​K,​ V>'',​ pe baza [[https://​github.com/​oop-pub/​oop-labs/​tree/​master/​src/​lab11 | scheletului]], care reprezintă un ''​HashMap<​K,​ ArrayList<​V>>'',​ unde o cheie este asociată cu mai multe valori. Modalitatea de stocare a datelor este la alegere (moștenire sau agregare) și să folosiți funcționalitățile din HashMap. În schelet aveți următoarele metode de implementat:​+Laboratorul trebuie rezolvat pe platforma LambdaChecker,​ fiind găsit [[https://​beta.lambdachecker.io/​contest/​21 | aici]]. 
 + 
 +  ​- **(puncte)** Implementați o structură de date de tipul ''​MultiMapValue<​K,​ V>'',​ pe baza scheletului,​ care reprezintă un ''​HashMap<​K,​ ArrayList<​V>>'',​ unde o cheie este asociată cu mai multe valori. Modalitatea de stocare a datelor este la alegere (moștenire sau agregare) și să folosiți funcționalitățile din HashMap. În schelet aveți următoarele metode de implementat:​
      - **(1 punct)** ''​add(K key, V value)''​ - adaugă o valoare la o cheie dată (valoarea este adăugate în lista de valori asociate cheii, dacă cheia și lista nu există, atunci lista va fi creată și asociată cheii.      - **(1 punct)** ''​add(K key, V value)''​ - adaugă o valoare la o cheie dată (valoarea este adăugate în lista de valori asociate cheii, dacă cheia și lista nu există, atunci lista va fi creată și asociată cheii.
-     - **(0.5 puncte)** ''​void addAll(K key, List<​V>​ values)''​ - adaugă valorile din lista de valori dată ca parametru la lista asociată cheii. +     - **(puncte)** ''​void addAll(K key, List<​V>​ values)''​ - adaugă valorile din lista de valori dată ca parametru la lista asociată cheii. 
-     - **(0.5 puncte)** ''​void addAll(MultiMapValue<​K,​ V> map)''​ - adaugă intrările din obiectul MultiMapValue dat ca parametru în obiectul curent (this).+     - **(puncte)** ''​void addAll(MultiMapValue<​K,​ V> map)''​ - adaugă intrările din obiectul MultiMapValue dat ca parametru în obiectul curent (this).
      - **(0.5 puncte)** ''​V getFirst(K key)''​ - întoarce prima valoare asociată cheii (dacă nu există, se întoarce null).      - **(0.5 puncte)** ''​V getFirst(K key)''​ - întoarce prima valoare asociată cheii (dacă nu există, se întoarce null).
      - **(0.5 puncte)** ''​List<​V>​ getValues(K key)''​ - se întoarce lista de valori asociată cheii.      - **(0.5 puncte)** ''​List<​V>​ getValues(K key)''​ - se întoarce lista de valori asociată cheii.
Line 278: Line 281:
      - **(0.5 puncte)** ''​List<​V>​ remove(K key)''​ - se șterge cheia, împreună cu valorile asociate ei, din MultiMapValue.      - **(0.5 puncte)** ''​List<​V>​ remove(K key)''​ - se șterge cheia, împreună cu valorile asociate ei, din MultiMapValue.
      - **(0.5 puncte)** ''​int size()''​ - se întoarce mărimea MultiMapValue.      - **(0.5 puncte)** ''​int size()''​ - se întoarce mărimea MultiMapValue.
-  ​- **(puncte)** Implementați o structură de date de tipul ''​MultiMapValue<K, V>'',​ pe baza [[https://​github.com/​oop-pub/​oop-labs/​tree/​master/​src/​lab11 | scheletului]],​ care reprezintă un ''​HashMap<​K,​ ArrayList<​V>>'',​ unde o cheie este asociată cu mai multe valori. Modalitatea de stocare a datelor este la alegere ​(moștenire sau agregare) și să folosiți funcționalitățile din HashMap. În schelet aveți următoarele metode ​de implementat:​ + 
-     - **(1 punct)** ''​add(K key, V value)''​ - adaugă o valoare la o cheie dată (valoarea este adăugate în lista de valori asociate cheii, dacă cheia și lista nu există, atunci lista va fi creată și asociată cheii. +  ​- **(puncte)** Implementați o structură de date de tipul Tree<T> (Arbore binar de căutare) pe baza scheletului. ​Analizați ​modalitatea de utilizare a bounded wildcards, ​explicați ​necesitatea lor laborantului (fie în cadrul ​orei de laborator, fie la nivel de comentariu în cod)În schelet aveți următoarele metode de implementat:​ 
-     - **(0.5 puncte)** ''​void addAll(K key, List<​V>​ values)''​ - adaugă valorile din lista de valori dată ca parametru la lista asociată cheii. +     - **(puncte)** ''​void addValue(T value)'' ​adaugă o valoare în arborele binar de căutare. 
-     - **(0.5 puncte)** ''​void addAll(MultiMapValue<​K,​ V> map)''​ - adaugă intrările din obiectul MultiMapValue dat ca parametru în obiectul curent (this). +     - **(0.5 puncte)** ''​void addAll(List<​T>​ values)'' ​adaugă valorile ​dintr-o listă în arborele binar de căutare. 
-     - **(0.5 puncte)** ''​V getFirst(K key)''​ - întoarce prima valoare asociată cheii (dacă nu există, se întoarce null). +     - **(1.5 puncte)** ''​HashSet<​T>​ getValues(T inf, T sup)'' ​colectează valorile din arbore între o limită inferioară și superioară într-o colecție de tipul HashSet. 
-     - **(0.5 puncte)** ''​List<​V>​ getValues(K key)''​ - se întoarce lista de valori asociată cheii. +     - **(0.5 puncte)** ''​int size()'' ​se întoarce ​numărul de elemente inserate ​în arbore. 
-     - **(0.5 puncte)** ''​boolean containsKey(K key)''​ - se verifică faptul dacă este prezentă cheia în MultiMapValue. +     - **(0.5 puncte)** ''​boolean isEmpty()'' ​se întoarce ​dacă există vreun element inserat în arborele binar sau nu.
-     - **(0.5 puncte)** ''​boolean isEmpty()''​ - se verifică dacă MultiMapValue este gol. +
-     - **(0.5 puncte)** ''​List<​V>​ remove(K key)''​ - se șterge cheia, împreună cu valorile asociate ei, din MultiMapValue. +
-     - **(0.5 puncte)** ''​int size()''​ - se întoarce mărimea MultiMapValue. +
-  - **(4 puncte)** Implementați o structură de date de tipul Tree<​V> ​pe baza scheletului. ​Analizati ​modalitatea de utilizare a bounded wildcards, ​explicatia ​necesitatea lor laborantului (fie în cadrul ​laboratului, fie la nivel de comentarii in zonele marcate cu //​TODO ​) +
-În schelet aveți următoarele metode de implementat:​ +
-     - **(0.5 puncte)** ''​void addValue(T value) -> Adaugă o valoare în arborele binar de căutare. +
-     - **(0.5 puncte)** ''​void addAll(List<​T>​ values) -> Adaugă valorile ​din o listă în arborele binar de căutare. +
-     - **(0.5 puncte)** ''​HashSet<​T>​ getValues(T inf, T sup) -> Colectează valorile din arbore între o limită inferioară și superioară într-o colecție de tipul HashSet. +
-     - **(0.5 puncte)** ''​int size() -> Returnează ​numărul de elemente inserate ​in arbore. +
-     - **(0.5 puncte)** ''​boolean isEmpty() -> Returnează ​dacă există vreun element inserat în arborele binar sau nu. +
- +
  
 ====Referinţe==== ====Referinţe====
poo-ca-cd/laboratoare/design-patterns2.1671315394.txt.gz · Last modified: 2022/12/18 00:16 by cvintilian.rosca
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