tutorial java

VII.  Limbajul JAVA – Polimorfism.Colectii

 

1.  Polimorfism

Permite folosirea unui obiect în locul altui obiect (o unei subclase în locul unei superclase)
Permite scrierea de cod eficient cu costuri de întreţinere reduse
Este susţinut doar de limbajele care permit “legarea întârziată”la apelul metodelor.

Exemplu:

Polimorfism

Gasca poate implementa move() prin apelulul metodei proprii zboară()
Pinguinul poate implementa move() prin apelulul metodei proprii înoată()
Polimorfismul se utilizeazădes pentru a trata unitar colecţii de obiecte diferite. Ex. Un tablou de Aparate:

tablou

 Aparat aparate[] = new Aparat[6];
aparate[0] = new Fax(1440, 230);
aparate[1] = new Calculator(1200, 256, 350);
aparate[2] = new Monitor(17, 130);
aparate[3] = new Radio("Panasonic", 80);
aparate[4] = new Bec(200);
aparate[5] = new Radiator(2000);
for (i=0; i<aparate.length; i++)
aparate[i].porneste();

2.  Colectii

Aproape toate programele reale utilizeazăcolecţii de obiecte.
Pentru gestionarea acestor colecţii limbajul Java pune la dispoziţie în pachetul java.util două ierarhii principial diferite:

  • Collection (mulţimi de obiecte)
  • Map (seturi tip cheie->valoare )

Colectii

 

Clasa Collectionare douătipuri de clase derivate:

  • List(permite duplicate, defineste o ordonare a elementelor)
  • Set(nu permite duplicate)

Clasa Map are de asemenea doua tipuri:

  • HashMap(cheile nu sunt ordonate)
  • TreeMap(cheile sunt ordonate in ordine ascendenta -> viteza mai mica)

Metode definite de interfata Collection:

  • add,addAll-adauga la colectie obiectul transmis, respectiv toate elementele colectiei transmise
  • clear goleşte colecţia
  • contains,containsAll-verificădacăîn colecţie se găseşte obiectul transmis, respectiv dacăîn colecţie este inclusăcolecţia transmisă
  • remove-elimină obiectul dat ca şi parametru
  • toArray creazăun tablou conţinând elementele colecţiei
  • size–returnează numărul de elemente al colecţiei

Metode definite de interfaţa List:

  • addFirst– adauga un element la inceputul listei
  • addLast– adauga un element la sfarsitul listei
  • getFirst()– intoarce primul element din lista
  • getLast()– intoarce ultimul element din lista
  • removeFirst()– sterge primul element din lista
  • removeLast()– sterge ultimul element din lista

Clasele care implementează această interfaţă sunt:

  • ArrayList (pt. acces aleator),
  • LinkedList (pt. acces secvential la elementele listei),
  • Vector (un tablou dinamic – setSize())

Exemplu de utilizare liste pentru limplementarea unei stive (LIFO):

LinkedList stiva = new LinkedList();
stiva.addFirst(new Integer(3));
stiva.addFirst(new Integer(5));
stiva.addFirst(new Integer(2));
System.out.println(stiva);
Integer i = (Integer)stiva.removeFirst();
//se extrage ultimul adaugat
System.out.println(stiva);

Metode definite de interfaţa Set:

  • add –adaugă un element la mulţime (dacă nu există)
  • addAll–adaugă o colecţie de elemente la mulţime
  • contains()–verifică apartenenţa unui element la mulţime
  • isEmpty()–true dacă mulţimea este vidă
  • remove ()– şterge elementul specificat, dacă există
  • removeAll()– şterge o colecţie de elemente din mulţime

Clasele care implementeaza aceasta interfata sunt

  • HashSet (implementare rapida)
  • TreeSet (pt. acces ordonat la elementele multimii)

Exemplu de utilizare mulţimi:

Set multimeAnimale = new HashSet();
multimeAnimale.add(“Cerb");
multimeAnimale.add(“Rinocer");
multimeAnimale.add(“Lup");
multimeAnimale.add(“Bizon");
System.out.println(multimeAnimale);
Set multimeOrdonata =
new TreeSet(multimeAnimale);
System.out.println(multimeOrdonata);

Metode definite de interfaţa Map:

  • clear –goleşte mulţimea
  • put–adaugă un obiect asociat unei chei
  • containsKey()–verifică existenţa unei chei
  • containsValue()– verifică existenţa unui obiect
  • get()–returnează obiectul asociat unei chei
  • isEmpty()–true dacă mulţimea este vidă
  • remove ()– şterge cheia specificată
  • size()– returnează numărul de elemente

Clasele care implementează aceastăinterfaţă sunt:

  • HashMap (implementare rapidă, fără ordonare)
  • TreeMap (cheile ordonate crescător)

De admin

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *