Generics. L8 Linguaggi prog. II Unina 2
|
|
- Rachele Vitale
- 8 anni fa
- Visualizzazioni
Transcript
1 Classi parametriche
2 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 di diverso tipo in maniera sicura. L8 Linguaggi prog. II Unina 2
3 ArrayList Prima di JAVA 5 generic programming era prodotto dall ereditarietà Esempio costruzione di una classe generica ArrayList public class ArrayList { public Object get(int i) {... } public void add(object o) {... }... private Object[] elementdata; } L8 Linguaggi prog. II Unina 3
4 In questo modo però si deve fare il cast per ottenere un oggetto, e non c è nessuno controllo dei tipi di oggetto inseriti nell ArrayList ArrayList files = new ArrayList(); files.add(new File( pippo")); String filename = (String) names.get(0); errore non in compilazione ma in esecuzione! L8 Linguaggi prog. II Unina 4
5 JAVA 5 -> tipi parametrici E possibile specificare con un parametro di tipo l elemento : ArrayList<String> files = new ArrayList<String>(); In questo modo il codice e più leggibile e i conflitti si scoprono a tempo di compilazione. Non c e bisogno di casting per ottenere gli oggetti dell array list String filename = files.get(0); files.add(new File("...")); // errore di // compilazione L8 Linguaggi prog. II Unina 5
6 La programmazione generica, classi parametriche e metodi parametrici Le classi parametriche possono essere utilizzate cosi come sono (come classi container evolute), oppure per usi più evoluti si può utilizzare la programmazione generica con oggetti complessi, utilizzando le wildcard Il nome generics può essere ingannevole in quanto si riferisce in realtà ad una regolamentazione nell uso di tipi generici rispetto le prime implementazioni L8 Linguaggi prog. II Unina 6
7 Classe parametrica Una classe parametrica ha una o più variabili di tipo (racchiuse tra <> ) public class Pair<T> { public Pair() { first = null; second = null; } public Pair(T first, T second) { this.first = first; this.second = second; } public T getfirst() { return first; } public T getsecond() { return second; } public void setfirst(t newvalue) { first = newvalue; } public void setsecond(t newvalue) { second = newvalue; } } private T first; private T second; L8 Linguaggi prog. II Unina 7
8 Utilizzo classi parametriche Le classi parametriche evitano il ricorso del cast: Pair p = new Pair( prima, seconda ); String a = a.getfirst(); Il tipo String si comporta come il parametro di tipo attuale, che sostituisce il parametro di tipo formale, come avviene per le variabili L8 Linguaggi prog. II Unina 8
9 Convezione per i nomi delle variabili di tipo <E> Elementi di collezioni K,V (Key, value), elementi per tabelle T (U,S,...) qualsiasi tipo Analogia con i template del C++ Sintatticamente si deve specificare la parola template, ci sono diverse differenze (es Boost) template <class T1, class T2> struct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() : first(t1()), second(t2()) {} pair(const T1& x, const T2& y) : first(x), second(y) {} template <class U, class V> pair (const pair<u,v> &p) : first(p.first), second(p.second) { } } L8 Linguaggi prog. II Unina 9
10 Metodi parametrici E possibile specificare le variabili di tipo anche per un singolo metodo di una classe class ArrayAlg { public static <T> T getmiddle(t[] a) { return a[a.length / 2]); } } Invocazione String[] names = { "John", "Q.", "Public" }; String middle = ArrayAlg.<String>getMiddle(names); Oppure semplicemente (ok a compilazione e esecuzione) String middle = ArrayAlg.getMiddle(names); I metodi parametrici possono appartenere ad una classe NON parametrica o parametrica L8 Linguaggi prog. II Unina 10
11 Nell'invocazione dei metodi parametrici non è obbligatorio specificare il tipo, il compilatore applica un algoritmo type inference simile a quello dell'assegnazione dei tipi del type system. String[] names = { "John", "Q.", "Public" }; String middle = ArrayAlg.getMiddle(names); In questo caso l'algoritmo type inference è in grado di determinare come tipo più specifico String. L8 Linguaggi prog. II Unina 11
12 Da Java 5 diverse classi di Java sono diventate parametriche. Il codice pregresso generalmente continua a funzionare grazie alla type inference, con messaggi di WARNING L8 Linguaggi prog. II Unina 12
13 ... } Costruttori parametrici Anche i costruttori possono essere parametrici, come un qualsiasi altro metodo public class A<T> { public <U> A(T x, U y) { } L8 Linguaggi prog. II Unina 13
14 Parametri di tipo ristretti Può essere necessario richiedere alcune condizioni sui tipi utilizzabili dai generics. Esempio class ArrayAlg { public static <T> T min(t[] a) { if (a == null a.length == 0) return null; T smallest = a[0]; for (int i = 1; i < a.length; i++) if (smallest.compareto(a[i]) > 0) smallest = a[i]; return smallest; } } Si deve richiedere che il tipo T generico abbia il metodo compareto L8 Linguaggi prog. II Unina 14
15 La soluzione generic è quella di restringere il tipo T alle classi derivate da un interfaccia Comparable (una interfaccia standard col solo metodo compareto) public static <T extends Comparable> T min(t[] a) L interfaccia Comparable è un tipo generico essa stessa. L8 Linguaggi prog. II Unina 15
16 Tipi ristretti Sintassi generica <T extends BoundingType> BoundingType può essere una classe o una interfaccia E possibile richiedere restrizioni multiple T extends Comparable & Serializable (al più una può essere una classe che deve trovarsi però al primo posto) ES L8 Linguaggi prog. II Unina 16
17 JVM e generics LA JVM non gestisce i tipi generici, ma solo classi ordinarie. In presenza di un generic il compilatore rimuove la parametrizzazione (come prima di JAVA5), ed in fase di compilazione effettua automaticamente il casting Il meccanismo del type reference può fallire anche in presenza di una soluzione, oppure puo' fornire la soluzione errata (non è corretto né L8 Linguaggi prog. II Unina 17 completo)
18 Implementazione dei generics e type inference I generics sono implementati con un meccanismo di riscrittura del codice (raw type e type erasure) da parte del compilatore. Il risultato è quello di ottenere delle classi ordinarie. Nella definizione ai tipi generici vengono sostituiti, a tempo di compilazione con i tipi raw, che corrisponde al tipo ristretto se presente, o al tipo object. ESEMPIO Pair L8 Linguaggi prog. II Unina 18
19 public class Pair { public Pair(Object first, Object second) { this.first = first; this.second = second; } public Object getfirst() { return first; } public Object getsecond() { return second; } public void setfirst(object newvalue) { first = newvalue; } public void setsecond(object newvalue) { second = newvalue; } private Object first; private Object second; } L8 Linguaggi prog. II Unina 19
20 Invocazione dei generics Nelle istruzioni di invocazioni dei metodi generici, il compilatore inserisce automaticamente istruzioni di cast in corrispondenza del tipo. Pair<Employee> staff2 =...; Employee employee1 = (employee)staff2.getfirst(); L8 Linguaggi prog. II Unina 20
21 Implementazione metodi generici: conseguenze ESEMPIO INTERVALLO DI DATE class DateInterval extends Pair<Date> { public void setsecond(date second) { if (second.compareto(getfirst()) >= 0) super.setsecond(second); }... } L8 Linguaggi prog. II Unina 21
22 Implementazione dei metodi generici public static <T extends Comparable> T min(t[] a) RAW TYPE public static Comparable min(comparable[] a) Bridge method In alcuni casi la cancellazione del tipo generico ha come conseguenza la creazione di metodi bridge ES L8 Linguaggi prog. II Unina 22
23 class DateInterval extends Pair<Date> { public void setsecond(date second) { if (second.compareto(getfirst()) >= 0) super.setsecond(second); }... } Si richiede ovviamente che la seconda data sia maggiore della prima La cancellazione trasforma la classe DateInterval a: class DateInterval extends Pair // after erasure { public void setsecond(date second) {... }... } Ovviamente esiste anche il metodo setsecond derivato da pair public void setsecond(object newvalue) { second = newvalue; } L8 Linguaggi prog. II Unina 23
24 Cosa accade nella sequenza di istruzioni? DateInterval interval = new DateInterval(...); Pair<Date> pair = interval; // OK--assignment to superclass pair.setsecond(adate); Il compilatore crea automaticamente un bridge method per prevenire le conseguenze del type erasure sui metodi overridden public void setsecond(object second) { setsecond((date) second); } L8 Linguaggi prog. II Unina 24
25 Generic: restrizioni nei tipi Ci sono alcune restrizione nell uso dei generics, dovute principalmente ai problemi di cancellazione TIPI PRIMITIVI Non si possono usare i tipi primitivi in una variabile di tipo: NO pair<double>, MA pair<double> La ragione è la type erasure. La classe pair,dopo la cancellazione del tipo, ha tipo riferimento Object, e non puo ospitare tipi primitivi (in questo caso double). L8 Linguaggi prog. II Unina 25
26 Operatore istanceof (a instanceof Pair<String>) <-> (a instanceof Pair ) Nella JVM il confronto avviene tramite il riferimento non tipato if (a instanceof Pair<T>) T viene ignorato Cast Pair<String> p = (Pair<String>) a; Nel caso di cast il compilatore emette un WARNING can only test that a is a Pair che ricorda che che il cast non include il tipo parametrico, ma solo il raw type. Allo stesso modo il metodo getclass restituisce il tipo raw Pair<String> stringpair =...; Pair<Employee> employeepair =...; if (stringpair.getclass() == employeepair.getclass()) // UGUALI! L8 Linguaggi prog. II Unina 26
27 Eccezioni Non si possono sollevare eccezione ne catturare eccezioni di una generic class, ne avere eccezioni parametriche. public class Problem<T> extends Exception { /* */} ERROR--can't extend Throwable Non si possono usare le variabili di tipo una clausola catch. public static <T extends Throwable> void dowork(class<t> t) { try { do work } catch (T e) // ERROR--can't catch type variable { Logger.global.info(...) } } L8 Linguaggi prog. II Unina 27
28 Si può usare una variabile di tipo che però estende Trowable public static <T extends Throwable> void dowork(t t) throws T /* OK! */ { try { do work } } catch (Throwable realcause) { t.initcause(realcause); throw t; } L8 Linguaggi prog. II Unina 28
29 Array Non si possono dichiarare array di tipi parametrizzati Pair<String>[] table = new Pair<String>(10); // ERRORE Dopo la type erasure, il tipo di table è Pair[], che ovviamente è convertibile in Object[] Object[] objarray = table; Per creare associazioni di tipi parametrizzati si può usare la collection ArrayList: ArrayList<Pair<String>> L8 Linguaggi prog. II Unina 29
30 Istanziare i tipi generici I tipi generici non possono essere istanziati Pair<T> constructor -> public Pair() { first = new T(); second = new T(); } // ERROR La Type erasure cambierebbe T in Object, l errore previene questo meccanismo public <T> T[] minmax(t[] a) { T[] mm = new T[2];... } // ERROR Si costruirebbe così un array di Object Gli oggetti generici possono essere creati con il meccanismo della riflessione (Class.newInstance Array.newInstance). L8 Linguaggi prog. II Unina 30
31 Metodi Static di classi parametriche Non si possono riferire variabili di tipo in metodi statici public class Singleton<T> { public static T getsingleinstance() // ERROR } { if (singleinstance == null) construct new instance of T return singleinstance; } private static T singleinstance; // ERROR Se fosse possibile, si avrebbe un pattern Singleton universale, da istanziare secondo le esigenze (es Singleton<Random> per condividere un generatore di numeri casuali). Con la type erasure si averbbe però solo la classe Singleton, ed un solo membro singleinstance. L8 Linguaggi prog. II Unina 31
32 Conflitti da cancellazione tipi generici La type erasure può introdurre dei conflitti public class ClassP<T> extends ClassNoP { public int method(t value) { }... } Se la classe ClassNoP ha anche essa un method(object o), avremmo int method(string) // da ClassP<T> int method(object) // ereditata da ClassNoP Mentre La type erasure del metodo parametrico int method(t) produce il metodo int method(object) Rimedi: rinominare il method oppure assicurare l'ovveride con la dichiarazione public class ClassP<T> extends ClassNoP <T> L8 Linguaggi prog. II Unina 32
33 Le specifiche di Java sui generics riportano la seguente regola: "To support translation by erasure, we impose the restriction that a class or type variable may not at the same time be a subtype of two interface types which are different parameterizations of the same interface." In questo modo è illegale il costrutto: class Calendar implements Comparable<Calendar> {...} class GregorianCalendar extends Calendar implements Comparable<GregorianCalendar> {...} // ERROR La versione non parametrica è invece legale class Employee implements Comparable {... } class Manager extends Employee implements Comparable {... } L8 Linguaggi prog. II Unina 33
34 Regole di ereditarietà per tipi generici L uso delle classi parametriche non tiene in conto le relazioni che ci possono essere tra le classi istanziate al posto delle variabili di tipo Non c e alcuna relazione tra pair<s> e pair<t> qualunque sia la relazione che c e tra S e T. E una restrizione necessaria per la corretta utilizzazione dei tipi. Con un esempio si può facilmente capire il perché di questa restrizione L8 Linguaggi prog. II Unina 34
35 Il fatto che per i tipi parametrici non valgono le relazioni di sottotipo, porta dei vantaggi pratici nella scrittura dei programmi Esempio Manager[] ma = new Manager[2]; Employee[] ea = ma; //== ok Manager[] è sottotipo di //==Employee[] ea[0] = new Employee(...); //== eccezione a run time! ArrayStoreException L8 Linguaggi prog. II Unina 35
36 Uso dei generics Pair<Manager> managerbuddies = new Pair<Manager>(ceo, cfo); Pair<Employee> employeebuddies = managerbuddies; // NON è possibile, non valgono le relazioni di sottotipo! employeebuddies.setfirst(lowlyemployee); Si ha un errore di compilazione molto più facile da scoprire e correggere L8 Linguaggi prog. II Unina 36
37 Per garantire il funzionamento del codice esistente, si può sempre convertire un tipo parametrico nel tipo raw Esempio Pair<Manager> managerbuddies= new Pair<Manager>(ceo,cfo); Pair rawbuddies = managerbuddies; // OK rawbuddies.setfirst(new String("???")); Si otterrebbe pero' solo un warning a compile time! L8 Linguaggi prog. II Unina 37
38 Le classi generiche possono estendere altre generiche classi, proprio come le classi ordinarie; per esempio la classe ArrayList<T> implementa la interfaccia List<T>. Cosi' un ArrayList<Manager> puo' essere convertita in List<Manager>, mentre non è possibile ArrayList<Manager> ArrayList<Employee> ne List<Employee>. L8 Linguaggi prog. II Unina 38
39 I tipi jolly (wildcard) Per facilitare l applicazione dei generics alle classi che hanno relazione di ereditarietà sono stati introdotti i tipo JOLLY (wildcard) Le limitazioni di tipo vengono adoperate per lo più con i parametri di tipo JOLLY Pair<? extends C> Identifica qualsia classe con tipo generico che eredita da C L8 Linguaggi prog. II Unina 39
40 Esempio Pair<? extends Employee> denota ogni Pair parametrica il cui parametro è una sottoclasse di Employee (es manager), ma non di tipi che non sono in relazione di ereditarietà (come Pair<String>). L8 Linguaggi prog. II Unina 40
41 Consideriamo ad esempio un metodo che stampa una coppia di impiegati public static void printpairemp(pair<employee> p) { Employee first = p.getfirst(); Employee second = p.getsecond(); System.out.println(first.getName() + " e " second.getname()+ "sono una coppia di impiegati."; } L8 Linguaggi prog. II Unina 41
42 IL metodo non è utilizzabile per una coppia di manager a meno che non usare un wildcard type : public static void printpairemp( Pair<? extends Employee> p) Il tipo Pair<Manager> è un sottotipo di Pair<? extends Employee> L8 Linguaggi prog. II Unina 42
43 Riprendiamo l'esempio Pair<Manager> managerbuddies = new Pair<Manager>(ceo,cfo); Pair<? extends Employee> wildcardbuddies = managerbuddies; // ORA è POSSIBILE wildcardbuddies.setfirst(lowlyemployee); // compile-time error (Type error)!!! ES Il compilatore si rifiuta di passare il tipo wildcard come un tipo specifico per prevenire malfuzionamenti. In effetti Pair<? extends Employee> non è convertibile in un tipo specifico. La seconda assegnazione è invece lecita I tipo wildcard permettono di distingure tra l'accesso sicuro ai sotto tipi, ed i modificatori di tipo non sicuri. L8 Linguaggi prog. II Unina 43
44 Parametri Jolly con restrizioni di sotto tipo L8 Linguaggi prog. II Unina 44
45 Parametri jolly con restrizioni di super tipo <? super Manager> Questo parametro jolly è ristretto a tutte le super classi di manager (es Employee, o Person o Object) Motivazione principale: gestire i tipi restituiti dai metodi generici Pair<? super Manager> ha i metodi void set(? super Manager)? super Manager get() In questo modo si introducono dei limiti inferiori di tipi parametrici L8 Linguaggi prog. II Unina 45
46 Il compilatore non conosce il tipo esatto da passare al metodo set, ma può invocarlo in effetti con qualsiasi oggetto cui Manager può essere convertito All'inverso, non c'e' certezza di quale sia il tipo restituito, se non Object Esempio: Supponiamo di avere un array di Manager e di voler costruire una coppia con i manager rispettivamente col bonus più alto e quello più basso, per avere una idea del range dei bonus. L8 Linguaggi prog. II Unina 46
47 public static void minmaxbonus(manager[] a, Pair<? super Manager> result) { if (a == null a.length == 0) return; Manager min = a[0]; Manager max = a[0]; for (int i = 1; i < a.length; i++) { if (min.getbonus() > a[i].getbonus()) min = a[i]; if (max.getbonus() < a[i].getbonus()) max = a[i]; } result.setfirst(min); result.setsecond(max); } L8 Linguaggi prog. II Unina 47
48 L8 Linguaggi prog. II Unina 48
49 Da un punto di vista intuitivo, i tipi JOLLY con limitazioni di super classe consentono di restituire un oggetto generico, i tipi JOLLY con restrizioni di sottoclasse consentono di leggere da qualsiasi oggetto. Blooch (effective java) parla di PECS Product Extends Consumer Super <? extends T> <? super T> Quando gli oggetti parametrici si usano come prodotti delle collezioni, delle classi parametri, va usata la restrizione di supertipo (le collezioni, le classi parametriche producono gli oggetti). Quando invece il codice la classe parametrico, il metodo parametrico si comporta da consumer (utilizza), allora bisogna assicurare gli il tipo parametrico sia castabile al super tipo
50 Ritornando all'esempio precedente Se vogliamo applicare il metodo printemploypair definito per una coppia di impiegati public static void printpairemp(pair<employee> p) ad una coppia di manager dobbiamo dichiarare il metodo public static void printpairemp(pair<? extends Employee> p) proprio per l'invarianza dei tipi parametrici, perché Pair<Manager> non è sottotipo di Pair<Employee>, ma è sottotipo di Pair<? Extends Employee>. L'estensione? extends Manager è una specifica classe di un tipo che estende Manager, che non è nota nel contesto della compilazione ma che può essere castata a Manager in lettura
51 Nell'esempio di restrizione di sotto tipo public static void minmaxbonus(manager[] a, Pair<? super Employee> result)? super Manager è una specifica classe che è super Tipo di Manager, quindi puo' ospitare tipi manager (in scrittura, o quando il tipo è trattato come consumer). Si puo' ovviamente riscrivere il metodo come public static void minmaxbonus(manager[] a, Pair<? super Employee> result) e passarli una coppia di Employee, quando pero' i manager vengono inseriti nella coppia vengono promossi impiegati, e si perde informazione sui bonus. Se il codice si comporta sia come producer che come consumer le estensioni di super tipo e sotto tipo non sono utilizzabili. Più che come quantificatori di classi, le restrizione di super e sotto tipo vanno interpretati in funzione del loro utilizzo
52 Restrizione di sottotipo/super tipo Un altro uso della restrizione di super tipo si ha con l'interfaccia Comparable, che è di tipo generico public interface Comparable<T> { public int compareto(t other); } Per esempio String implementa Comparable<String>, con il metodo compareto public int compareto(string other) Prima di Java 5, other era un oggetto Object, e si doveva ricorrere ad un cast nell'implementazione. L8 Linguaggi prog. II Unina 52
53 Applicazioni ad array Esempio il minimo universale di array di tipi che estandono l'interfaccia Comparable public static <T extends Comparable<T>> T min(t[] a) Potrebbe essere utile a calcolare il minimo di un array di String T sarebbe il tipo String e String sottotipo di Comparable<String>. L8 Linguaggi prog. II Unina 53
54 E' applicabile ad un array di date, per esempio GregorianCalendar? GregorianCalendar è una sottoclasse di Calendar che implementa Comparable<Calendar>. GregorianCalendar implementa Comparable<Calendar> MA NON Comparable<GregorianCalendar>. In una situazione come questa ci viene d'aiuto la restrizione di super tipo: public static <T extends Comparable<? super T>> T min(t[] a) In questo modo il metodo è effettivamente applicabile L8 Linguaggi prog. II Unina 54
55 Differenze tra <? extends T> e <? super T> Il primo dice un qualiasi tipo che deriva da T, (limite superiore), ovvero un tipo che puo' essere castato a T E rappresenta la famiglia di tutti i tipi che sono sottotipi di T (T incluso) il secondo un qualsiasi tipo da cui deriva T, e rappresenta la famiglia di tutti i tipi Che sono super tipo di T (limite inferiore), ovvero cui T puo' essere castato (T incluso).
56
57 Tipi JOLLY senza restrizioni Si possono usare i tipi JOLLY anche senza restrizioni, es. Pair<?>, che non è la classe Pair RAW, ma possiede i metodi? getfirst() void setfirst(?) Il valore restituito da getfirst può essere solo assegnato ad un Object. setfirst invece non può proprio essere invocato, neanche con Object, ma solo con null. Questa è la principale differenza col Pair row type L8 Linguaggi prog. II Unina 57
58 A cosa serve allora il tipo? senza restrizioni? Si puo' usare quando non si deve utilizzare il tipo attuale, ma solo il tipo null public static boolean hasnulls(pair<?> p) { return p.getfirst() == null p.getsecond() == null; } L8 Linguaggi prog. II Unina 58
59 Il parametro di tipo jolly intuitivamente rappresenta un tipo sconosciuto. Es due liste dello stesso tipo public static <T> void addall(list<t> l1, List<T> l2) {... } due liste qualsiasi public static void addall(list<?> l1, List<?> l2) {... } L8 Linguaggi prog. II Unina 59
60 Wildcard capture Consideriamo di volere scrivere un metodo per scambiare gli elementi di una coppia E' POSSIBILE USARE UN WILDCARD?: public static void swap(pair<?> p) Una wildcard non è una variabilie di tipo, quindi non si può usare un codice come:? t = p.getfirst(); // ERROR p.setfirst(p.getsecond()); p.setsecond(t); L8 Linguaggi prog. II Unina 60
61 Soluzione Costruire un metodo helper public static <T> void swaphelper(pair<t> p) { T t = p.getfirst(); p.setfirst(p.getsecond()); p.setsecond(t); } swaphelper è un metodo generico, mentre swap non lo è (ha un parametro di tipo Pair<?>). Si può invocare saphelper da swap: public static void swap(pair<?> p) { swaphelper(p); } In questo caso il parametro T cattura la wildcard. In generale il meccanismo della wildcard capture può essere usato solo quando alla wildcard corrisponde un tipo attuale ben definito. L8 Linguaggi prog. II Unina 61
Generics. L9 Linguaggi Progr.II Unina 2
Classi parametriche Generics Introdotti con JAVA 5 (2004), anche se si tratta di una delle prime specifiche di java (1999) Generic Programming > scrivere codice che può essere riutilizzato per oggetti
DettagliModulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliProgrammazione 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
DettagliProgettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliTipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
DettagliFunzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
DettagliOggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
DettagliJava: Compilatore e Interprete
Java: Compilatore e Interprete Java Virtual Machine Il bytecode non è Linguaggio Macchina. Per diventarlo, deve subire un ulteriore trasformazione che viene operata dall interprete Java in modalità JIT
DettagliParola chiave extends
Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi
Dettagli12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
DettagliMain System Monitor Keyboard
Composite 57 8. Composite (Gof pag. 163) 8.1. Descrizione Consente la costruzione di gerarchie di oggetti composti. Gli oggetti composti possono essere conformati da oggetti singoli, oppure da altri oggetti
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliProgrammazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
DettagliProgrammazione Java: Variabili membro, Metodi La parola chiave final
Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave
DettagliUso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
DettagliL ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo
Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,
DettagliDefinizione di classi con array di oggetti
Definizione di classi con array di oggetti 1. (Esame scritto del 18/9/2002, Esercizio 6.) La banca dati di un agenzia assicurativa per auto è caratterizzata da un insieme di polizze di assicurazioni per
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
Dettaglidall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliGESTIONE DEI PROCESSI
Sistemi Operativi GESTIONE DEI PROCESSI Processi Concetto di Processo Scheduling di Processi Operazioni su Processi Processi Cooperanti Concetto di Thread Modelli Multithread I thread in Java Concetto
DettagliTraccia di soluzione dell esercizio del 25/1/2005
Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
DettagliCorso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)
1) Si considerino le classi Java: Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso) class Card Card (String seed, int value) this.seed=seed; this.value=value; String seed; int
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliReflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010
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 Reflection in Java 1 Reflection Riflessione
DettagliJava:Struttura di Programma. Fabio Scanu a.s. 2014/2015
Java:Struttura di Programma Fabio Scanu a.s. 2014/2015 Altre Attenzioni da riservare Java è Case Sensitive: La variabile «a» e la variabile «A» sono diverse Java ha alcune regole di scrittura: I nomi delle
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliUML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
DettagliRealizzazione di una classe con un associazione
Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe
Dettagli13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliSynchronized (ancora)
Synchronized (ancora) Riscriviamo l esempio di prima. Usiamo una struttura modulare, con una classe Notificatore che ha opportuni metodi. La classe ha due campi privati, la lista buftext e un suo thread.
DettagliSOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
DettagliJava Virtual Machine
Java Virtual Machine programmi sorgente: files.java compilatore files.class bytecode linker/loader bytecode bytecode Java API files.class interprete macchina ospite Indipendenza di java dalla macchina
DettagliConcetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 30 maggio 2014 Introduzione Un programma diviso in sezioni distinte Un approccio alla
DettagliIntroduzione. Java. Composizione. Esempio -- composizione. G. Prencipe prencipe@di.unipi.it. È qualcosa che abbiamo già visto varie volte
Java riutilizzo delle classi G. Prencipe prencipe@di.unipi.it Introduzione Una delle caratteristiche fondamentali in Java è il riutilizzo del codice Ci sono due modi per ottenerlo Creare oggetti di classi
DettagliEredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi
Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi
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,
DettagliProgrammazione ad Oggetti Modulo A (Esame del 11/9/2015)
Programmazione ad Oggetti Modulo A (Esame del 11/9/2015) Esercizio 1 Considerate la seguente gerarchia di classi: class A { public void print(string s) { System.out.println(s); public void m1() { print("a.m1");
DettagliI file di dati. Unità didattica D1 1
I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità
DettagliFondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main
Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli
DettagliSiti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliOrganizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()
Organizzazione della lezione Lezione 18 Remote Method Invocation - 6 Vittorio Scarano Corso di Programmazione Distribuita (2003-2004) Laurea di I livello in Informatica Università degli Studi di Salerno
Dettagli10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.
ESERCIZIARIO Risposte ai quesiti: 10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress. 10.2. Un numero intero in Java è compreso nell'intervallo ( 2 31 ) e (2 31
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
DettagliTest di unità con JUnit4
Test di unità con JUnit4 Richiamo sul test di unità Il test d unità è una metodologia che permette di verificare il corretto funzionamento di singole unità di codice in determinate condizioni. Nel caso
DettagliUn esercizio d esame. Flavio De Paoli
Un esercizio d esame e note sulla gestione dei dati Flavio De Paoli Il testo (Appello 22 ottobre 2001) Una stazione di servizio dispone di n distributori di benzina. I clienti si presentano a uno dei distributori
DettagliGestione delle Eccezioni
Gestione delle Eccezioni Condizioni di Errore Una condizione di errore in un programma può avere molte cause Errori di programmazione Divisione per zero, cast non permesso, accesso oltre i limiti di un
DettagliArchitettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliOperazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Operazioni di input/output Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Input /Output introduzione Per ottenere delle informazioni un programma apre un flusso (Stream)
DettagliUno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:
Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente
DettagliSommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
DettagliProgrammazione a Oggetti Modulo B
Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione
DettagliDESIGN PATTERNS Parte 6. State Proxy
DESIGN PATTERNS Parte 6 State Proxy STATE Il Design Pattern State nasce dall'esigenza di poter gestire gli stati di una classe senza dover usare dei costrutti come gli Enum e quindi delle switch. Prendiamo
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e Overloading Ereditarietà e Overriding Esercizi svolti Esercizi proposti Paradigma OO Le
DettagliRMI Remote Method Invocation
RMI Remote Method Invocation [Pagina intenzionalmente vuota] (1 12 2004) slide 4:1/18 (p.106) Un applicazione RMI è un applicazione distribuita ad oggetti. Applicazione RMI tipica, strutturata in: server:
DettagliVisual Basic.NET La Gestione degli Errori di Federico BARBATI
Generalità Visual Basic.NET La Gestione degli Errori di Federico BARBATI La gestione degli errori, è una parte fondamentale di un codice ben progettato. Fino ad oggi, gli errori nelle applicazioni scritte
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: C# versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G.
DettagliEXCEL FUNZIONI PRINCIPALI
EXCEL FUNZIONI PRINCIPALI Funzione SE() Sintassi: SE(VERIFICA, VALORE SE VERO, VALORE SE FALSO): verifica un valore e ritorna una risposta in base al risultato vero/falso Esempio: =SE(A2=15; "OK"; "NO")
DettagliVariabili e tipi di dato
Variabili e tipi di dato Tutte le variabili devono essere dichiarate, specificandone il tipo La dichiarazione deve precedere l uso Il tipo è un concetto astratto che esprime: L allocazione di spazio per
DettagliMetodologie di progetto Estensione di classi Implementazione di interfacce Composizione
Gerarchie di Tipi Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione Notazione UML Relazione Simbolo Significato Ereditarietà Implementazione Aggregazione Dipendenza
DettagliLinguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java
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 Programmazione Object Oriented in Java
DettagliIntroduzione al Linguaggio C
Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo tatiana.zolo@libero.it 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
DettagliProva di Laboratorio di Programmazione
Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare
DettagliSupermarket Progetto di Programmazione Febbraio 2010
Supermarket Progetto di Programmazione Febbraio 2010 1 Supermercato Dovete realizzare un insieme di classi e interfacce che riguardano la gestione di un supermercato. nella Sezione 2 verranno descritte
DettagliProgrammazione 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
DettagliLaboratorio di Sistemi Distribuiti Leonardo Mariani
Laboratorio di Sistemi Distribuiti Leonardo Mariani ELECTION ALGORITHMS In molti sistemi distribuiti un processo deve agire da (o svolgere un ruolo particolare) per gli altri processi. Spesso non è importante
DettagliProtezione. Protezione. Protezione. Obiettivi della protezione
Protezione Protezione La protezione riguarda i meccanismi per il controllo dell accesso alle risorse in un sistema di calcolo da parte degli utenti e dei processi. Meccanismi di imposizione fissati in
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
DettagliEsercitazione n 4. Obiettivi
Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:
DettagliMatematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
DettagliSpecifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.
Prototype 28 4. Prototype (GoF pag. 117) 4.1. Descrizione 4.2. Esempio Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.
DettagliRegistri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247
Registri RMI Per poter interagire con un server remoto, un client deve essere in possesso di una sua referenza remota (ovvero un oggetto stub). Un servizio di Naming è una risorsa centralizzata che può
DettagliCOS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle
Dettaglirisulta (x) = 1 se x < 0.
Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente
DettagliLINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
DettagliIl linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.
(Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System
DettagliGeneralizzazione di funzioni e di classi. Macro come funzioni generiche
Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)
DettagliProssime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1
Prossime lezioni Dai TDA agli oggetti Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione, lezione 18 19 gennaio
DettagliArduino: Programmazione
Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite
DettagliAllocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
DettagliRISOLUTORE AUTOMATICO PER SUDOKU
RISOLUTORE AUTOMATICO PER SUDOKU Progetto Prolog - Pierluigi Tresoldi 609618 INDICE 1.STORIA DEL SUDOKU 2.REGOLE DEL GIOCO 3.PROGRAMMAZIONE CON VINCOLI 4.COMANDI DEL PROGRAMMA 5.ESEMPI 1. STORIA DEL SUDOKU
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Il meccanismo dell ereditarietà a.a. 2008/2009 Claudio De Stefano 1 L ereditarietà consente di definire nuove classi per specializzazione o estensione di classi preesistenti,
DettagliRMI. Java RMI RMI. G. Prencipe prencipe@di.unipi.it
Java Remote Method Invocation -- RMI G. Prencipe prencipe@di.unipi.it RMI RMI è una tecnologia JAVA che permette a una JVM di comunicare con un altra JVM per farle eseguire metodi È possibile che oggetti
DettagliGESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming
DettagliProgrammazione II. Lezione 4. Daniele Sgandurra 30/09/2011. daniele.sgandurra@iit.cnr.it
Programmazione II Lezione 4 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 30/09/2011 1/46 Programmazione II Lezione 4 30/09/2011 Sommario 1 Esercitazione 2 Panoramica della Programmazione Ad Oggetti 3
Dettaglihttp://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
DettagliJava Web Services. Uso di Eclipse e Apache Axis
Java Web Services Uso di Eclipse e Apache Axis 1 Gli strumenti utili per iniziare Axis (Web Service tool) Eclipse (IDE di sviluppo) Tomcat (servlet/jsp container) N.B. Eclipse e Tomcat possono essere sostituiti
DettagliEsercizi della lezione 5 di Java
Esercizi della lezione 5 di Java Esercizio 5 Create il tipo di dato Counter dell Esercizio 1 come sottoclasse del tipo di dato SimpleCounter. Esercizio 1 Create un tipo di dato Counter che abbia: un valore
DettagliCorso di Informatica
Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio
DettagliINFORMATICA 1 L. Mezzalira
INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello
DettagliAlgoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.
Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliGestione delle eccezioni in Java
Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire
Dettagli(anno accademico 2008-09)
Calcolo relazionale Prof Alberto Belussi Prof. Alberto Belussi (anno accademico 2008-09) Calcolo relazionale E un linguaggio di interrogazione o e dichiarativo: at specifica le proprietà del risultato
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
Dettagli