AA Java generics
|
|
- Carla Natale
- 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); 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
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?
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
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:
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
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
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()
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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à.
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
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
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
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à
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)
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.
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
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
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à
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Futures Esempi di codice
:Future[T] :T Futures val x = future { someexpensivecomputation() val y = future { someotherexpensivecomputation() val z = for (a
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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 ;
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
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
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)
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
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,
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
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à
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
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
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
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
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
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
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