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); Usiam I,pi!!! List<Integer> List<Number> List<String> List<List<String>> 2

3 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> 3

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

5 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> 5

6 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 6

7 Visine effesva 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 svap del limite superire della gerarchia 7

8 Usiam le variabili di Ap Si pssn effevuare tuve le perazini cmpaabili cn il limite superire della gerarchia cncevualmente 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 8

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

10 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); 10

11 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; Dichiarare static <T> i vincli sui Api T chse(list<t> lst) { int i = // randm number < lst.size return lst.get(i); 11

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

13 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; 13

14 Generici e la nzine di svap Number Integer List<Number>? List<Integer> Integer è un svap di Number List<Integer> è un svap di List<Number>? 14

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

16 Esempi (da Java) Tipi e svapi Integer è un svap di Number ArrayList<E> è un svap di List<E> List<E> è un svap di CllecAn<E> Ma List<Integer> nn è un svap di List<Number> 16

17 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> 17

18 Una discussine (per capire anche la ricerca nel sevre) 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 svap cvariante sarebbe crreva List<Integer> svap di List<Number> Sfrtunatamente Java nn adva questa sluzine 18

19 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 svap cntravariante sarebbe altrevant crreva List<Number> è svap di List<Integer> Ma Java... 19

20 Altri aspes List<Integer> e List<Number> nn sn crrelaa dalla nzine di svap TuVavia, in diversi casi la nzine di svap sui generici funzina cme un se l aspeva anche in Java Esempi: assumiam che LargeBag extends Bag, allra LargeBag<Integer> è un svap di Bag<Integer> LargeBag<Number> è un svap di Bag<Number> LargeBag<String> è un svap di Bag<String> 20

21 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 permeve di avere implementazini crreve 21

22 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 restrisv un parametr avuale di Ap List<E> nn sarebbe permess, e ciò è spiacevle 22

23 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 restrisv il parametr avuale 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 23

24 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 avuale di Ap List<Integer> per Set<Number> addall nn può vedere nell implementazine il Ap T, sa sl che è un svap di E, e nn può mdificare la cllecan c 24

25 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); 25

26 Wildcard Sintassi delle wildcard? extends Type, svap 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 esavamente una vlta ma nn si cnsce il nme l unica csa che si sa è l unicità del Ap 26

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

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

29 ? 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ù restrisv: List<String> nn va bene Quale è la differenza tra List<F> e List<? extends F> nel secnd cas il Ap annim è un svap scnsciut di F List<? extends Animal> può memrizzare Giraffe ma nn Zebre 29

30 Raw types Cn raw type si indica una classe/interfaccia senza nessun argment di Ap (legacy cde) Vectr<Integer> intvec = new Vectr<Integer>(); Vectr rawvec = new Vectr(); // OK Vectr<String> stringvec = new Vectr<String>(); Vectr rawvec = stringvec; // OK Vectr rawvec = new Vectr(); // rawvectr is a raw type f Vectr<T> Vectr<Integer> intvectr = rawvectr; // warning: unchecked cnversin 30

