AA Java generics
|
|
- Timoteo Federico Fantini
- 6 anni fa
- Visualizzazioni
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 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);
Dettagli14. 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
DettagliJava 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
DettagliJAVA 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
DettagliPROGRAMMAZIONE 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
DettagliJava 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
DettagliJava 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
DettagliJAVA 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);
DettagliConoscere 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
DettagliIl 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:
DettagliCosa 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
DettagliA. 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
DettagliGenerics 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?
DettagliCosa 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
DettagliProgrammazione. ( 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
DettagliProgrammazione 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
DettagliCosa 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
DettagliLinguaggi 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()
DettagliCollezioni, 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
DettagliCenni 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,
DettagliConcetti 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
DettagliSolo 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
DettagliImplementare 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
DettagliJAVA 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
DettagliGenerics. 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
DettagliA 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.
DettagliMap<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/
DettagliPolimorfismo 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
DettagliArrayList. 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
DettagliPolimorfismo. 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
DettagliAstrazioni 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
DettagliCollezioni. (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
DettagliImplementazione 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
DettagliJava 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
DettagliJava 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
DettagliIToolS 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
DettagliEsempio 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.
DettagliRichiami 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
DettagliUguaglianza 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
DettagliSOMMARIO 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
Dettagli18 - 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
DettagliRicerca 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
DettagliDispensa 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
DettagliEsempio 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
DettagliConversione 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
DettagliImplementazione 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
DettagliImplementazione 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
DettagliGenerics & 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
Dettagli19 - 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
DettagliPROGRAMMING 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
DettagliProgrammazione 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
DettagliCapitolo 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
DettagliEsempi 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
DettagliIntroduzione 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à.
DettagliProgrammazione 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
DettagliEreditarietà. 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
DettagliTesto 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
DettagliFondamenti 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
DettagliGerarchie 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
DettagliPROGRAMMING 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
DettagliA.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à
DettagliOCA 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
DettagliAgent 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
DettagliEsempio 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
DettagliUML: 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
DettagliProgrammazione 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
DettagliStringhe. 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
DettagliJava 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à
DettagliIntroduzione 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
DettagliProgrammazione. 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
DettagliEsercitazione 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.
DettagliBank. 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)
DettagliPROGRAMMAZIONE 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
DettagliMACCHINE 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
DettagliLa 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;
DettagliMetodi 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
DettagliPolimorfismo 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
DettagliOCA 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
DettagliINFORMATICA 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,
DettagliProgrammazione 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
DettagliADT 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
DettagliScope 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
DettagliCorso 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
DettagliPROGRAMMA 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
DettagliPROGRAMMAZIONE 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
DettagliTecnologie 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
DettagliFornisce 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
DettagliClassi 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
Dettagliapprofondimento 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
DettagliCorso 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
DettagliJava 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
DettagliIstruzioni. 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.
DettagliCorso 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
DettagliUtilizza 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
DettagliEsonero 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);
DettagliJava (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
DettagliE21 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
Dettagli24 - 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
DettagliProgrammazione 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
DettagliProgrammazione 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