Il tipo astratto di dati Node List

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Il tipo astratto di dati Node List"

Transcript

1 Il tipo astratto di dati Node List Tipo di dati e operazioni Tipi di dati: oggetti arbitrari (come al solito) Operazioni: Metodi generici: - integer size() - boolean isempty() Metodi di accesso: - Position first(): Restituisce la posizione del primo elemento della lista - Position last(): Restituisce la posizione dell ultimo elemento della lista - Position prev(position p): Restituisce la posizione dell elemento che precede l elemento in posizione p - Position next(position p): Restituisce la posizione dell elemento che segue l elemento in posizione p

2 Il tipo astratto di dati Node List Tipo di dati e operazioni Metodi di aggiornamento: - E set(position p, E e): Rimpiazza l'elemento in posizione p con e, restituendo l'elemento che prima era in posizione p - addbefore (Position p, E e): Inserisce l elemento e nella posizione che precede la posizione p - addafter(position p, E e): Inserisce l elemento e nella posizione che segue la posizione p - addfirst(e e): Inserisce l elemento e come primo elemento - addlast(e e): Inserisce l'elemento e come ultimo elemento - E remove(position p): Rimuove e restituisce l elemento in posizione p

3 Il tipo astratto di dati Node List Eccezioni InvalidPositionException Viene lanciata quando viene specificata come argomento una posizione non valida (ad esempio la posizione è null oppure è inesistente) BoundaryViolationException Viene lanciata quando si tenta di accedere ad una posizione al di fuori della lista (ad esempio si chiama il metodo next sull'ultima posizione della lista) EmptyListException Viene lanciata quando si invocano i metodi first() o last() su una lista vuota

4 Il tipo astratto di dati Node List L'interfaccia Position package position; public interface Position<E> { E element();

5 Il tipo astratto di dati Node List L'interfaccia PositionList public interface PositionList<E> {... public int size(); public boolean isempty(); public Position<E> first() throws EmptyListException; public Position<E> last() throws EmptyListException; public Position<E> next(position<e> p) throws InvalidPositionException, BoundaryViolationException; public Position<E> prev(position<e> p) throws InvalidPositionException, BoundaryViolationException; public void addfirst(e e); public void addlast(e e);

6 Il tipo astratto di dati Node List L'interfaccia PositionList public interface PositionList<E> {... public void addafter(position<e> p, E e) throws InvalidPositionException; public void addbefore(position<e> p, E e) throws InvalidPositionException; public E remove(position<e> p) throws InvalidPositionException; public E set(position<e> p, E e) throws InvalidPositionException;

7 Il tipo astratto di dati Node List Implementazione basata su liste dopp. concatenate header trailer Liste doppiam. concatenate NODI ADT Lista POSIZIONI I nodi della lista doppiamente concatenata implementano le posizioni dell'adt node list

8 Il tipo astratto di dati Node List Implementazione dell'interfaccia Position public class DNode<E> implements Position<E> { private DNode<E> prev, next; private E element; public DNode(DNode<E> newprev, DNode<E> newnext, E elem) { prev = newprev; next = newnext; element = elem; public E element() { if ((prev == null) && (next == null)) throw new InvalidPositionException("La posizione non e` in una lista!"); return element; public DNode<E> getnext() { return next; public DNode<E> getprev() { return prev; public void setnext(dnode<e> newnext) { next = newnext; public void setprev(dnode<e> newprev) { prev = newprev; public void setelement(e newelement) { element = newelement;

9 Il tipo astratto di dati Node List Implementazione dell'interfaccia PositionList import position.*; public class NodePositionList<E> implements PositionList<E> {... protected int numelts; // Numero di elementi nella lista protected DNode<E> header, trailer; // Nodi sentinella public NodePositionList() { numelts = 0; header = new DNode<E>(null, null, null); trailer = new DNode<E>(header, null, null); header.setnext(trailer);

10 Il tipo astratto di dati Node List Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... public int size() { return numelts; public boolean isempty() { return (numelts == 0); public Position<E> first() throws EmptyListException { if (isempty()) throw new EmptyListException("La lista e` vuota"); return header.getnext(); public Position<E> last() throws EmptyListException { if (isempty()) throw new EmptyListException("La lista e` vuota"); return trailer.getprev();...

11 Il tipo astratto di dati Node List Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... protected DNode<E> checkposition(position<e> p) throws InvalidPositionException { if (p == null) throw new InvalidPositionException ("Null passato come posizione"); if (p == header) throw new InvalidPositionException ("header non e` una posizione valida di una lista"); if (p == trailer) throw new InvalidPositionException ("trailer non e` una posizione valida di una lista"); try { DNode<E> temp = (DNode<E>) p; if ((temp.getprev() == null) (temp.getnext() == null)) throw new InvalidPositionException ("La posizione non fa parte di una lista"); return temp; catch (ClassCastException e) { throw new InvalidPositionException ("Il tipo della posizione non e` valido per questa lista");...

12 Il tipo astratto di dati Node List Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... public Position<E> prev(position<e> p) throws InvalidPositionException, BoundaryViolationException { DNode<E> v = checkposition(p); DNode<E> prev = v.getprev(); if (prev == header) throw new BoundaryViolationException ("non posso retrocedere oltre l'inizio della lista"); return prev;... public Position<E> next(position<e> p) throws InvalidPositionException, BoundaryViolationException { DNode<E> v = checkposition(p); DNode<E> next = v.getnext(); if (next == trailer) throw new BoundaryViolationException ("non posso avanzare oltre la fine della lista"); return next;

13 Il tipo astratto di dati Node List Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> {... public void addafter(position<e> p, E element) throws InvalidPositionException { DNode<E> v = checkposition(p); numelts++; DNode<E> newnode = new DNode<E>(v, v.getnext(), element); v.getnext().setprev(newnode); v.setnext(newnode);... public void addfirst(e element) { numelts++; DNode<E> newnode = new DNode<E>(header, header.getnext(), element); header.getnext().setprev(newnode); header.setnext(newnode);

14 Il tipo astratto di dati Node List Implementazione dell'interfaccia PositionList public class NodePositionList<E> implements PositionList<E> { public E remove(position<e> p) throws InvalidPositionException { DNode<E> v = checkposition(p); numelts--; DNode<E> vprev = v.getprev(); DNode<E> vnext = v.getnext(); vprev.setnext(vnext); vnext.setprev(vprev); E velem = v.element(); // scollega la posizione dalla lista rendendola invalida v.setnext(null); v.setprev(null); return velem;

15 Esercizio Merge sort L'algoritmo merge sort è un algoritmo di ordinamento che ordina una sequenza di elementi ricorsivamente nel modo seguente: 1. divide la sequenza in due sequenze non ordinate, ciascuna avente taglia circa la metà della sequenza originale; 2. ordina separatamente ciascuna delle due sequenze; 3. fonde le due sequenze ordinate in un'unica sequenza ordinata. Dare un'implementazione del merge sort usando l'adt Lista. Si assuma che gli elementi da ordinare siano di tipo Integer.

16 Soluzione Merge sort public static void mergesort(positionlist<integer> L){ int n = L.size(); if (n < 2) return; PositionList<Integer> L1 = new NodePositionList<Integer>(); PositionList<Integer> L2 = new NodePositionList<Integer>(); for (int i = 0; i < n/2; i++) L1.addLast(L.remove(L.first())); for (int i = n/2; i < n; i++) L2.addLast(L.remove(L.first())); mergesort(l1); mergesort(l2); merge(l1,l2,l);

17 Soluzione Merge sort public static void merge(positionlist<integer> L1, PositionList<Integer> L2, PositionList<Integer> L){ while (!L1.isEmpty() &&!L2.isEmpty()) if (L1.first().element() <= L2.first().element()) L.addLast(L1.remove(L1.first())); else L.addLast(L2.remove(L2.first())); while(!l1.isempty()) // sposta i rimanenti elementi di L1 L.addLast(L1.remove(L1.first())); while(!l2.isempty()) // sposta i rimanenti elementi di L2 L.addLast(L2.remove(L2.first()));

18 Iteratore A cosa serve Una operazione molto frequente sugli ADT array list e lista di nodi è quella di scandire la collezione di elementi un elemento alla volta Esempi: - cercare uno specifico elemento - visualizzare ordinatamente gli elementi della collezione - determinare il numero di occorrenze di un dato elemento - sommare tutti gli elementi di una collezione

19 Iteratore A cosa serve Un iteratore è un software design pattern che permette la scansione di un qualsiasi ADT che astrae una collezione ordinata di elementi Un iteratore può essere visto come una estensione del concetto di posizione (position): - l'adt position incapsula il concetto di posto - un iteratore incapsula il concetto di posto e di posto successivo

20 Iteratore Esempio Data una collezione ordinata di oggetti (array list, node list) A B C D

21 Iteratore Esempio Data una collezione ordinata di oggetti (array list, node list) A B C D un iteratore è un nuovo ADT che ci permette di scandire la collezione

22 Iteratore Esempio Data una collezione ordinata di oggetti (array list, node list) A B C D ADT iteratore A un iteratore è un nuovo ADT che ci permette di scandire la collezione

23 Iteratore Esempio Data una collezione ordinata di oggetti (array list, node list) A B C D ADT iteratore B un iteratore è un nuovo ADT che ci permette di scandire la collezione

24 Iteratore Esempio Data una collezione ordinata di oggetti (array list, node list) A B C D ADT iteratore C un iteratore è un nuovo ADT che ci permette di scandire la collezione

25 Iteratore Esempio Data una collezione ordinata di oggetti (array list, node list) A B C D ADT iteratore D un iteratore è un nuovo ADT che ci permette di scandire la collezione

26 Iteratore Definizione del tipo astratto di dati Un iteratore può essere definito come un ADT che supporta i seguenti due metodi: - public boolean hasnext(): determina se ci sono altri elementi nell'iteratore - public E next(): restituisce l'elemento successivo in un iteratore

27 Iteratore Definizione del tipo astratto di dati Un iteratore può essere definito come un ADT che supporta i seguenti due metodi: - public boolean hasnext(): determina se ci sono altri elementi nell'iteratore - public E next(): restituisce l'elemento successivo in un iteratore eccezione: NoSuchElementException quando next() viene invocato su una collezione vuota o sull'ultimo elemento della collezione

28 Iteratore Definizione del tipo astratto di dati Un iteratore può essere definito come un ADT che supporta i seguenti due metodi: - public boolean hasnext(): determina se ci sono altri elementi nell'iteratore - public E next(): restituisce l'elemento successivo in un iteratore eccezione: NoSuchElementException quando next() viene invocato su una collezione vuota o sull'ultimo elemento della collezione java fornisce un iteratore con l'interfaccia java.util.iterator

29 Iteratore Implementazione un iteratore viene solitamente associato ad uno degli ADT ad accesso sequenziale (array list, lista di nodi) un iteratore permette di accedere a tutti gli oggetti della collezione nell'ordine lineare stabilito il primo elemento di un iteratore si ottiene dalla prima chiamata del metodo next() (assumendo che l'iteratore contenga almeno un elemento) un iteratore deve essere indipendente dal modo con cui è organizzata la collezione di oggetti a cui è associato

30 Iteratore Implementazione Vogliamo un meccanismo uniforme per scandire una struttura dati ad accesso sequenziale: dobbiamo fare in modo che tutti i tipi astratti di dati ad accesso sequenziale supportino il seguente metodo: Iterator<E> iterator(): restituisce un iteratore degli elementi della collezione

31 Iteratore Implementazione Vogliamo un meccanismo uniforme per scandire una struttura dati ad accesso sequenziale: dobbiamo fare in modo che tutti i tipi astratti di dati ad accesso sequenziale supportino il seguente metodo: Iterator<E> iterator(): restituisce un iteratore degli elementi della collezione in Java 5 questo metodo è fornito dall'interfaccia java.lang.iterable

32 Iteratore Implementazione La nostra implementazione deve consentire di tener traccia del punto della collezione indicato dal cursore dell'iteratore creare un nuovo iteratore consiste semplicemente nel creare un oggetto iteratore che rappresenta un cursore posto prima del primo elemento della collezione usando la prima volta il metodo next(), si sposta il cursore sul primo elemento della collezione successive invocazioni del metodo next() ci permetteranno di scandire tutti gli elementi della collezione il metodo hasnext() ci permette di capire quando abbiamo finito di scandire tutta la collezione (va usato prima di invocare next())

33 Iteratore (lista di nodi) Modifica dell'interfaccia PositionList<E> Aggiungiamo il metodo iterator() all'interfaccia PositionList<E>: public interface PositionList<E> {...

34 Iteratore (lista di nodi) Modifica dell'interfaccia PositionList<E> Aggiungiamo il metodo iterator() all'interfaccia PositionList<E>: import java.util.iterator; public interface PositionList<E> extends Iterable<E>{... public Iterator<E> iterator(); Nelle prossime diapositive vediamo come implementare questo metodo

35 Iteratore (lista di nodi) La classe ElementIterator<E> import java.util.iterator; import position.*; public class ElementIterator<E> implements Iterator<E>{ protected PositionList<E> list; // la lista su cui implem. l'iteratore protected Position<E> cursor; // indica la successiva posizione public ElementIterator(PositionList<E> L) { list = L; cursor = (list.isempty())? null : list.first(); public boolean hasnext() { return (cursor!= null); public E next() throws NoSuchElementException { if (cursor == null) throw new NoSuchElementException("No next element"); E toreturn = cursor.element(); cursor = (cursor == list.last())? null : list.next(cursor); return toreturn; public void remove() {

36 Iteratore (lista di nodi) Il metodo iterator() nella classe NodePositionList Aggiungiamo l'implementazione del metodo iterator() (che usa la classe ElementIterator<E>) alla classe NodePositionList<E> che implementa l'interfaccia PositionList<E>: public class NodePositionList<E> implements PositionList<E> {... public Iterator<E> iterator() {return new ElementIterator<E>(this);

37 Merge sort Scansione della lista con un iteratore public static void main(string[] args) { PositionList<Integer> L1 = new NodePositionList<Integer>(); L1.addLast(7); L1.addLast(5); L1.addLast(2); L1.addLast(4); L1.addLast(1); L1.addLast(8); mergesort(l1); Iterator<Integer> I = L1.iterator(); while (I.hasNext()) System.out.print(I.next()+" ");

38 Esercizio di test Scrivere un metodo public static void remove (PositionList<Integer> L, Integer i) che rimuova da una lista L di interi tutte le occorrenze dell'intero i.

39 Iteratore sulle posizioni Per gli ADT con Position Negli ADT che supportano la nozione di position (come la lista di nodi) possiamo fare una scansione delle posizioni oltre che degli elementi?

40 Iteratore sulle posizioni Per gli ADT con Position Negli ADT che supportano la nozione di position (come la lista di nodi) possiamo fare una scansione delle posizioni oltre che degli elementi? Possiamo fornire anche il metodo: positions(): restituisce un oggetto Iterable contenente le posizioni della collezione come suoi elementi

41 Iteratore sulle posizioni Per gli ADT con Position Aggiungiamo il metodo positions() all'interfaccia PositionList<E>: import java.util.iterator; public interface PositionList<E> extends Iterable<E>{... public Iterator<E> iterator(); public Iterable<Position<E>> positions();

42 Iteratore sulle posizioni (nodelist) Implementazione del metodo positions() public class NodePositionList<E> implements PositionList<E> {... public Iterable<Position<E>> positions() {// crea una lista di posizioni PositionList<Position<E>> P = new NodePositionList<Position<E>>(); if (!isempty()) { Position<E> p = first(); while (true) { P.addLast(p); // aggiunge la posizione p come ultimo elemento di P if (p == last()) break; p = next(p); return P; // restituisce P come oggetto Iterable public Iterator<E> iterator() {return new ElementIterator<E>(this);

43 Iteratore sulle posizioni (nodelist) Implementazione del metodo positions() Cosa fa il metodo positions()? Il metodo positions() se invocato su una lista L crea una nuova lista P contenente le posizioni di L La lista P viene restituita come un oggetto Iterable<Position<E>> Ciò ci permette di invocare il metodo iterator() su P per ottenere facilmente un iteratore sulle posizioni della lista originale L

44 Ritorniamo al nostro esercizio Uso del metodo positions() Scrivere un metodo public static void remove (PositionList<Integer> L, Integer i) che rimuova da una lista L di interi tutte le occorrenze dell'intero i.

45 Ritorniamo al nostro esercizio Soluzione public static void remove(positionlist<integer> L, Integer i){ Iterable<Position<Integer>> It = L.positions(); Iterator<Position<Integer>> I = It.iterator(); while (I.hasNext()){ Position<Integer> p = I.next(); if (p.element().equals(i)) L.remove(p); public static void main(string[] args) { PositionList<Integer> L1 = new NodePositionList<Integer>();... remove(l1,1); Iterator<Integer> I = L1.iterator(); while (I.hasNext()) System.out.print(I.next()+" ");

46 For-each-loop for(iterator<type> iter = expression.iterator(); iter.hasnext();){ Type name = iter.next(); loop_statement for(type name : expression){ loop_statement

47 For-each-loop for(iterator<type> iter = expression.iterator(); iter.hasnext();){ Type name = iter.next(); loop_statement for(iterator<position<e>> iter = positions.iterator(); iter.hasnext();){ Position<E> pos = iter.next(); System.out.println(pos.element()); for(type name : expression){ loop_statement

48 For-each-loop for(iterator<type> iter = expression.iterator(); iter.hasnext();){ Type name = iter.next(); loop_statement for(iterator<position<e>> iter = positions.iterator(); iter.hasnext();){ Position<E> pos = iter.next(); System.out.println(pos.element()); for (Position<E> pos: positions) System.out.println(pos.element()); for(type name : expression){ loop_statement

49 For-each-loop Attenzione: per poter usare il for-each-loop è necessario utilizzare le interfacce java.lang.iterable e java.util.iterator

50 Ritorniamo al nostro esercizio Uso del metodo positions() e del for-each-loop Scrivere un metodo public static void remove (PositionList<Integer> L, Integer i) che rimuova da una lista L di interi tutte le occorrenze dell'intero i.

51 Ritorniamo al nostro esercizio Soluzione con il for-each-loop public static void remove(positionlist<integer> L, Integer i){ for (Position<Integer> p : L.positions()) if (p.element().equals(i)) L.remove(p); public static void main(string[] args) { PositionList<Integer> L1 = new NodePositionList<Integer>();... remove(l1,1); for (Integer i : L1) System.out.print(i+" ");

Implementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista

Implementazione della coda con liste concatenate. x v. il front della coda è memorizzato nel primo nodo (head) della lista Liste concatenate Implementazione della coda con liste concatenate head (front della coda) tail (rear della coda) Ø e y a x v il front della coda è memorizzato nel primo nodo (head) della lista il rear

Dettagli

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione Liste doppie GT: 6.2 (e 3.3) Doubly Linked Lists 1 Argomenti della lezione ADT Position NodeList interface Position PositionList class DNode NodePositionList inserzione rimozione Iteratore ADT Iterator

Dettagli

Ripasso di Java. A.A. 16/17 DA1 A. Pietracaprina 1

Ripasso di Java. A.A. 16/17 DA1 A. Pietracaprina 1 Ripasso di Java A.A. 16/17 DA1 A. Pietracaprina 1 1 Programma Stand-alone File: MyProgram.java import ; // import a package or a class public class MyProgram { public static void main(string[] args) {..

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

Alberi binari ( 7.3)

Alberi binari ( 7.3) Alberi binari ( 7.3) + a 3 b Albero Binario ( 7.3) DEFINIZIONE Albero Binario è un albero ordinato in cui ogni nodo ha al più due figli. Un albero binario si dice proprio se ogni nodo ha o zero o figli

Dettagli

Sul pattern Iterator

Sul pattern Iterator Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione.

Dettagli

COLLEZIONI. SOMMARIO Collezioni: Liste: ITERATORI ITERATORI

COLLEZIONI. SOMMARIO Collezioni: Liste: ITERATORI ITERATORI SOMMARIO Collezioni: Array e liste. Iteratori. Classi interne. Nodi: dati e riferimenti. Liste: LinkedList: specifica e implementazione. Prestazioni. COLLEZIONI Una collezione (contenitore) è un oggetto

Dettagli

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,

Dettagli

Metodi di una Collection

Metodi di una Collection Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare

Dettagli

Implementazione ADT: Alberi

Implementazione ADT: Alberi Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice

Dettagli

Le liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5

Le liste. ADT e strutture dati per la rappresentazione di sequenze. Ugo de' Liguoro - Algoritmi e Sperimentazioni 03/04 - Lez. 5 Le liste ADT e strutture dati per la rappresentazione di sequenze L ADT delle liste Una lista di valori di tipo A è una sequenza finita: a1, a2, L, an dove ai A, per ogni i valore lunghezza posizione L

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati

ADT Mappa. Le chiavi (il mezzo per accedere agli elementi) hanno lo scopo di rendere efficiente la ricerca. Strutture Dati ADT Mappa Una mappa è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore ogni elemento (k,v) viene detto entrata (entry) della mappa entrate multiple con la

Dettagli

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java

Albero Binario GT 7.3. interfacce di Positio<E>, Tree<E>, e BinaryTree<E>; il file TestLinkedBinaryTree.java Laboratorio Java Albero Binario GT 7.3 Esercitazione Sono dati : interfacce di Positio, Tree, e BinaryTree; il file TestLinkedBinaryTree.java e i file.class che implementano le interfacce www.dei.unipd.it/corsi/fi2ae

Dettagli

Implementazione Java di un ADT

Implementazione Java di un ADT Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice

Dettagli

Capitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati

Capitolo 17. Introduzione alle strutture di dati. Capitolo 17 Introduzione alle strutture di dati Capitolo 17 Introduzione alle strutture di dati 1 Figura 1 Inserire un elemento in una lista concatenata 2 Figura 2 Un iteratore di lista 3 Figura 3 Una visione astratta dell iteratore di lista 4 File

Dettagli

Alberi. Definizioni principali

Alberi. Definizioni principali Definizioni principali Un albero è una struttura dati che contiene oggetti organizzati gerarchicamente (a differenza della lista di nodi, dell'array list, i cui elementi sono organizzati linearmente) radice

Dettagli

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa:

ADT Dizionario. Come nella Mappa: Diversamente dalla Mappa: Come nella Mappa: un Dizionario è un contenitore di elementi del tipo (k,v) dove k è la chiave e v è il suo corrispondente valore. ogni elemento (k,v) viene detto entrata (entry) del Dizionario. chiavi

Dettagli

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto

Dettagli

Capitolo 14 Introduzione alle strutture di dati. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 14 Introduzione alle strutture di dati. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Capitolo 14 Introduzione alle strutture di dati Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Capire come utilizzare le liste concatenate presenti

Dettagli

Generics & Collections

Generics & Collections Generics & Collections Ingegneria del software Jody Marca jody.marca@polimi.it I Generics 2 I Generics rendono possibile definire tipi parametrici tramite classi ed interfacce che gestiscono tipi generici

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Polimorfismo parametrico vs polimorfismo per inclusione

Polimorfismo parametrico vs polimorfismo per inclusione Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico

Dettagli

22 - Strutture Dati (Java Collections Framework)

22 - Strutture Dati (Java Collections Framework) 22 - Strutture Dati (Java Collections Framework) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Implementazione con alberi binari di ricerca

Implementazione con alberi binari di ricerca public class LinkedBinaryTree implements BinaryTree { /** Espande una foglia in un nodo interno con due foglie come figli */ public void expandexternal(position v, E l, E r) throws InvalidPositionException

Dettagli

Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code

Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code Argomenti della lezione! Tipi di dato astratti! Strutture dati elementari Liste Implementazione di liste in Java Stack Code! Esempi di applicazione Tipo di dato astratto! Tipo di dato astratto o ADT (Abstract

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3

Il TDA Dictionary. Definizione informale. I metodi del TDA Dictionary 1. Applicazioni. I metodi del TDA Dictionary 2. I metodi del TDA Dictionary 3 Il TDA Dictionary Definizione informale Il TDA Dictionary (dizionario) modella una collezione di voci su cui è possibile effettuare delle ricerche Una voce è una coppia (chiave, elemento) Le principali

Dettagli

Esercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati

Esercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati Esercizio Scrivere una classe ListMap che implementa la mappa con una lista Esercizio Si scriva un metodo public static PositionList preorder(linkedbinarytree T) che preso in

Dettagli

Corso: Strutture Dati Docente: Annalisa De Bonis

Corso: Strutture Dati Docente: Annalisa De Bonis Heap Corso: Strutture Dati Docente: Annalisa De Bonis Definizione l Un heap è un albero binario che contiene entrate della forma (key, value) nei suoi nodi e soddisfa le seguenti proprietà: l Heap-Order:

Dettagli

Astrazioni sul controllo. Iteratori

Astrazioni sul controllo. Iteratori Astrazioni sul controllo Iteratori Nuove iterazioni Definendo un nuovo tipo come collezione di oggetti (p. es., set) si vorrebbe disporre anche di un operazione che consenta cicli (iterazioni) Es.: gli

Dettagli

Capitolo 16. Programmazione generica. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 16. Programmazione generica. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Capitolo 16 Programmazione generica Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Obiettivi del capitolo Capire gli obiettivi della programmazione generica Essere in grado

Dettagli

L' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi)

L' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi) L' ADT grafo è un contenitore di elementi memorizzati nelle posizioni del grafo (vertici e archi) le informazioni possono essere memorizzate sia sui vertici sia sugli archi del grafo Metodi fondamentali

Dettagli

Laboratorio 9 ( Java 4 ) Classe astratta per BFS su grafo

Laboratorio 9 ( Java 4 ) Classe astratta per BFS su grafo Laboratorio 9 ( Java ) Classe astratta per BFS su grafo Testo esercitazione Scaricare il file EseBFS.zip, scompattarlo ed analizzare le classi in esso contenute con particolare attenzione alla classe astratta

Dettagli

Collezioni. (a cura del Prof. Marco Patella)

Collezioni. (a cura del Prof. Marco Patella) (a cura del Prof. Marco Patella) 1 Introduzione al Java Collections Framework Una collezione (o contenitore) consente di organizzare e gestire un gruppo di oggetti collezioni (vere e proprie) mappe implementate

Dettagli

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico

Dettagli

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125 Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia

Dettagli

Corso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte)

Corso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte) Corso di Algoritmi e Strutture Dati con Laboratorio Java Collections Framework (I parte) L infrastruttura JCF è una raccolta di interfacce e classi, tra loro correlate, appartenenti al pacchetto java.util.

Dettagli

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code

Dettagli

Le collezioni di oggetti. Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni

Le collezioni di oggetti. Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni Le collezioni di oggetti Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni Contenitori di oggetti Java mette a disposizione una libreria per gestire gruppi di oggetti organizzandola

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Le liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo?

Le liste con array. Rimuovere la perla rossa costringe a spostare molte altre perle. Dove mettere la perla verde se si è esaurito il filo? Liste Linkate Le liste con array Volendo usare una metafora, l implementazione delle liste tramite array è come infilare le perle (gli oggetti della lista) in un filo di lunghezza predefinita. E chiaro

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Introduzione al Java Collections Framework. Java Collections Framework (cont.) Interfacce del Collections Framework

Introduzione al Java Collections Framework. Java Collections Framework (cont.) Interfacce del Collections Framework Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Introduzione al Java Collections

Dettagli

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011 13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.

Dettagli

Introduzione al Java Collections Framework

Introduzione al Java Collections Framework Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Insegnamento di PROGETTAZIONE

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica

Alberi. In informatica, un albero è un modello astratto di una struttura dati gerarchica Il TDA Tree Alberi In informatica, un albero è un modello astratto di una struttura dati gerarchica Struttura dati non lineare Si pensi al file system di un sistema operativo Le relazioni in un albero

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma

Dettagli

Alberi Binario in Java

Alberi Binario in Java Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Dettagli

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,

Dettagli

Corso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione

Corso: Fondamenti di Informatica (Canale 5) a.a Corsi di laurea: Ing. Settore Informazione Domanda n. 1 Corso: Fondamenti di Informatica (Canale 5) a.a. 2016-17 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab10 Argomento: Algoritmi e complessita'

Dettagli

Il linguaggio Java: aggiunte in Java 1.5

Il linguaggio Java: aggiunte in Java 1.5 .. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Tipi di Dati Astratti

Tipi di Dati Astratti Tipi di Dati Astratti April 19, 2017 Dati e Tipi di Dato Tipo di dato: concetto di alto livello Macchina fisica: unico tipo di dato sequenze di bit Macchine Astratte: tipi di dato più complessi Tipo di

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Packages Package:

Dettagli

Notazione grafica UML

Notazione grafica UML Notazione grafica UML Estensione e implementazione in UML: estende implementa Per classi astratte e interfacce i nomi vanno in corsivo preceduti da e UtenteComputer

Dettagli

Il Java Collections Framework

Il Java Collections Framework Il Java Collections Framework Il Java Collections Framework è una libreria formata da un insieme di interfacce e di classi che le implementano per lavorare con gruppi di oggetti (collezioni). Le interfacce

Dettagli

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list

Informatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2) ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI

Dettagli

Marco Faella I pattern Template Method e Factory Method

Marco Faella I pattern Template Method e Factory Method Marco Faella I pattern Template Method e Factory Method 12 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro

Dettagli

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 8 SE PROGRAMMER

Dettagli

Informatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata

Informatica 3. LEZIONE 12: Liste. Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata Informatica 3 LEZIONE 12: Liste Modulo 1: ADT lista e implementazione basata su array Modulo 2: Lista concatenata Informatica 3 Lezione 12 - Modulo 1 ADT lista e implementazione basata su array Introduzione

Dettagli

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe

Dettagli

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture

Linked Lists. Liste linkate (1) liste linkate ( stack, queues ), trees. Liste linkate come strutture Linked Lists Liste linkate () La combinazione di class/struct e puntatori porta alla creazioni di interessanti Abstract Data Type liste linkate ( stack, queues ), trees Liste linkate come strutture struct

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali

Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate

Dettagli

Testo di Riferimento (usato nei corsi precedenti)

Testo di Riferimento (usato nei corsi precedenti) Parti II e III 1 Framework Collections in Java: API Java http://java.sun.com/ Generics in Java Tutorial Sun (in inglese) http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Testo di Riferimento (usato

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Dettagli

Iteratori e iteratore in una catena (capitolo 14)

Iteratori e iteratore in una catena (capitolo 14) SETTIMANA 9 Iteratori e iteratore in una catena (capitolo 14) 1 Accedere a nodi di una catena Per eseguire operazioni sulla catena che necessitano di accedere ai nodi è necessario aggiungere metodi all

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione II Compitino (Vers. B) Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi

Dettagli

Fondamenti di informatica Oggetti e Java. Luca Cabibbo. Collezioni++ (Aggiunte di Marco Patella) Capitolo 26.bis. aprile 2006.

Fondamenti di informatica Oggetti e Java. Luca Cabibbo. Collezioni++ (Aggiunte di Marco Patella) Capitolo 26.bis. aprile 2006. Fondamenti di informatica Oggetti e Java Luca Cabibbo ++ (Aggiunte di Marco Patella) Capitolo 26.bis aprile 2006 1 Problemi delle collezioni Dal momento che ogni collezione contiene oggetti di tipo Object

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie

Dettagli

Strutture dati. Le liste

Strutture dati. Le liste Strutture dati Le liste Introduzione Una lista è una successione finita di valori di un tipo (insieme di valori e ordine). Come tipo di dato è qualificata dalle operazioni che ci si possono svolgere: inserimento

Dettagli

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java

Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe

Dettagli

IL CONCETTO DI CLASSE

IL CONCETTO DI CLASSE IL CONCETTO DI CLASSE Una CLASSE riunisce le proprietà di: componente software: può essere dotata di suoi propri dati / operazioni moduli: riunisce dati e relative operazioni, fornendo idonei meccanismi

Dettagli

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo.

public double getlato() restituisce la lunghezza del lato del quadrato che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 21 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

La struttura dati PILA

La struttura dati PILA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati PILA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una pila (o stack) è una struttura dati astratta

Dettagli