31 Inferenza di Ap Inferenza: capacità di cntrllare una invcazine di metd e la dichiarazine di metd assciata al fine di determinare il Ap più specific, in accrd ai vincli di Ap presena, che rende il metd effesvamente invcabile class MyClass<S> { <T> MyClass(T t) {... new MyClass<Integer>("") diamnd ntaan MyClass<Integer> myobject = new MyClass<>("") 31

32 Ancra l inferenza di Ap static <T> List<T> emptylist(); metd in CllecAns List<String> listone = Cllectins.<String>emptyList(); List<String> listone = Cllectins.emptyList(); vid prcessstringlist(list<string> stringlist) {... prcessstringlist(cllectins.<string>emptylist()); prcessstringlist(cllectins.emptylist()); Java 8 inferisce dal Ap del parametr bbligatri In Java 7 32

33 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 svap di Type2, quale è la relazine tra Type1[] e Type2[]?? 33

34 Srpresa! Sappiam che per i generici la nzine di svap è invariante, pertant se Type1 è un svap di Type2, allra Type1[] e Type2[] nn dvrebber essere crrelaa Ma Java è stran, se Type1 è un svap di Type2, allra Type1[] è un svap di Type2[] Java (ma anche C#) ha fav 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) 34

35 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 35

36 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", ); 36

37 Le scelte di Java Il Ap dinamic è un svap 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 avenzine agli array in Java 37

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

39 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 39

40 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 40

41 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 runame nn si sa csa sia E 41

42 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 42

43 Java Generics (JG) Il cmpilatre verifica l ualizz crrev 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

44 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);

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

46 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 "! " " "

47 Una an7cipazine di prgrammazine avanzata

48 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>)

49 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

50 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

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. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 13 - Generics in Java 1 Cosa

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

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

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

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

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

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

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

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

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

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

Conversione di nomi e indirizzi. Corso di laurea in Informatica Laboratorio di Reti di Calcolatori A.A. 2011-2012. Simone Bassis bassis@dsi.unimi.

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

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

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

10 suggerimenti per utilizzare PowerPoint per presentazioni brillanti

10 suggerimenti per utilizzare PowerPoint per presentazioni brillanti 10 suggerimenti per utilizzare PwerPint per presentazini brillanti 1. Prirità dell'biettiv sttlineata da materiale cnvincente Da un cert punt di vista, la facilità di impieg di PwerPint ptrebbe trasfrmarsi

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

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

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

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

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

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

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

Equazioni. Prerequisiti. Definizioni e concetti generali. Incognita Lettera (di solito X) alla quale è possibile sostituire dei valori numerici

Equazioni. Prerequisiti. Definizioni e concetti generali. Incognita Lettera (di solito X) alla quale è possibile sostituire dei valori numerici Scmpsizini plinmiali Calcl del M.C.D. e del m.c.m. tra plinmi P), cn P) plinmi di grad qualsiasi Equazini Prerequisiti Definizini e cncetti generali Incgnita Lettera di slit ) alla quale è pssibile sstituire

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

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

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

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

LABORATORI DI INFORMATICA 1 MANUALE STUDENTE

LABORATORI DI INFORMATICA 1 MANUALE STUDENTE LABORATORI DI INFORMATICA 1 MANUALE STUDENTE Indice 1. Gestine Sessine di lavr 1.1. Lgin al sistema 1.2. Strumenti a dispsizine dell studente 1.3. Chiusura della sessine 2. Cmandi Linux Principali 2.1.

Dettagli

Programmazione generica

Programmazione generica 16 Programmazione generica Obiettivi del capitolo Capire gli obiettivi della programmazione generica Essere in grado di realizzare classi e metodi generici Comprendere il meccanismo di esecuzione di metodi

Dettagli

Generics. L8 Linguaggi prog. II Unina 2

Generics. L8 Linguaggi prog. 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

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

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

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

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

Ingegneria del Software: JDBC. laura.bacci@unipv.it

Ingegneria del Software: JDBC. laura.bacci@unipv.it Ingegneria del Sftware: JDBC laura.bacci@unipv.it Che csa è JDBC Un insieme di API standard per accedere ai database relazinali Separa e nascnde i dettagli dell specific database all applicazine che l

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

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

Protocolli applicativi

Protocolli applicativi Prgrammazine cn le Scket Crs di laurea in Cmunicazine Digitale Labratri di sistemi e reti A.A. 2010-2011 Simne Bassis bassis@dsi.unimi.it Labratri di sistemi e reti (Cmunicazine Digitale) - A.A. 2010-2011

Dettagli

ESAME DI FONDAMENTI DI INFORMATICA T-2 del 27/06/2011 Proff. E. Denti G. Zannoni Tempo a disposizione: 4 ore MAX

ESAME DI FONDAMENTI DI INFORMATICA T-2 del 27/06/2011 Proff. E. Denti G. Zannoni Tempo a disposizione: 4 ore MAX ESAME DI FONDAMENTI DI INFORMATICA T-2 del 27/06/2011 Prff. E. Denti G. Zannni Temp a dispsizine: 4 re MAX NB: il candidat trverà nell archivi ZIP scaricat da Esamix anche il sftware Start Kit NOME PROGETTO

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

