AA Java generics

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "AA Java generics"

Transcript

1 AA Java generics 1

2 Java Interface e astrazine interface ListOfNumbers { blean add(number elt); Number get(int index); interface ListOfIntegers { blean add(integer elt); Integer get(int index); e ListOfStrings e // Necessari astrarre sui,pi interface List<E> { blean add(e n); E get(int index); 2

3 Java Interface e astrazine interface ListOfNumbers { blean add(number elt); Number get(int index); interface ListOfIntegers { blean add(integer elt); Integer get(int index); e ListOfStrings e // Necessari astrarre sui,pi interface List<E> { blean add(e n); E get(int index); Usiam I,pi!!! List<Integer> List<Number> List<String> List<List<String>> 3

4 Parametri e parametri di Ap interface ListOfIntegers { blean add(integer elt); Integer get(int index); interface List<E> { blean add(e elt); E get(int index); Dichiarazine del parametr frmale Istanziat cn una espressine che ha il Ap richiest (lst.add(7)) Tip di add: Integer blean Dichiarazine di un parametr di Ap Istanziabile cn un qualunque Ap List<String> 4

5 Variabili di Ap class NewSet<T> implements Set<T> { // rep invariant: // nn-null, cntains n duplicates //... List<T> therep; T lastiteminserted;... Dichiarazine Use UAlizz 5

6 Dichiarare classi generiche class Name<TypeVar1,, TypeVarN> { interface Name<TypeVar1,, TypeVarN> { cnvenzini standard T per Type, E per Element, K per Key, V per Value, Istanziare una classe generica significa frnire un valre di Ap Name<Type1,, TypeN> 6

7 Istanziare Api blean add1(object elt); blean add2(number elt); add1(new Date( )); // OK add2(new Date( )); // cmpile-time errr Limite superire gerarchia interface List1<E extends Object> { interface List2<E extends Number> { List1<Date> // OK, Date è un stttip di Object List2<Date> // cmpile-time errr, Date nn è // stttip di Number 7

8 Visine effetva dei generici class Name<TypeVar1 extends Type1,, TypeVarN extends TypeN> { (analg per le interfacce) (intuizine: Object è il limite superire di default nella gerarchia dei Api) Istanziazine idenaca Name<Type1,, TypeN> Ma cmpile-,me errr se il Ap nn è un swap del limite superire della gerarchia 8

9 Usiam le variabili di Ap Si pssn effewuare tuwe le perazini cmpaabili cn il limite superire della gerarchia cncewualmente quest crrispnde a frzare una precndizine sulla istanziazine del Ap class List1<E extends Object> { vid m(e arg) { arg.asint( ); // cmpiler errr, E ptrebbe // nn avere l perazine asint class List2<E extends Number> { vid m(e arg) { arg.asint( ); // OK, Number e tutti i sui // stttipi supprtan asint 9

10 Vincli di Ap <TypeVar extends SuperType> upper bund; va bene il supertype un dei sui swapi <TypeVar extends ClassA & InterfB & InterfC & > Mul,ple upper bunds <TypeVar super SubType> Esempi lwer bund; va bene il swap un qualunque dei sui superapi // strutture di rdine su alberi public class TreeSet<T extends Cmparable<T>> {... 10

11 Esempi class Utils { static duble sumlist(list<number> lst) { duble result = 0.0; fr (Number n : lst) result += n.dublevalue( ); return result; static Number chse(list<number> lst) { int i =... // numer randm < lst.size return lst.get(i); 11

12 Sluzine efficace class Utils { static <T extends Number> duble sumlist(list<t> lst) { duble result = 0.0; fr (Number n : lst) // T als wrks result += n.dublevalue(); Dichiarare i vincli sui Api return result; static <T> T chse(list<t> lst) { int i = // randm number < lst.size return lst.get(i); Dichiarare i vincli sui Api 12

13 Metdi generici Metdi che pssn usare i Api generici delle classi Pssn dichiarare anche i lr Api generici Le invcazini di metdi generici dev bbligatriamente istanziare i parametri di Ap staacamente: una frma di inferenza di Ap 13

14 Un esempi public class InsertinSrt<T extends Cmparable<T>> { public vid srt(t[ ] x) { T tmp; fr (int i = 1; i < x.length; i++) { // invariant: x[0],...,x[i-1] srted tmp = x[i]; fr (int j = i; j > 0 && x[j-1].cmparet(tmp) > 0; j--) x[j] = x[j-1]; x[j] = tmp; 14

15 Generici e la nzine di swap Number Integer List<Number>? List<Integer> Integer è un swap di Number List<Integer> è un swap di List<Number>? 15

16 Quali sn le regle di Java? Se Type2 e Type3 sn differena, e Type2 è un swap di Type3, allra Type1<Type2> nn è un swap di Type1<Type3> Frmalmente: la nzine di swap usata in Java è invariante per le classi generiche 16

17 Esempi (da Java) Tipi e swapi Integer è un swap di Number ArrayList<E> è un swap di List<E> List<E> è un swap di CllecAn<E> Ma List<Integer> nn è un swap di List<Number> 17

18 List<Number> e List<Integer> interface List<T> { blean add(t elt); T get(int index); Number Integer type List<Number> has blean add(number elt); Number get(int index); type List<Integer> has blean add(integer elt); Integer get(int index); List<Number> nn è un superap di List<Integer> 18

19 Una discussine (per capire anche la ricerca nel sewre) interface List<T> { T get(int index); type List<Number> has Number get(int index); Number Integer type List<Integer> has Integer get(int index); La nzine di swap cvariante sarebbe crrewa List<Integer> swap di List<Number> Sfrtunatamente Java nn adwa questa sluzine 19

20 Allra parliam anche di cntravarianza interface List<T> { blean add(t elt); type List<Number> has blean add(number elt); Number Integer type List<Integer> has blean add(integer elt); La nzine di swap cntravariante sarebbe altrewant crrewa List<Number> è swap di List<Integer> Ma Java... 20

21 Altri aspet List<Integer> e List<Number> nn sn crrelaa dalla nzine di swap TuWavia, in diversi casi la nzine di swap sui generici funzina cme un se l aspewa anche in Java Esempi: assumiam che LargeBag extends Bag, allra LargeBag<Integer> è un swap di Bag<Integer> LargeBag<Number> è un swap di Bag<Number> LargeBag<String> è un swap di Bag<String> 21

22 addall interface Set<E> { // Aggiunge a this tutti gli elementi di c // (che nn appartengn a this) vid addall(??? c); Quale è il miglir Ap per il parametr frmale? Il più ampi pssibile che permewe di avere implementazini crrewe 22

23 addall interface Set<E> { // Aggiunge a this tutti gli elementi di c // (che nn appartengn a this) vid addall(??? c); Una prima scelta è vid addall(set<e> c); Trpp restritv un parametr awuale di Ap List<E> nn sarebbe permess, e ciò è spiacevle 23

24 addall interface Set<E> { // Aggiunge a this tutti gli elementi di c // (che nn appartengn a this) vid addall(??? c); Secnd tentaav: vid addall(cllectin<e> c); Trpp restritv il parametr awuale di Ap List<Integer> per Set<Number> nn va bene anche se addall ha sl bisgn di leggere da c e nn di mdificarl!!! questa è la principale limitazine della nzine di invarianza per i generici in Java 24

25 addall interface Set<E> { // Aggiunge a this tutti gli elementi di c // (che nn appartengn a this) vid addall(??? c); Prviam ancra <T extends E> vid addall(cllectin<t> c); Idea buna: un parametr generic ma vinclat pss avere un parametr awuale di Ap List<Integer> per Set<Number> addall nn può vedere nell implementazine il Ap T, sa sl che è un swap di E, e nn può mdificare la cllecan c 25

26 Altr esempi <T> vid cpyt(list<t> dst, List<T> src) { fr (T t : src) dst.add(t); La sluzine va bene, ma ancra megli <T1, T2 extends T1> vid cpyt(list<t1> dst, List<T2> src) { fr (T2 t : src) dst.add(t); 26

27 Wildcard Sintassi delle wildcard? extends Type, swap nn specificat del Ap Type? ntazine semplificata per? extends Object? super Type, superap nn specificat del Ap Type wildcard = una variabile di Ap annima? Ap nn cnsciut si usan le wildcard quand si usa un Ap esawamente una vlta ma nn si cnsce il nme l unica csa che si sa è l unicità del Ap 27

28 Esempi interface Set<E> { vid addall(cllectin<? extends E> c); maggirmente flessibile rispew a vid addall(cllectin<e> c); espressiva cme <T extends E> vid addall(cllectin<t> c); 28

29 Prducer Extends, Cnsumer Super Quand si usan le wildcard? si usa? extends T nei casi in cui si vglin Wenere dei valri (da un prduwre di valri) si usa? super T nei casi in cui si vglin inserire valri (in un cnsumatre) nn vann usate (basta T) quand si Wengn e si prducn valri <T> vid cpy(list<? super T> dst, List<? extends T> src); 29

30 ? vs Object? Tip paraclare annim vid printall(list<?> lst) { Quale è la differenza tra List<?> e List<Object>? pssiam istanziare? cn un Ap qualunque: Object, String, List<Object> è più restritv: List<String> nn va bene Quale è la differenza tra List<F> e List<? extends F> nel secnd cas il Ap annim è un swap scnsciut di F List<? extends Animal> può memrizzare Giraffe ma nn Zebre 30

31 Java array Sappiam bene cme perare cn gli array in Java Ver? Analizziam questa classe class Array<T> { public T get(int i) { "p" public T set(t newval, int i) { "p" Dmanda: Se Type1 è un swap di Type2, quale è la relazine tra Type1[] e Type2[]?? 31

32 Srpresa! Sappiam che per i generici la nzine di swap è invariante, pertant se Type1 è un swap di Type2, allra Type1[] e Type2[] nn dvrebber essere crrelaa Ma Java è stran, se Type1 è un swap di Type2, allra Type1[] è un swap di Type2[] Java (ma anche C#) ha faw questa scelta prima dell intrduzine dei generici cambiarla ra è un p trpp invasiv per i pigri prgrammatri Java (cmment bbligat per chi fa ricerca sui principi dei linguaggi di prgrammazine) 32

33 Ci sn anche cse bune Gli inglesi dicn: Prgrammers d kay stuff LibraryHlding Bk vid maybeswap(libraryhlding[ ] arr) { if(arr[17].duedate( ) < arr[34].duedate( )) // swap arr[17] and arr[34] CD // cliente Bk[ ] bks = ; maybeswap(bks); // usa la cvarianza degli array 33

34 Ma può andare male vid replace17(libraryhlding[ ] arr, LibraryHlding h) { arr[17] = h; LibraryHlding Bk CD // il slit cliente Bk[] bks = ; LibraryHlding thewall = new CD("Pink Flyd", replace17(bks, thewall); Bk b = bks[17]; // cntiene un CD b.getchapters( ); // prblema!! "The Wall", ); 34

35 Le scelte di Java Il Ap dinamic è un swap di quell staac vilat nel cas di Bk b La scelta di Java gni array cnsce il su Ap dinamic (Bk[ ]) mdificare a (run- Ame) cn un un superap determina ArrayStreExceptin pertant replace17 slleva una eccezine Every Java array- update includes run-,me check ü (dalla specifica della JVM) Mrale: fate awenzine agli array in Java 35

36 T gd t be true: type erasure TuT i Api generici sn trasfrmaa in Object nel prcess di cmpilazine mav: backward- cmpaability cn il cdice vecchi mrale: a runame, tuwe le istanziazini generiche hann l stess Ap List<String> lst1 = new ArrayList<String>( ); List<Integer> lst2 = new ArrayList<Integer>( ); lst1.getclass( ) == lst2.getclass( ) // true 36

37 Generici e casang List<?> lg = new ArrayList<String>( ); // k List<String> ls = (List<String>) lg; // warning Dalla dcumentazine Java: Cmpiler gives an unchecked warning, since this is smething the run- Ame system will nt check fr yu Prblema public static <T> T badcast(t t, Object ){ return (T) ; // unchecked warning 37

38 equals class Nde<E> public blean equals(object bj) {... if (!(bj instancef Nde<E>)) { return false; Nde<E> n = (Nde<E>) bj; return this.data( ).equals(n.data( )); Erasure: Ap dell argment nn esiste a runame 38

39 equals class Nde<E> public blean equals(object bj) {... if (!(bj instancef Nde<?>)) { return false; Nde<E> n = (Nde<E>) bj; return this.data( ).equals(n.data( )); Erasure: a run Ame nn si sa csa sia E 39

40 Tips (da stackverflw) Start by wriang a cncrete instanaaan get it crrect (tesang, reasning, etc.) cnsider wriang a secnd cncrete versin Generalize it by adding type parameters think abut which types are the same r different the cmpiler will help yu find errrs 40

41 Java Generics (JG) Il cmpilatre verifica l ualizz crrew dei generici I parametri di Ap sn eliminaa nel prcess di cmpilazine e il class file risultante dalla cmpilazine è un nrmale class file senza plifrmism parametric

42 Esempi class Vectr<T> { T[] v; int sz; Vectr() { v = new T[15]; sz = 0; <U implements Cmparer<T>> vid srt(u c) { c.cmpare(v[i], v[j]); Vectr<Buttn> v; v.addelement(new Buttn()); Buttn b = v.elementat(0); class Vectr { Object[] v; int sz; Vectr() { v = new Object[15]; sz = 0; vid srt(cmparer c) { c.cmpare(v[i], v[j]); Vectr v; v.addelement(new Buttn()); Buttn b = (Buttn)b.elementAt(0);

43 Cnsiderazini JG aiutan a miglirare il plimrfism della sluzine Limite principale: il Ap effetv è pers a runame a causa della type erasure TuWe le istanziazini sn idenaficate Esistn altre implementazini dei generici per Java

44 Generics e Java JG/Pizza System Bracha, Odersky, Feature Stutamire, Wadler Parameterized types! + bunds NextGen Cartwright, Steele! + bunds PlyJ Bank, Liskv, Myers! + cnstraints Agesen, Freund, Mitchell! + bunds Generic CLR Kennedy, Syme! + bunds Plymrphic methds!! " "! Type checking at pint f definitin!!! "! Nn-reference instantiatins " "!!! Exact run-time types "!?!! Plymrphic virtual methds "! " "! Type parameter variance "! " " "

45 Una an8cipazine di prgrammazine avanzata

46 Generic C# Kennedy and Syme have extended CLR t supprt parametric types (the same prpsal has been made fr PlyJ by Cartwright and Steele) The verifier, JIT and lader have been changed When the prgram needs an instanaaan f a generic type the lader generates the apprpriate type The JIT can share implementaan f reference instanaaans (Stack<String> has essenaally the same cde f Stack<Object>)

47 Generic C# cmpiler GC# cmpiler implements a JG like ntaan fr parametric types Bunds are the same as in JG NO type- inference n generic methds: the type must be specified in the call Exact runame types are granted by CLR s virtual generic methds are allwed All type cnstructrs can be parameterized: struct, classes, interfaces and delegates

48 Esempi using System; namespace n { public class F<T> { T[] v; F() { v = new T[15]; public static vid Main(string[] args) { F<string> f = new F<string>(); f.v[0] = "Hell"; string h = f.v[0]; Cnsle.Write(h);.field private!0[] v.methd private hidebysig specialname rtspecialname instance vid.ctr() cil managed {.maxstack 2 ldarg.0 call instance vid [mscrlib]system.object::.c tr() ldarg.0 ldc.i4.s 15 newarr!0 stfld!0[] class n.f<! 0>::v ret // end f methd F::.ctr

AA Java generics

AA Java generics AA 2016-2017 13. Java generics 1 Java Interface e astrazine interface ListOfNumbers { blean add(number elt); Number get(int index); interface ListOfIntegers { blean add(integer elt); Integer get(int index);

Dettagli

14. Java generics. Java Interface e astrazione. CSE 331 Au AA

14. Java generics. Java Interface e astrazione. CSE 331 Au AA AA 2014-2015 14. Java generics 1 Java Interface e astrazione interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int

Dettagli

Java generics PR

Java generics PR Java generics 1 Java: Interface e astrazione interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int index); e ListOfStrings

Dettagli

JAVA GENERICS. Java Interface e astrazione. CSE 331 Au

JAVA GENERICS. Java Interface e astrazione. CSE 331 Au JAVA GENERICS 1 Java Interface e astrazione interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int index); e ListOfStrings

Dettagli

PROGRAMMAZIONE Java Generics

PROGRAMMAZIONE Java Generics PROGRAMMAZIONE 2 13. Java Generics 1 Java Interface e astrazione interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int

Dettagli

Java generics PR

Java generics PR Java generics 1 Java: Interface e astrazione interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int index); e ListOfStrings

Dettagli

Java generics PR

Java generics PR Java generics 1 Java: Interface e astrazione interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int index); e ListOfStrings

Dettagli

JAVA GENERICS. Verso i (pi generici in Java: un esempio

JAVA GENERICS. Verso i (pi generici in Java: un esempio JAVA GENERICS 1 Verso i (pi generici in Java: un esempio interface ListOfNumbers { boolean add(number elt); Number get(int index); interface ListOfIntegers { boolean add(integer elt); Integer get(int index);

Dettagli

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione 1 Conoscere l uso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali classi di Collection usare in casi specifici Conoscere

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

Cosa sono i Generics?

Cosa sono i Generics? Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 13 - Generics in Java 1 Cosa

Dettagli

A. Ferrari. collezioni. Java. Alberto Ferrari Informatica

A. Ferrari. collezioni. Java. Alberto Ferrari Informatica cllezini Java Albert Ferrari Infrmatica le cllezini di ggetti una cllezine può memrizzare un numer arbitrari di ggetti il numer di elementi di una cllezine è variabile: è pssibile inserire nuvi ggetti

Dettagli

Generics in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Generics in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Generics in Java 1 Cosa sono i Generics?

Dettagli

Cosa sono i Generics?

Cosa sono i Generics? Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2008-2009 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 22 - Generics in Java 1 Cosa

Dettagli

Programmazione. ( a.k.a. Generics )

Programmazione. ( a.k.a. Generics ) Programmazione Parametrica ( a.k.a. Generics ) Programmazione parametrica: introduzione Generics e relationi di sottotipo wildcards generics e vincoli Implementazione di classi e metodi parametrici Supporto

Dettagli

Programmazione Parametrica ( a.k.a. Generics )

Programmazione Parametrica ( a.k.a. Generics ) Programmazione Parametrica ( a.k.a. Generics ) Programmazione parametrica: introduzione Generics e relationi di sottotipo wildcards generics e vincoli Implementazione di classi e metodi parametrici Supporto

Dettagli

Cosa vedremo. Lezione 4. Dati. Tipo di dato. Tipo di dato. I Dati: Gli oggetti che conosce il computer

Cosa vedremo. Lezione 4. Dati. Tipo di dato. Tipo di dato. I Dati: Gli oggetti che conosce il computer Csa vedrem Lezine 4 Dati ed istruzini di base I Dati: Gli ggetti che cnsce il cmputer Le istruzini: Le azini che cnsce il cmputer Dati ggetti cn cui si lavra Il cmputer cnsce sl alcuni tipi di dat ritmetici

Dettagli

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2

Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 Linguaggi di programmazione II AA 2010/2011 Esercitazione 2 1) Scrivere l'output del seguente programma Java public class Bean private String str; Bean(String str ) this.str = str; public String tostring()

Dettagli

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella)

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella) , mappe e iteratori (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

Dettagli

Cenni su programmazione con tipi generici (generics)

Cenni su programmazione con tipi generici (generics) Cenni su programmazione con tipi generici (generics) Tipi generici (generics) Programmazione generica: Creazione di costrutti che possono essere utilizzati con tipi di dati diversi Es. ArrayList,

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli

Dettagli

Solo due operatori aritmetici possono essere applicati alle variabili di tipo puntatore: somma e sottrazione.

Solo due operatori aritmetici possono essere applicati alle variabili di tipo puntatore: somma e sottrazione. L aritmetica dei puntatri Sl due peratri aritmetici pssn essere applicati alle variabili di tip puntatre: smma e sttrazine. int *p1,*p2; int vect[10]; p1 = & vect[0]; // p1 fa riferiment al prim element

Dettagli

Implementare un'interfaccia

Implementare un'interfaccia Le interfacce Un metodo astratto è un metodo senza corpo, con un ";" dopo l'intestazione. Una interfaccia (interface) in Java ha una struttura simile a una classe, ma può contenere SOLO costanti e metodi

Dettagli

JAVA GENERICS. Angelo Di Iorio Università di Bologna

JAVA GENERICS. Angelo Di Iorio Università di Bologna JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal

Dettagli

Generics. L9 Linguaggi Progr.II Unina 2

Generics. L9 Linguaggi Progr.II Unina 2 Classi parametriche Generics Introdotti con JAVA 5 (2004), anche se si tratta di una delle prime specifiche di java (1999) Generic Programming > scrivere codice che può essere riutilizzato per oggetti

Dettagli

A review of some Java basics. Java pass-by-value and List<> references

A review of some Java basics. Java pass-by-value and List<> references A review of some Java basics Java pass-by-value and List references Java is always pass-by-value Java is always pass-by-value. Unfortunately, they decided to call the location of an object a reference.

Dettagli

Map<K,V> ESERCITAZIONE. Dalla documentazione Java 02/04/15

Map<K,V> ESERCITAZIONE. Dalla documentazione Java 02/04/15 ESERCITAZIONE Map Dalla documentazione Java o public interface Map o An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value. o h-ps://docs.oracle.com/javase/8/docs/api/java/

Dettagli

Polimorfismo per Genericità in Java

Polimorfismo per Genericità in Java Polimorfismo per Genericità in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Polimorfismo Polimorfismo Ad-Hoc: Overloading Un metodo può essere sovraccaricato per manifestare

Dettagli

ArrayList. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

ArrayList. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni ArrayList Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni ArrayList Sotto diversi aspetti un ArrayList può essere considerato come un array migliore. I Miglioramenti sono

Dettagli

Polimorfismo. Astrazioni Polimorfe e Tipi Generici. Esempio: Ricerca sequenziale. Polimorfismo

Polimorfismo. Astrazioni Polimorfe e Tipi Generici. Esempio: Ricerca sequenziale. Polimorfismo Polimorfismo Astrazioni Polimorfe e Tipi Generici Dal Greco molte forme Una variabile polimorfa può riferirsi a oggetti di classi diverse Un metodo polimorfo può avere parametri di tipi diversi Un tipo

Dettagli

Astrazioni Polimorfe e Tipi Generici

Astrazioni Polimorfe e Tipi Generici Astrazioni Polimorfe e Tipi Generici Polimorfismo Dal Greco molte forme Una variabile polimorfa può riferirsi a oggetti di classi diverse Un metodo polimorfo può avere parametri di tipi diversi Un tipo

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

Implementazione di un Server MultiThread. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A

Implementazione di un Server MultiThread. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A Implementazine di un Server MultiThread Crs di laurea in Infrmatica Labratri di Reti di Calclatri A.A. 2013-2014 Simne Bassis bassis@di.unimi.it Un server nn basta Mlt spess, quand abbiam a che fare cn

Dettagli

Java Generics. Sunto di quanto letto nel libro Java Generics and Collections di Maurice Naftalin & Philip Wadler O'REILLY

Java Generics. Sunto di quanto letto nel libro Java Generics and Collections di Maurice Naftalin & Philip Wadler O'REILLY Java Generics Sunto di quanto letto nel libro Java Generics and Collections di Maurice Naftalin & Philip Wadler O'REILLY Le Novità I GENERICI sono (forse) la modifica più corposa fra quelle inserite nella

Dettagli

Java vs Ocaml. Una prima analisi

Java vs Ocaml. Una prima analisi Java vs Ocaml Una prima analisi Alcune cara6eris7che di Java richiedono una conoscenza de6agliata delle librerie Sistemi di supporto forniscono mol7 strumen7 per programmare con Java (Ecplise è un esempio

Dettagli

IToolS AT commands server. Version 3.3 12/11/2012

IToolS AT commands server. Version 3.3 12/11/2012 ITlS AT cmmands server 1 Smmari Descrizine... 3 Funzinament... 3 Esempi... 6 2 Descrizine Il cmpnente ITlS AtServer presente nel namespace ITlS.Cmpnents.Netwrk.Mdem cnsente di inviare SMS ed email attravers

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.

Dettagli

Richiami Java e Arrays

Richiami Java e Arrays Richiami Java e Arrays concetti base G.T. 1 casting G.T. 1.3.3 e 2.5 uso array G.T. 3.1 lista semplice G.T. 3.2 1 Concetti base Oggetto istanza (di una classe) classe (tipo di un oggetto) variabili di

Dettagli

Uguaglianza e Identità. (no, non avete sbagliato corso )

Uguaglianza e Identità. (no, non avete sbagliato corso ) 1 Uguaglianza e Identità (no, non avete sbagliato corso ) Fondamenti di Java Che vuol dire "uguaglianza"? Che vuol dire "Identità"? Che differenza c è? Uguaglianza public class Test { public static void

Dettagli

SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. TIPI DI DATI ASTRATTI. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as.

SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. TIPI DI DATI ASTRATTI. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as. SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as. Confronto tra oggetti: Equals(). IComparable. IComparer. TIPI DI DATI ASTRATTI

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

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5 Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare

Dettagli

Dispensa 3 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN SCIENZE E TECNOLOGIE INFORMATICHE CESENA. Laboratorio

Dispensa 3 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN SCIENZE E TECNOLOGIE INFORMATICHE CESENA. Laboratorio CORSO DI LAUREA IN SCIENZE E TECNOLOGIE INFORMATICHE CESENA CORSO DI PROGRAMMAZIONE A.A. 2013-14 Dispensa 3 Labratri Dtt. Mirk Ravaili e-mail: mirk.ravaili@unib.it http://www.prgrammazine.inf Crs di Prgrammazine

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

Conversione di nomi e indirizzi. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A Simone Bassis

Conversione di nomi e indirizzi. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A Simone Bassis Cnversine di nmi e indirizzi Crs di laurea in Infrmatica Labratri di Reti di Calclatri A.A. 2014-2015 Simne Bassis bassis@di.unimi.it Indirizzi Java mette a dispsizine delle classi appsite per cntenere

Dettagli

Implementazione di un Server Iterativo. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A

Implementazione di un Server Iterativo. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A Implementazine di un Server Iterativ Crs di laurea in Infrmatica Labratri di Reti di Calclatri A.A. 2014-2015 Simne Bassis bassis@di.unimi.it Labratri di Reti di Calclatri (Infrmatica) - A.A. 2014-2015

Dettagli

Implementazione di un Server MultiThread. Corso di laurea in Comunicazione Digitale Laboratorio di sistemi e reti A.A

Implementazione di un Server MultiThread. Corso di laurea in Comunicazione Digitale Laboratorio di sistemi e reti A.A Implementazine di un Server MultiThread Crs di laurea in Cmunicazine Digitale Labratri di sistemi e reti A.A. 2010-2011 Simne Bassis bassis@dsi.unimi.it Un server nn basta Mlt spess, quand abbiam a che

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

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

PROGRAMMING BY CONTRACT

PROGRAMMING BY CONTRACT PROGRAMMING BY CONTRACT Cosa vogliamo ottenere Implementare il sistema giusto validation Implementare il sistema correttamentre verification PR2 affronta il secondo aspetto: come creare del software che

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Programmazione polimorfa Immaginiamo di voler creare una classe Stack. Il funzionamento di uno stack può essere definito indipendentemente

Dettagli

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61 Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli

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

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

Programmazione Parametrica ( a.k.a. Generics )

Programmazione Parametrica ( a.k.a. Generics ) Programmazione Parametrica ( a.k.a. Generics ) Programmazione parametrica: introduzione Generics e relationi di sottotipo wildcards generics e vincoli Implementazione di classi e metodi parametrici Supporto

Dettagli

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà

Ereditarietà. Ereditarietà. Ereditarietà. Ereditarietà L ereditarietà è il meccanismo attraverso cui viene implementata la relazione di specializzazione (is-a). L ereditarietà è il meccanismo attraverso cui una classe (derivata) eredita da un altra classe

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

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale OOP: Strutture Dati e Classi Notevoli Prof. Stefano Mariani Dott. Alket Cecaj Indice Il framework Collections ArrayList HashMap

Dettagli

Gerarchie e polimorfismo: liste

Gerarchie e polimorfismo: liste Gerarchie e polimorfismo: liste 1 Generalizzare le liste di interi List lista di oggetti non modificabile vorremo poi definire un sottotipo versione ordinata 2 List classe astratta usate i sottotipi per

Dettagli

PROGRAMMING BY CONTRACT

PROGRAMMING BY CONTRACT PROGRAMMING BY CONTRACT Cosa vogliamo ottenere Implementare il sistema giusto validation Implementare il sistema correttamentre verification PR2 affronta il secondo aspetto: come creare del software che

Dettagli

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio

A.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà

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

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Collezioni di oggetti (in Java) Michele Tomaiuolo Framework Framework

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

UML: Aggregazione. class A { int s; public void sets(int){ }; public int gets() { }; class B {A ob; public void usea() { }; }

UML: Aggregazione. class A { int s; public void sets(int){ }; public int gets() { }; class B {A ob; public void usea() { }; } UML: Aggregazione class A { int s; public void sets(int){ ; public int gets() { ; class B {A ob; public void usea() { ; Aggregation - Composition Use aggregation (has-a) when the lifecycle of the partecipating

Dettagli

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA

Dettagli

Stringhe. Esercizio 1 [5 punti] Esercizio 2 [7 punti] public static boolean valida(string s) public static boolean isdigit(char ch)

Stringhe. Esercizio 1 [5 punti] Esercizio 2 [7 punti] public static boolean valida(string s) public static boolean isdigit(char ch) Programmazione per Bioinformatica Anno Accademico 2013/2014 Prova di Esame del 20 Giugno 2014 tempo a disposizione: 3 ore consegnare solo la bella Stringhe Esercizio 1 [5 punti] Si scriva un metodo public

Dettagli

Java thread, concorrenza

Java thread, concorrenza Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà

Dettagli

Introduzione a Java. Giovanni Pardini. Dipartimento di Informatica Università di Pisa. 4 Java. Sommario. Iteratori.

Introduzione a Java. Giovanni Pardini. Dipartimento di Informatica Università di Pisa. 4 Java. Sommario. Iteratori. Introduzione a Java 4 Giovanni Pardini pardinig@di.unipi.it Dipartimento di Informatica Università di Pisa 13 dicembre 2009 1 2 3 4 1 2 3 4 Un iteratore permette di iterare, in modo astratto, sugli elementi

Dettagli

Programmazione. preparazione allo scritto. Informatica / Comunicazione Digitale 19 gennaio 2016

Programmazione. preparazione allo scritto. Informatica / Comunicazione Digitale 19 gennaio 2016 Programmazione preparazione allo scritto Informatica / Comunicazione Digitale 19 gennaio 2016 1. (1) Scrivete il metodo statico public static boolean compare( ArrayList X, String s ) il quale restituisce

Dettagli

Esercitazione di lunedì - TUTTE LE MATRICOLE -

Esercitazione di lunedì - TUTTE LE MATRICOLE - 1 Esercitazione di lunedì - TUTTE LE MATRICOLE - 2 Pre-esercitazione - Prova a fare il primo esercizio guidato in modo da riprendere le fila del discorso fatto a lezione su come strutturare un progetto.

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

PROGRAMMAZIONE 2 4. Java: un modello operazionale

PROGRAMMAZIONE 2 4. Java: un modello operazionale PROGRAMMAZIONE 2 4. Java: un modello operazionale PR2 2018-2019 1 Abstract Stack Machine Abstract Stack Machine: modello computazionale per Java che permette di descrivere la nozione di stato modificabile

Dettagli

MACCHINE ASTRATTE, LINGUAGGI, INTERPRETAZIONE, COMPILAZIONE. von Neumann Architecture 1-2

MACCHINE ASTRATTE, LINGUAGGI, INTERPRETAZIONE, COMPILAZIONE. von Neumann Architecture 1-2 MACCHINE ASTRATTE, LINGUAGGI, INTERPRETAZIONE, COMPILAZIONE 1 vn Neumann Architecture 1-2 1 vn Neumann Architecture! Fetch- execute- cycle initialize the prgram cunter repeat frever fetch the instructin

Dettagli

La Pila in Java - 1. package strutture; public class Pila { int size; int defaultgrowthsize; int marker; int contenuto[];

La Pila in Java - 1. package strutture; public class Pila { int size; int defaultgrowthsize; int marker; int contenuto[]; La Pila in Java - 1 package strutture; public class Pila { int size; int defaultgrowthsize; int marker; int contenuto[]; Pila(int initialsize) { size=initialsize; defaultgrowthsize=initialsize; marker=0;

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

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

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 III Parte B -Progettazione e Algoritmi

INFORMATICA III Parte B -Progettazione e Algoritmi INFORMATICA III Parte B -Progettazione e Algoritmi Implementazione di codice algoritmico in Java Patrizia Scandurra patrizia.scandurra@unibg.it Università degli Studi di Bergamo a.a. 2010-11 Stessa interfaccia,

Dettagli

Programmazione ad Oggetti. Java Parte II

Programmazione ad Oggetti. Java Parte II Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una

Dettagli

ADT albero binario completo

ADT albero binario completo ADT albero binario completo Un albero binario completo è un albero binario in cui ogni livello, fino al penultimo, è completamente riempito. L'ultimo livello è riempito da sinistra a destra a 1 nodo b

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 Classi interne

Dettagli

Corso di Algoritmi e Strutture Dati con Laboratorio. The JCF(continua): L interfaccia Map

Corso di Algoritmi e Strutture Dati con Laboratorio. The JCF(continua): L interfaccia Map Corso di Algoritmi e Strutture Dati con Laboratorio The JCF(continua): L interfaccia Map Unamappaè unaraccolta (oggetto che contiene elementi: es: array, oggetto di tipo Collection) in cui ogni elemento

Dettagli

PROGRAMMA DIDATTICO CONSUNTIVO CLASSE 3 A I. Docente/i. Disciplina. Programma svolto: Unità di Lavoro 1: Introduzione alla programmazione

PROGRAMMA DIDATTICO CONSUNTIVO CLASSE 3 A I. Docente/i. Disciplina. Programma svolto: Unità di Lavoro 1: Introduzione alla programmazione Ann Sclastic 2018/2019. PROGRAMMA DIDATTICO CONSUNTIVO CLASSE 3 A I Dcente/i _R. TANTALO / A. BILEDDO Disciplina INFORMATICA / LABORATORIO Prgramma svlt: Unità di Lavr 1: Intrduzine alla prgrammazine Trimestre

Dettagli

PROGRAMMAZIONE 2 4. Un modello operazionale per Java

PROGRAMMAZIONE 2 4. Un modello operazionale per Java PROGRAMMAZIONE 2 4. Un modello operazionale per Java PR2 2017-2018 1 Liste in Java (à la OCaML) class Cons implements StringList { private String head; private StringList tail; public Cons (String h, StringList

Dettagli

Tecnologie e applicazioni web TypeScript

Tecnologie e applicazioni web TypeScript Tecnologie e applicazioni web TypeScript Filippo Bergamasco ( filippo.bergamasco@unive.it) http://www.dais.unive.it/~bergamasco/ DAIS - Università Ca Foscari di Venezia Anno accademico: 2017/2018 What

Dettagli

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo.

Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo. Facade 73 10. Facade (GoF pag. 185) 10.1. Descrizione Fornisce una interfaccia unificata per un insieme di interfacce di un sottosistema, rendendo più facile l uso di quest ultimo. 10.2. Esempio Un applicativo

Dettagli

Classi Anonime In Java. Java. Espressioni Lambda. Implementazione Interfaccia

Classi Anonime In Java. Java. Espressioni Lambda. Implementazione Interfaccia Java I nuovi paradigmi e linguaggi tendono a semplificare il lavoro del programmatore, nascondendo dentro le librerie (o i costrutti del linguaggio) parte della programmazione precedentemente necessaria

Dettagli

approfondimento Lezione 4. Scomposizione canonica di Kalman F. Previdi - Controlli Automatici - Lez. 4 1

approfondimento Lezione 4. Scomposizione canonica di Kalman F. Previdi - Controlli Automatici - Lez. 4 1 Lezine. Scmpsizine cannica di Kalman F. Previdi - Cntrlli utmatici - Lez. Schema della lezine. Intrduzine alle scmpsizini canniche. Scmpsizine di raggiungibilità. Scmpsizine di sservabilità. Scmpsizine

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 10 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 27 Marzo 2007 (2) Features richieste al

Dettagli

Java Virtual Machine (JVM)

Java Virtual Machine (JVM) Java Virtual Machine (JVM) JVM: una visione di insieme JVM: interprete del bytecode 1 Stru;ura Ogni istanza della JVM e cara;erizzata Area per memorizzare le tabelle dei metodi Heap Un insieme di stack

Dettagli

Istruzioni. Il codice Java delle domande non mostra gli import, che si assumono essere correttamente presenti.

Istruzioni. Il codice Java delle domande non mostra gli import, che si assumono essere correttamente presenti. Istruzioni Staccare questo foglio dal resto del blocchetto, ed utilizzarlo per segnare le risposte (sul retro di questa pagina). Segnare SUBITO nome, cognome e numero di matricola negli appositi spazi.

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 10 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 14 Aprile 2008 Object Oriented Programming

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 26 novembre 2008 Considerate le seguenti definizioni di classi e interfacce in Java: class P {public static void print(string s){system.out.println(s);

Dettagli

Java (J2SE) 1.5 (5.0)

Java (J2SE) 1.5 (5.0) Java (J2SE) 1.5 (5.0) Motivi per le modifiche The new language features all have one thing in common: they take some common idiom and provide linguistic support for it. In other words, they shift the responsibility

Dettagli

E21 Esercizi sulle collezioni in Java

E21 Esercizi sulle collezioni in Java E21 Esercizi sulle collezioni in Java Esercizio 1. Sia data una classe Contatto le cui istanze rappresentano contatti telefonici. Ogni contatto ha un nome, un cognome e un numero telefonico (tutti di tipo

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti 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

Dettagli

Programmazione Parametrica ( a.k.a. Generics )

Programmazione Parametrica ( a.k.a. Generics ) Programmazione Parametrica ( a.k.a. Generics ) Introduzione ai meccanismi e concetti della programmazione parametrica Generics e relationi di sottotipo wildcards generics e vincoli Implemendaizone di classi

Dettagli

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Programmazione in Java (I modulo) Lezione 20: Ereditarietà Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi

Dettagli