Differences

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

Link to this comparison view

poo:laboratoare:08 [2018/11/12 16:45]
carmen.odubasteanu
poo:laboratoare:08 [2022/11/24 13:08] (current)
carmen.odubasteanu [ATENTIE! Se vor folosi tipuri generice in toate problemele!]
Line 6: Line 6:
  
 === Problema 1 ===  === Problema 1 === 
-Să se definească o clasă ​generică **//​ArrayMap//​** pentru un dicționar realizat ca o colecție de obiecte **//​ArrayMapEntry//​** (colecția va fi obiect de tip **//​ArrayList//​**). Clasa **//​ArrayMapEntry//​** va implementa interfața **//​Map.Entry//​** și va avea următoarele metode:+Să se definească o clasă ​**__generică__** **//​ArrayMap//​** pentru un dicționar realizat ca o colecție de obiecte **//​ArrayMapEntry//​** (colecția va fi obiect de tip **//​ArrayList//​**). Clasa **//​ArrayMapEntry//​** va implementa interfața **//​Map.Entry//​** și va avea următoarele metode:
  
 <code java> <code java>
 +public class ArrayMapEntry<​K,​ V> implements Map.Entry<​K,​ V> {
 +private K key;
 +private V value;
 +...// constructor
 public K getKey(); public K getKey();
 public V getValue(); public V getValue();
Line 15: Line 19:
 public boolean equals(Object o); public boolean equals(Object o);
 public int hashCode(); public int hashCode();
 +}
 </​code>​ </​code>​
  
Line 20: Line 25:
  
 <code java> <code java>
 +public class ArrayMap<​K,​ V> extends AbstractMap<​K,​ V>{
 +...
 public Set entrySet(); public Set entrySet();
 public int size(); public int size();
 public V put(K key, V value); public V put(K key, V value);
 +....
 +}
 </​code>​ </​code>​
  
Line 35: Line 44:
 Definiți clasa **//​Catalog//​** care moștenește clasa **//​TreeSet//​**,​ specificând tipul **//​Student//​** pentru elementele din TreeSet. Clasa **//​Student//​** este definită în interiorul clasei **//​Catalog//​**,​ implementează interfața **//​Comparable//​** și conține următoarele câmpuri: un **//​String//​** //name//, pentru reținerea numelui studentului,​ un **//​double//​** //media//, Definiți clasa **//​Catalog//​** care moștenește clasa **//​TreeSet//​**,​ specificând tipul **//​Student//​** pentru elementele din TreeSet. Clasa **//​Student//​** este definită în interiorul clasei **//​Catalog//​**,​ implementează interfața **//​Comparable//​** și conține următoarele câmpuri: un **//​String//​** //name//, pentru reținerea numelui studentului,​ un **//​double//​** //media//,
 pentru medie, și un **//int//** //clazz// pentru reținerea numărului grupei din care face parte studentul. Compararea a doi studenți se realizează în funcție de medie (crescător),​ iar dacă acestea sunt egale, se realizează o sortare alfabetică. pentru medie, și un **//int//** //clazz// pentru reținerea numărului grupei din care face parte studentul. Compararea a doi studenți se realizează în funcție de medie (crescător),​ iar dacă acestea sunt egale, se realizează o sortare alfabetică.
 +Se va defini si metoda toString!
  
 Clasa trebuie să pună la dispoziție metode pentru următoarele operații: adăugarea unui student, căutarea unui student după nume (va returna null dacă nu există un student cu numele indicat în colecție), ștergerea unui student din catalog (primește ca parametru numele studentului),​ ordonarea alfabetică a studenților dintr-o grupă, primită ca parametru. Clasa trebuie să pună la dispoziție metode pentru următoarele operații: adăugarea unui student, căutarea unui student după nume (va returna null dacă nu există un student cu numele indicat în colecție), ștergerea unui student din catalog (primește ca parametru numele studentului),​ ordonarea alfabetică a studenților dintr-o grupă, primită ca parametru.
Line 53: Line 63:
  
 === Problema 3 === === Problema 3 ===
-Definiți clasa generică **//​LinkedList//​** care va implementa interfața **//​Iterable//​** și va modela o listă liniară simplu înlănțuită.+Definiți clasa **__generică__** **//​LinkedList//​** care va implementa interfața **//​Iterable//​** și va modela o listă liniară simplu înlănțuită
 +class LinkedList<​T>​ implements Iterable<​T>​
  
 În clasa **//​LinkedList//​** se vor defini: În clasa **//​LinkedList//​** se vor defini:
-  * o clasă internă privată statică **//​Node//​** care conține două referințe: una pentru valoarea pe care o reține nodul și una pentru nodul următor din listă; și doi constructori:​ unul cu doi parametri (valoarea și nodul următor) și unul cu un parametru (valoarea) - va atribui valoarea null nodului următor;+  * o clasă ​**//​generica//​** ​internă privată statică **//​Node//​** ​ 
 +                     <​code>​ private static class Node<​T>​ </​code>​ 
 +care conține două referințe: una pentru valoarea pe care o reține nodul și una pentru nodul următor din listă; și doi constructori:​ unul cu doi parametri (valoarea și nodul următor) și unul cu un parametru (valoarea) - va atribui valoarea null nodului următor;
   * două elemente de tip **//​Node//​**,​ reprezentând primul și respectiv ultimul element din listă;   * două elemente de tip **//​Node//​**,​ reprezentând primul și respectiv ultimul element din listă;
-  * o clasă internă **//​ListIterator//​** ce va implementa interfața **//​Iterator//​**;​+  * o clasă internă **//​ListIterator//​** ce va implementa interfața ​generica ​**//​Iterator//​**;​
   * metodele prezentate în blocul de cod de mai jos.   * metodele prezentate în blocul de cod de mai jos.
  
Line 66: Line 79:
 //Insereaza un nod la sfarsitul listei //Insereaza un nod la sfarsitul listei
 public void add(T data); public void add(T data);
-//​Returneaza primul nod din lista 
-public T getNode(); 
 //​Returneaza un obiect de tip ListIterator //​Returneaza un obiect de tip ListIterator
 public Iterator<​T>​ iterator(); public Iterator<​T>​ iterator();
poo/laboratoare/08.1542033929.txt.gz · Last modified: 2018/11/12 16:45 by carmen.odubasteanu
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