Classificazioni dei linguaggi di programmazione

Classificazioni dei linguaggi di programmazione Il Sftware (prgrammi) può essere classificat cme: di sistema di base (Sistema Operativ, cmpilatri,, interpreti 1 ) prgrammi applicativi (editr di test, fgli elettrnici, data base.) linguaggi di prgrammazine

Dettagli

Disequazioni in una incognita

Disequazioni in una incognita Disequazini in una incgnita. Cnsiderazini generali Dai principi di equivalenza delle disequazini segue che: a) quand si trasprta un termine da un membr all'altr si deve cambiarne il segn:. b) quand si

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

PROGETTO TESSERA SANITARIA MANUALE D USO

PROGETTO TESSERA SANITARIA MANUALE D USO PROGETTO TESSERA SANITARIA MANUALE D USO FUNZIONALITA DI INTERROGAZIONE DELLE RICETTE DEMATERIALIZZATE (DM 2 NOV 2011) AD USO ESCLUSIVO DEL PERSONALE DELLE ASL VERSIONE 12.1.2015 Pag. 2 di 15 INDICE 1.

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

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

ACCESSO STABILIMENTO VISITATORI ESTERNI

ACCESSO STABILIMENTO VISITATORI ESTERNI 30/11/2015 Pagina 1 di 7 INDICE REVISIONI REV DATA MODIFICA REDATTA: VERIFICATA: EMESSA: DATORE DI LAVORO: 00 01.12.2014 Prima emissine Cialdni Maletta Ilaria RSPP Alè Giuseppe Cialdni Sante Zandò 01 12.11.2015

Dettagli

AA 2014-2015. 20. Nomi, binding

AA 2014-2015. 20. Nomi, binding AA 2014-2015 20. Nomi, binding 1 Nomi Un nome in un linguaggio di programmazione è esa;amente quello che immaginate o la maggior parte dei nomi sono definia dal programma (gli idenaficatori) o ma anche

Dettagli

LABORATORI DI INFORMATICA 2 MANUALE STUDENTE

LABORATORI DI INFORMATICA 2 MANUALE STUDENTE LABORATORI DI INFORMATICA 2 MANUALE STUDENTE Indice 1. Gestine Sessine di lavr 1.1. Lgin al sistema 1.2. Strumenti a dispsizine dell studente 1.3. Chiusura della sessine 2. Cmandi Linux Principali 2.1.

Dettagli

Corso di Fondamenti di Informatica I

Corso di Fondamenti di Informatica I Corso di Fondamenti di Informatica I Generics in Java Fabio Patrizi, Silvia Bonomi Dipartimento di Ingegneria Informatica, Automatica e Gestionale Facoltà di Ingegneria dell Informazione, Informatica e

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

Java: tipi (im)mutaibili. Metodi equals e clone

Java: tipi (im)mutaibili. Metodi equals e clone Java: tipi (im)mutaibili. Metodi equals e clone Mutabilità Un tipo è mutabile (mutable) se ha dei metodi che possono modificare ilrep, altrimenti è detto immutabile (immutable). della classe! Il metodo

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

Perché i modelli concettuali?

Perché i modelli concettuali? Perché i mdelli cncettuali? Tranne casi banali, passare direttamente dai requisiti all schema lgic della base di dati presenta diverse difficltà. Da dve si parte? Si rischia di perdersi subit nei dettagli

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

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

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

Promemoria per l utilizzo dei servizi di interoperabilità del SIGEC WEB

Promemoria per l utilizzo dei servizi di interoperabilità del SIGEC WEB Prmemria per l utilizz dei servizi di interperabilità del SIGEC WEB 1 Istitut Centrale per il Catalg e la Dcumentazine Smmari Intrduzine... 3 Riferimenti... 3 WebServices espsti dal SIGEC WEB... 4 Servizi

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

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

Abstract: una versione sintetica della tua relazione. Il lavoro di ricerca e progettazione svolto prima di cominciare gli esperimenti.

Abstract: una versione sintetica della tua relazione. Il lavoro di ricerca e progettazione svolto prima di cominciare gli esperimenti. COME SCRIVERE LA RELAZIONE DEL PROGETTO La tua relazine finale deve includere le seguenti sezini: Titl Abstract: una versine sintetica della tua relazine. Indice. Dmanda, variabili e iptesi. Il lavr di

Dettagli

Downloading and Installing Software Socio TIS

Downloading and Installing Software Socio TIS Object: Downloading and Installing Software Socio TIS compiler: L.D. Date Revision Note April 17 th 2013 --- For SO XP; Win 7 / Vista step Operation: Image A1 Open RUN by clicking the Start button, and

Dettagli

Guida per la compilazione on-line delle domande di partecipazione al concorso

Guida per la compilazione on-line delle domande di partecipazione al concorso Cnferiment degli incarichi di funzini didattiche a persnale dell Azienda Ospedaliera Universitaria Federic II Guida per la cmpilazine n-line delle dmande di partecipazine al cncrs Intrduzine La prcedura

Dettagli

Introduzione a.net (2)

Introduzione a.net (2) Introduzione a.net (2) Il linguaggio C# Implementazioni alternative dell'architettura.net: Rotor Mono C#: un nuovo linguaggio C# : CLR = Java : JVM C# è il linguaggio di riferimento per.net Costruito su

Dettagli

Futures Esempi di codice

Futures Esempi di codice :Future[T] :T Futures val x = future { someexpensivecomputation() val y = future { someotherexpensivecomputation() val z = for (a

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

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti

Introduzione C++ Il compilatore. La compilazione in g++ Introduzione a C, C++ e Java. C++ C Java 1977 C 1986 C++ Compilatori Librerie Usare oggetti Introduzione a C, C++ e Java Introduzione C++ Compilatori Librerie Usare oggetti 1977 C 1986 C++ a better C con estensioni agli oggetti oggi uno standard industriale 1994 Java C ++ -- C++ C Java programmazione

Dettagli

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo

Dettagli

Java. Classi Anonime In Java Da Java 1.1 si possono usare classi anonime per implementare interfacce. Espressioni Lambda. Implementazione Interfaccia

Java. Classi Anonime In Java Da Java 1.1 si possono usare classi anonime per implementare interfacce. 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 necessaria Da Java 5, in

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

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A I/O, thread, socket in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A I/O, thread, socket in Java 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 Esercitazione I/O, thread, socket in Java

Dettagli

BASI LINGUAGGIO. Programmazione Web 1

BASI LINGUAGGIO. Programmazione Web 1 BASI LINGUAGGIO Programmazione Web 1 Commen0 Riga singola // This is a comment Riga mul8pla /* This is a sec8on of mul8line comments which will not be interpreted */ Programmazione Web 2 Istruzioni Un

Dettagli

BASI LINGUAGGIO. Programmazione Web 1

BASI LINGUAGGIO. Programmazione Web 1 BASI LINGUAGGIO Programmazione Web 1 Commen0 Riga singola // This is a comment Riga mul8pla /* This is a sec8on of mul8line comments which will not be interpreted */ Programmazione Web 2 Istruzioni Un

Dettagli

Novità relative all assessment tool

Novità relative all assessment tool Nvità relative all assessment tl La dcumentazine e gli strumenti di supprt di Friendly Wrk Space sn sttpsti a cntinui interventi di rielabrazine, aggirnament e perfezinament. Nel 2014 è stata ripetutamente

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array 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 di Laurea

Dettagli

Programmazione Java Avanzata Concetti su Java

Programmazione Java Avanzata Concetti su Java Programmazione Java Avanzata Concetti su Java Ing. Giuseppe D'Aquì Testi di Riferimento Java ( R. Liguori, P. Liguori), O'Reilly Hops Tecniche Nuove (2008) Java Virtual Machine Il codice scritto in Java

Dettagli

Istruzioni per lo Svolgimento della Prova

Istruzioni per lo Svolgimento della Prova Istruzini per l Svlgiment della Prva Ciascun studente effettuerà la prva utilizzand un nme utente assegnat. Il nme utente assegnat sarà turn1 ppure turn2 ppure turn3, a secnda del turn di appartenenza.

Dettagli

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

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

Compute engine generici in RMI

Compute engine generici in RMI Compute engine generici in RMI Esempio: Calcolo del prodotto scalare Un unico server offre il servizio di calcolo del prodotto scalare tra vettori di interi Un client richiede al server il calcolo del

Dettagli

MS VISUAL STUDIO 2008 WINDOWS COMMUNICATION FOUNDATION

MS VISUAL STUDIO 2008 WINDOWS COMMUNICATION FOUNDATION MS VISUAL STUDIO 2008 WINDOWS COMMUNICATION FOUNDATION UN BUON MOTIVO PER [cd. S188] L biettiv del Crs è frnire ai partecipanti la preparazine e le cmpetenze necessarie per cstruire e cnfigurare una sluzine

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

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

RTTI Run-time type identification

RTTI Run-time type identification RTTI Run-time type identification Come determinare il tipo di un oggetto durante l'esecuzione RTTI 1 Ereditarietà Forma Linea Rettangolo Cerchio interface Forma { class Linea implements Forma { void ;

Dettagli

Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti

Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti int sumvector(int *array, int n) { int sum(0); for (int i = 0; i < n; ++i) sum

Dettagli

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria Sapienza - Università di Roma Facoltà di Ingegneria Requisiti Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito

Dettagli

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public: 1 Pila.h versione 6 struct Pila { private: int size; int defaultgrowthsize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialsize) ; Pila(); ~Pila() ; void copy(pila * to)

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

Start S Inizio. Fine X 5. Qualsiasi istruzione

Start S Inizio. Fine X 5. Qualsiasi istruzione lw Chart I lw Chart (detti anche diagrammi di fluss) sn schemi grafici cstituiti da un insieme di simbli standard e varie cndizini che descrivn l svlgiment di un prgramma che, dati certi valri in input,

Dettagli

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Enumerativi Finora abbiamo creato enumerativi

Dettagli

QUESTIONARIO INSEGNANTE

QUESTIONARIO INSEGNANTE QUESTIONARIO INSEGNANTE Gentile insegnante, Le chiediam di esprimere la sua pinine su alcuni aspetti della vita sclastica e sul funzinament della scula nella quale attualmente lavra. Le rispste che darà

Dettagli

Introduzione a Java. Riferimenti

Introduzione a Java. Riferimenti Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia

Dettagli

Regione Calabria Dipartimento n.9 Lavori Pubblici ed Infrastrutture

Regione Calabria Dipartimento n.9 Lavori Pubblici ed Infrastrutture UNIONE EUROPEA REPUBBLICA ITALIANA REGIONE CALABRIA Regine Calabria Dipartiment n.9 Lavri Pubblici ed Infrastrutture Via Crispi 33-88100 CATANZARO SPECIFICHE SIERC: INTEGRAZIONE PROTOCOLLO SIAR POR Calabria

Dettagli

Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static

Programmazione 2 - Marco Ronchetti. Fondamenti di Java. Fac.Scienze Università di Trento. Static 1 Fondamenti di Java Static 2 Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola variabile condivisa

Dettagli

ARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it

ARRAYLIST. Programmazione con Java ArrayList e Generics 2 08/06/2014. Daniela Micucci daniela.micucci@unimib.it Programmazione con Java ArrayList e Generics Daniela Micucci daniela.micucci@unimib.it ARRAYLIST Programmazione con Java ArrayList e Generics 2 1 La classe ArrayList Fa parte delle librerie standard di

Dettagli

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati.

Il problema è trovare un modo nel quale gli eventi dell oggetto di riferimento, siano comunicati a tutti gli altri interessati. Observer 129 19. Observer (GoF pag. 293) 19.1. Descrizione Consente la definizione di associazioni di dipendenza di molti oggetti verso di uno, in modo che se quest ultimo cambia il suo stato, tutti gli

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

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 17 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 14 Maggio 2010 Features richieste

Dettagli