Programmazione a Oggetti Modulo B
|
|
- Lucrezia Bertini
- 8 anni fa
- Visualizzazioni
Transcript
1 Programmazione a Oggetti Modulo B Lezione 5 Dott. Alessandro Roncato 08/11/2011
2 Riassunto Pattern Singleton Pattern Plolimorfismo Classi e Interfacce 2
3 Ereditarietà multipla In Java una classe può estendere una sola altra classe, mentre può implementare tante interfacce In altri linguaggio possiamo avere l'estensione multipla (ovvero la possibilità che una classe estenda tante altre classi) In ogni caso l'ereditarietà multipla è fonte di problemi 3
4 Interfacce multiple <<interface>> BeneInventariato <<interface>> Veicolo <<implements>> <<implements>> Automobile OK 4
5 Ereditarietà multipla BeneInventariato Veicolo Automobile NO! 5
6 Codice (se si potesse) public class B { public methodb1(){...}; public methodb2(){...}; } public class C { public methodc1(){...} public methodc2(){...} } public class A extends B C { 6
7 Uso classe public class XXX { A a public void peresempio(){ a.methodb1(); a.methodc1(); B b = a; b.methodb2(); C c = a; c.methodc2(); } 7
8 Ereditarietà multipla Come ottenere l'ereditarietà multipla in Java? Supponiamo che A erediti dalle classi B, C, D etc. A estende una sola delle classi (meglio la classe con più metodi pubblici) Le altre classi vengono incorporate nella classe A Servono delle interfacce IB, IC, etc 8
9 Ereditarietà multipla B C A 9
10 Ereditarietà singola +... B <<interface>> IC <<implements>> A C c: IC 10
11 Codice public interface IC { methodc1(); methodc2(); } public class C implements IC { public methodc1(){...} public methodc2(){...} } public class A extends B implements IC { IC c = new C(); } public methodc1(){c.methodc1();} //wrapper public methodc2(){c.methodc2();} //wrapper 11
12 Uso classe public class XXX { A a public void peresempio(){ a.methodb1(); a.methodc1(); B b = a; b.methodb2(); IC c = a; c.methodc2(); } 12
13 Pattern Nelle lezioni vediamo come applicare i pattern in alcuni punti della progettazione Gli stessi pattern possono essere applicati anche in altre parti della progettazione E' parte del lavoro di progetto considerare tutti i punti in cui un pattern può essere applicato. 13
14 Tipi Pattern Creazionali (diagrammi classi e sequenza) Strutturali (diagramma classi) Comportamentali (diagramma sequenza) Concorrenza (diagramma attività) 14
15 Ricerca di un prodotto La responsabilità di gestire la ricerca può essere gestita in due modi: 1) da uno (o più) metodo(i) di una classe esistente 2) da una classe a se stante. 15
16 Classe esistente Un oggetto globale (visibile globalmente) gestisce la ricerca Per esempio l'oggetto Negozio può gestire la ricerca Problemi : 1)bassa coesione 2)una ricerca per ogni oggetto a cui è associata (potrebbero essere poche o troppe!). Se associata al Negozio, abbiamo un'unica ricerca. 16
17 public class Negozio { Esempio Set<Prodotto> risultatoricerca;... public Negozio(){ }...//inizializzazione negozio // piu' // inizializzazione ricerca //metodi Negozio più metodi ricerca public void cercaprodotti(string query){...} Bassa coesione Difficile il riuso Alta dipendenza public Set<Prodotto> getricerca(){ return risultatoricerca();} } public void raffinaricerca(string query){...} 17
18 Svantaggi Bassa coesione: cosa hanno a che fare i metodi di Negozio con quelli della ricerca dei Prodotti? Riuso difficile: come posso riusare le funzionalità della ricerca senza la classe Negozio? Dipendenza: aumentano le classi che hanno bisogno di accedere alla classe Negozio (Negozio+ chi deve accedere alle ricerche) 18
19 Pure Fabrication P: come assegnare le responsabilità in modo da ottenere Low Coupling and High Coesion se I.E. NON è appropiato? S: assegna un insieme altamente coeso di responsabilità a una classe artificiale (di pura invenzione) che non rappresenta un concetto del dominio del problema, ma qualcosa di inventato per sostenere H.C., L.C. e il riuso. 19
20 Esempio Facciamo gestire le ricerche da una nuova classe inventata Ricerca (Questa classe non è proprio una pura invenzione perché come concetto la Ricerca esiste) Vedremo poi altri esempi in cui inventiamo nuove classi più di sana pianta 20
21 public class Ricerca { Set<Prodotto> risultato; Esempio public void cercaprodotti(string query){...} public Set getricerca(){return risultatoricerca(); public void raffinaricerca(string query){...} } } Alta coesione Riuso Riduce dipendenza 21
22 Pure Fabrication Ricerca * 1 Negozio Cassiere 1 * Prodotto * 0..1 Carrello 22
23 Pure Fabrication Ricerca * 1 Negozio Cliente 1 * Prodotto * 0..1 Carrello 23
24 Altri esempi Chi è responsabile della persistenza degli oggetti? Persistenza=salvare, leggere, aggiornare, cercare gli oggetti nel filesystem o in un DB Per I.E. Dovrebbe essere l'oggetto stesso a farlo Ma questo ha gli svantaggi già visti Si preferisce una Pure Fabrication che gestisca la persistenza di tutti gli oggetti 24
25 Altri esempi Chi è responsabile della di gestire la visualizzazione? Per I.E. Dovrebbe essere l'oggetto stesso a farlo Ma questo ha gli svantaggi già visti Si preferisce una Pure Fabrication che gestisca la visualizzazione degli oggetti 25
26 Svantaggi Pure Fabrication Una classe in più Potrebbe essere difficile da individuare la classe responsabile Visione procedurale invece che ad oggetti (raggruppo per funzionalità e non per concetto) (vedremo come limitare questo ultimo problema) 26
27 Chi crea gli oggetti letti dal DB? public class Prodotto { static public Prodotto load(int id){ Class.classForName( Driver ); Connection con=drivermanager.get.conn... Statement sta = con.createstatement(); ResultSet rs = sta.executequery(... if (rs.next){ String codice=rs.getstring( codice ); return new Prodotto(codice,... } } 27
28 Chi crea gli oggetti letti dal DB? public class Cliente { static public Cliente load(int id){ Class.classForName( Driver ); Connection con=drivermanager.get.conn... Statement sta = con.createstatement(); ResultSet rs = sta.executequery(... if (rs.next){ String nome=rs.getstring( nome ); return new Cliente(nome,... } } 28
29 Svantaggi Logica di creazione complessa Poca coesione Forte dipendenza degli oggetti del modello da le classi di gestione del DB Ripetizione di codice in classi diverse (vedi esercizio più avanti) 29
30 Soluzione Specializzazione di Pure Fabrication: Factory (o anche detto Simple Factory o Concrete Factory) Un oggetto di pura invenzione crea gli oggetti del modello Attenzione: Factory=Fabbrica Fabrication=Invenzione 30
31 Pattern Factory P: chi deve creare gli oggetti quando la creazione è complessa? S: Un oggetto di pura invenzione chiamato Factory 31
32 Factory public class ProdottoFactory { public Prodotto load(int id){ Class.classForName( Driver ); Connection con=drivermanager.get.connection(...); Statement sta = con.createstatement(); ResultSet rs = sta.executequery(... ); if (rs.next){ String codice=rs.getstring( codice ); return new Prodotto(codice,...); } } } 32
33 Factory public class ClienteFactory { public Cliente load(int id){ Class.classForName( Driver ); Connection con=drivermanager.get.connection(...); Statement sta = con.createstatement(); ResultSet rs = sta.executequery(... ); if (rs.next){ String nome=rs.getstring( nome ); return new Cliente(nome,...); } } } 33
34 Uso Factory public class XXX { public qualchemetodo() { Prodotto prodotto=...load(id); } } //cosa metto al posto dei...? //quante Factory sono necessarie? //che visibilità devono avere? //vedi esercizio 34
35 Considerazioni Una classe in più per ogni classe del Modello Più coeso Facile il riuso? 35
36 Factory ProdottoFactory XXX Prodotto 36
37 Esercizi Cosa metto al posto dei puntini...? Che vantaggi e svantaggi ci sono? Come posso ottenere alta coesione e bassa dipendenza usando static invece che Factory? Che vantaggi e svantaggi ci sono? 37
38 Factory Method Nell'esempio di Simple Factory abbiamo visto che la Factory definisce il metodo load che è un esempio Factory Method. Possibilità di avere nomi significativi per i metodi (es. loadfromdb, loadfromfile, createnew) (invece il costruttore ha un nome imposto) 38
39 Factory method public class Prodotto { private Prodotto() { } public static Prodotto createnew(){ return new Prodotto(); } public static Prodotto loadfromdb(int id){...//come già visto } } 39
40 Abstract Factory A differenza del Simple Factory che è una classe, l'abstrac Factory definisce un'interfaccia Ci vogliono quindi almeno una classe e un'interfaccia (prima avevo un'unica classe) L'interfaccia definisce almeno un factory method che poi verrà implementato da una o più classi 40
41 Abstract Factory <<interface>> AbstractProdottoFactory <<implements>> ProdottoFactory XXX Prodotto 41
42 Abstract Factory public interface AbstractProdottoFactory { public Prodotto createnew(); } 42
43 Abstract Factory public class ProdottoFactory implements AbstractProdottoFactory { public Prodotto createnew(){... } } 43
44 Uso Abstract Factory public class XXX { public void qualchemetodo() { Prodotto prodotto=...createnew(); //cosa metto al posto dei...? //la differenza rispetto a Simple Factory //dipende da cosa metto nei puntini } } } 44
45 Esercizio Fare in modo di usare Polimorfismo e ConcreteFactory in modo che il codice di accesso al DB venga riusato quanto più possibile. Nella applicazioni reali si usa anche la Reflection in modo da evitare addirittura la necessità delle sottoclassi e che Factory dipenda dagli oggetti della nostra applicazione 45
46 Polimorfismo + Factory ClienteFactory Cliente Factory ProdottoFactory Prodotto ScontrinoFactory Scontrino
47 Reflection + Factory Cliente Factory Prodotto Scontrino... 47
48 Reflection Reflection viene spesso usato assieme ad altre tecniche per ridurre la dipendenza Vediamo come sia possibile cercare di ridurre la dipendenza anche altro modo. 48
49 Protect Variations Come proteggere un oggetto/sistema dai cambiamenti indotti dagli altri oggetti/sistemi? Mascherando i cambiamenti degli altri oggetti tramite una inter-faccia stabile Una tecnica per mascherare è la progettazione guidata dai dati e un caso particolare è un file di configurazione 49
50 Come ridurre dipendenza Come possiamo sfruttare un file di configurazione per ridurre la dipendenza? Mettiamo nel file di configurazione tutti i tipi per la creazione dei libri 50
51 Dipendenze prima Negozio AlimentareFac. Alimentare Factory ElettroFact. Elettrodom. Prodotto RivistaFactory Rivista 51
52 Dipendenza Il fatto che Negozio costruisca tramite le varie Factory tutti i prodotti crea una forte dipendenza di Negozio: c'é più possibilità che Negozio debba essere modificata a causa di un cambiamento alla costruzione di un oggetto Prodotto che per una modifica al funzionamento del Negozio stessa 52
53 Dipendenze dopo java.io.file java.io.bufferedreader java.util.stringtokenizer Negozio AlimentareFact Alimentare Factory ElettroFact. Elettrodom. Prodotto RivistaFactory Rivista 53
54 Dipendenze dopo java.io.fileinputstream java.util.properties Negozio AlimentareFact Alimentare Factory ElettroFact. Elettrodom. Prodotto RivistaFactory Rivista 54
55 Pro e contro +/- Tolgo dipendenze ma ne Aggiungo altree + Ma le dipendenza con classi delle API standard di Java sono meno problematiche perché molto stabili (pochi cambiamenti in vista) - Non tutto il comportamento risiede nel codice, bisogna sapere dell'esistenza del file esterno 55
56 Formato file.properties #commenti preceduti dal carattere #!commenti preceduti dal carattere! number=23; stringa=questa è una stringa stringasumoltelinee=una stringa \ su più linee altrastringa:quaranta stringaconuguale=x\=y stringaconslash=x\\y stringacon2punti=x\:y nomecon\:=valore 56
57 try { FileInputStream fis = Codice new FileInputStream( negozio.properties ); Properties props = new Properties(); props.load(fis); fis.close(); String tempnum=props.getproperty( numeroprodotti ); int num = Integer.parseInt(tempNum); for (int i=0; i<num; i++) { Prodotto prodotto=new Prodotto(); prodotto.setcodice(props.getproperty( codice +i)); double prezzo = Double.parseDouble(props.getProperty( prezzo +i)); 57
58 File negozio.properties #negozio.properties # numeroprodotti=4 codice0= prezzo0= codice1= prezzo1=43.21 codice2= Prezzo2= codice3= prezzo3=
59 Cosa manca? Generare i Prodotti in maniera polimorfa! In pratica dobbiamo riuscire a creare i prodotti 0 e 1 di tipo Alimentare, mentre il prodotto 2 di tipo Elettrodomestico e il 3 di tipo Rivista Serve di nuovo la Reflection La reflection è una tecnica spesso usata per implementare P.V. 59
60 File negozio.properties #negozio.properties # numeroprodotti=4 codice0= prezzo0=12.34 class0=negozio.alimentare... codice1= prezzo1=43.21 class1=negozio.alimentare codice2= prezzo2=23.41 class2=negozio.elettrodomestico codice3= Prezzo3=32.14 class3=negozio.rivista 60
61 try { FileInputStream fis = Codice new FileInputStream( negozio.properties ); Properties props = new Properties(); props.load(fis); fis.close(); String tempnum=props.getproperty( numeroprodotti ); int num = Integer.parseInt(tempNum); for (int i=0; i<num; i++) { Prodotto prodotto = Class.forName(props.getProperty( class +i)).newinstance(); prodotto.loadfromproperties(props,i); } 61
62 Esercizio Perché abbiamo richiamato il metodo loadfromproperties? A cosa serve il parametro i di questo metodo? 62
63 Protect Variation Più complesso Più lento Più costoso Senza controllo compilatore (vedi try-catch) Bisogna valutare se effettivamente l'interfaccia rappresenta un punto di possibile cambiamento La modifica può essere fatta senza bisogno di modificare il codice Java 63
64 Esercizio Progettare e implementare una Simple Factory con Protect Variation per la creazione dei Prodotti (elencare pro e contro) Negozio Prodotti ProdottiFactory java.io.fileinputstream java.util.properties 64
65 Esercizio Pensare a dover modificare l'applicazione dovendo aggiungere nuovi tipi di Prodotti. Quale delle scelte viste risulta la migliore? 65
66 Evoluzioni progettisti Alle prime esperienze, i progettisti tendono a essere troppo ottimisti e pensare che non ci saranno variazioni, bug e manutenzione e quindi la struttura del codice risulta troppo sensibile ai cambiamenti Successivamente, i progettisti tendono a essere troppo pessimisti e prevedono troppi punti di cambiamento e il codice risulta troppo complesso 66
67 Riflessioni sulla reflection La reflection è molto interessante e permette di ottenere codice molto flessibile Analoga alla reflection sono i Metadati per quanto riguarda i DB Attenzione che usando la reflection perdiamo i vantaggio di avere un linguaggio fortemente tipato e spostiamo al run-time la scoperta di possibili errori. 67
68 Riflessioni sulla reflection 2 Tramite reflection è possibile cambiare al run-time la visibilità dei membri di una classe: è quindi possibile accedere ad un attributo che è privato Questo permette a molte librerie/framework di accedere in modo uniforme allo stato degli oggetti Il problema della mancanza di controllo del compilatore viene mitigato dal fatto che il codice è ben testato dai tanti utilizzatori 68
69 Reflection e sicurezza Vale la pena di rimarcare che il fatto che tramite la reflection sia possibile cambiare la visibilità di attributi di una classe, ancora di più sottolinea che l'unico scopo delle visibilità private, protected e package è quello di limitare la dipendenza tra le classi e NON riguarda minimamente aspetti di sicurezza applicativa. Quindi: per nascondere le password non ha senso usare private 69
70 Sicurezza e Java Spesso si sente dire che Java è un linguaggio sicuro a differenza del C. Questa è vero ma NON riguarda il fatto che C non ha le visibilità private, protected etc. Bensì, riguarda i controlli fatti al run time dalla virtual machine quando esegue il nostro codice (es. controllo indici, SecurityManager, Eccezioni etc.) 70
DESIGN PATTERNS Parte 2. Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection
DESIGN PATTERNS Parte 2 Polimorfismo Pure Fabrication Simple Factory/Concrete Factory Factory Method Abstract Factory Protect Variations + Reflection POLIMORFISMO Il polimorfismo è la base della programmazione
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
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
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
DettagliGuida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
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)
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
DettagliCapitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
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
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
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
DettagliObject Oriented Programming
OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in
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
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,
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
DettagliIntroduzione JDBC interfaccia java.sql driver caricare i driver
J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliPer scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
Dettagli3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili 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
Dettaglidesign patterns e GRASP
design patterns e GRASP 1 design patterns una coppia / particolarmente importante a cui viene dato un nome vengono espressi in un formato molto rigido, ad es. nome descrizione sintetica della descrizione
Dettagli15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
15 - Packages 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
DettagliProf. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA
Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA ES 02 - ORGANIZER Voglio un gestionale (organizer) che permetta a ciascun dipendente della mia azienda di inserire le attività che svolgono
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
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
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
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
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliSoftware Gestionale per alberghi e strutture ricettive
TOURING HOME V.4.0.0 Software Gestionale per alberghi e strutture ricettive Guida all aggiornamento Abbiamo il piacere di presentarvi la nuova versione 4.0.0 di TouringHome Completamente rivisto graficamente,
Dettagli14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
14 - Packages 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
DettagliObject Oriented Software Design
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria
DettagliRaggruppamenti Conti Movimenti
ESERCITAZIONE PIANO DEI CONTI Vogliamo creare un programma che ci permetta di gestire, in un DB, il Piano dei conti di un azienda. Nel corso della gestione d esercizio, si potranno registrare gli articoli
DettagliProgrammazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Relazioni tra classi Ereditarietà Generalizzazione Specializzazione Aggregazione Composizione Dipendenza Associazione Sommario Relazioni
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
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliApproccio stratificato
Approccio stratificato Il sistema operativo è suddiviso in strati (livelli), ciascuno costruito sopra quelli inferiori. Il livello più basso (strato 0) è l hardware, il più alto (strato N) è l interfaccia
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
DettagliPrestaShop 1.5. Manuale per gli utenti. Ultimo aggiornamento: 25 gennaio 2014. A cura di: http://www.prestashoprisolto.com/
PrestaShop 1.5 Manuale per gli utenti Ultimo aggiornamento: 25 gennaio 2014 A cura di: http://www.prestashoprisolto.com/ 1 Sommario 1 PER L UTENTE... 3 1.1 GESTIONE DELL E-COMMERCE... 3 1.1.1 CONCETTI
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");
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliModulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress
Copyright Andrea Giavara wppratico.com Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress 1. Il pannello amministrativo 2. I dati importanti 3. Creare il database - Cpanel - Plesk
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
DettagliLa prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete
La prima applicazione Java Programma MyFirstApplication Il programma visualizza una finestra vuota sullo schermo. Importo il package delle classi usate nel seguito. Dichiaro la classe MyFirstApplication
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.
Dettagliwww.filoweb.it STAMPA UNIONE DI WORD
STAMPA UNIONE DI WORD Molte volte abbiamo bisogno di stampare più volte lo stesso documento cambiando solo alcuni dati. Potremmo farlo manualmente e perdere un sacco di tempo, oppure possiamo ricorrere
DettagliVisibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
DettagliLa manutenzione come elemento di garanzia della sicurezza di macchine e impianti
La manutenzione come elemento di garanzia della sicurezza di macchine e impianti Alessandro Mazzeranghi, Rossano Rossetti MECQ S.r.l. Quanto è importante la manutenzione negli ambienti di lavoro? E cosa
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
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/
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
DettagliRelazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore
Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter
DettagliCOME CREARE UN SONDAGGIO CON SCELTA SU MOODLE
COME CREARE UN SONDAGGIO CON SCELTA SU MOODLE Inserisci le tue credenziali di accesso in alto sulla colonna di destra denominata Login. Si devono inserire le credenziali come editor del corso Il modulo
DettagliBrand Il primo corso per gli imprenditori che vogliono imparare l arma segreta del Brand Positioning Introduzione
Il primo corso per gli imprenditori che vogliono imparare l arma segreta del Brand Positioning Un corso di Marco De Veglia Brand Positioning: la chiave segreta del marketing Mi occupo di Brand Positioning
DettagliDESIGN PATTERNS Parte 5. Facade Strategy Composite Interpreter
DESIGN PATTERNS Parte 5 Facade Strategy Composite Interpreter FACADE Per proteggere la nostra applicazione sfruttando il Protect Variation possiamo usare il pattern Facade. Questo pattern è ottimo per
DettagliVeneto Lavoro via Ca' Marcello 67/b, 30172 Venezia-Mestre tel.: 041/2919311
Veneto Lavoro via Ca' Marcello 67/b, 30172 Venezia-Mestre tel.: 041/2919311 INDICE 1. INTRODUZIONE... 3 1.1 SCADENZA... 3 1.2 CAUSALE DA UTILIZZARE... 3 2. MODALITÀ OPERATIVE DI COMUNICAZIONE DATI... 4
DettagliDa dove nasce l idea dei video
Da dove nasce l idea dei video Per anni abbiamo incontrato i potenziali clienti presso le loro sedi, come la tradizione commerciale vuole. L incontro nasce con una telefonata che il consulente fa a chi
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
DettagliFIRESHOP.NET. Gestione del taglia e colore. www.firesoft.it
FIRESHOP.NET Gestione del taglia e colore www.firesoft.it Sommario SOMMARIO Introduzione... 3 Configurazione iniziale... 5 Gestione delle varianti... 6 Raggruppamento delle varianti... 8 Gestire le varianti
DettagliTelematica II 17. Esercitazione/Laboratorio 6
Multitasking e Multithreading Telematica II 17. Esercitazione/Laboratorio 6 Multitasking si riferisce all abilità di un computer di eseguire processi (jobs) multipli in maniera concorrente si ricorda che
DettagliAppunti di Sistemi Distribuiti
Appunti di Sistemi Distribuiti Matteo Gianello 27 settembre 2013 1 Indice 1 Introduzione 3 1.1 Definizione di sistema distribuito........................... 3 1.2 Obiettivi.........................................
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
DettagliI DATABASE Database relazionale
Database relazionale Modello di database che consiste di diversi file separati che sono correlati l'un l'altro attraverso campi chiave. Si può accedere alle informazioni memorizzate in un file attraverso
DettagliCapitolo 2. Operazione di limite
Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A
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:
DettagliSISTEMA di GESTIONE QUALITÀ Non Conformità ed Efficacia delle Azioni Correttive Preventive
SISTEMA di GESTIONE QUALITÀ Non Conformità ed Efficacia delle Azioni Correttive Preventive Il sistema di gestione della qualità a cui mi riferisco è quello relativo alla norma ISO-9001:2000. Prima di entrare
DettagliLezioni di Laboratorio sui Data Base
Lezioni di Laboratorio sui Data Base Docente Tutor: Dott. Gianluigi Roveda Informatica per l'impresa Prima Parte: Open Office - Base PREMESSA Questo lavoro è stato realizzato a partire dalle slides del
DettagliCOME PARLARE DI DISLESSIA IN CLASSE.
COME PARLARE DI DISLESSIA IN CLASSE. UNA METAFORA PER SPIEGARE I DSA La psicologa americana ANIA SIWEK ha sviluppato in anni di pratica professionale un modo semplice ed efficace di spiegare i DSA ai bambini,
DettagliMac Application Manager 1.3 (SOLO PER TIGER)
Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i
DettagliI casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.
UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d
DettagliCorso di formazione CerTICTablet
Redattore prof. Corso di formazione CerTICTablet Sesta Dispensa Comitato Tecnico Scientifico: Gruppo Operativo di Progetto CerticAcademy Learning Center, patrocinato dall assessorato al lavoro e alla formazione
DettagliNon si deve fare ALCUN riferimento alla parte specifica di JDBC.
Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si
DettagliCMS MUSEO&WEB. Mappe grafiche. Andrea Tempera (OTEBAC) 12 aprile 2010
CMS MUSEO&WEB Mappe grafiche Andrea Tempera (OTEBAC) 12 aprile 2010 Introduzione Grazie ad appositi tag HTML possiamo associare molteplici collegamenti a differenti zone di un'unica immagine; un'immagine
DettagliVlan Relazione di Sistemi e Reti Cenni teorici
Cosa sono le Vlan? Vlan Relazione di Sistemi e Reti Cenni teorici Le Vlan sono un tipo di rete particolare che permettono di creare tante reti logiche a partire da una singola rete fisica. Questo significa
DettagliINSERIMENTO DATI BASILARI
PASSO PASSO. Questo applicativo software nasce con l idea di essere molto semplice da usare. Di fatto lo è ed infatti non dispone di un help in linea all interno dello stesso. Tuttavia ci sentiamo in dovere
DettagliProgrammazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)
Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università
DettagliAnalisi di programmi: Crittografia
Analisi di programmi: Crittografia Come caso concreto di sistema, proviamo ad abbozzare e a vedere una prima implementazione di un sistema di crittografia a chiave pubblica La crittografia studia le tecniche
DettagliAspetti applicativi e tecnologia
Aspetti applicativi e tecnologia Premessa Architetture usate per i database Le prime applicazioni erano definite monolitiche, cioè un unico computer (mainframe) gestiva sia le applicazioni che i dati,
DettagliGoogle AdWords. Corrispondenze Parole Chiave
Google AdWords Corrispondenze Parole Chiave Una mini guida sulle varie tipologie di corrispondenze per le parole chiave di Google AdWords, la scelta su quali usare può far cambiare di molto il punteggio
DettagliOttava Esercitazione. introduzione ai thread java mutua esclusione
Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione
DettagliCorso su LINQ Lezione 16. Introduzione
LINQ to SQL Introduzione Con questa lezione introduciamo il flavor LINQ to SQL. Dopo aver visto quindi tutte le funzionalità e gli operatori di LINQ to Object, affronteremo ora la tematica riguardante
DettagliProgettazione di un Database
Progettazione di un Database Per comprendere il processo di progettazione di un Database deve essere chiaro il modo con cui vengono organizzati e quindi memorizzati i dati in un sistema di gestione di
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:
DettagliCorso di Sistemi di Elaborazione delle informazioni
Corso di Sistemi di Elaborazione delle informazioni Basi di Dati Claudio Marrocco I report I Report sono lo strumento più adatto per ottenere una copia stampata dei dati e delle informazioni ricavate dalle
DettagliSITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.
Progetto SITI Manuale Utente SITI-Reports ABACO S.r.l. ABACO S.r.l. C.so Umberto, 43 46100 Mantova (Italy) Tel +39 376 222181 Fax +39 376 222182 www.abacogroup.eu e-mail : info@abacogroup.eu 02/03/2010
DettagliRegione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da
ARPA Fonte Dati Regione Toscana Redatto da L. Folchi (TAI) Rivisto da Approvato da Versione 1.0 Data emissione 06/08/13 Stato DRAFT 1 Versione Data Descrizione 1,0 06/08/13 Versione Iniziale 2 Sommario
DettagliIL BUDGET 04 LE SPESE DI REPARTO & GENERALI
IL BUDGET 04 LE SPESE DI REPARTO & GENERALI Eccoci ad un altra puntata del percorso di costruzione di un budget annuale: i visitatori del nostro sito www.controllogestionestrategico.it possono vedere alcuni
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
DettagliMANUALE PARCELLA FACILE PLUS INDICE
MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella
DettagliDispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
DettagliVersione 7.0 Taglie e Colori. Negozio Facile
Versione 7.0 Taglie e Colori Negozio Facile Negozio Facile: Gestione taglie e colori Il concetto di base dal quale siamo partiti è che ogni variante taglia/colore sia un articolo a se stante. Partendo
DettagliINSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)
INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014) Se la Suite risulta già stata installata e quindi sono già presenti le configurazioni di seguito indicate, si prega di andare direttamente alla fine
DettagliGrafico della parabola
Grafico della parabola Il grafico matematico è un disegno che mostra l andamento di una funzione f(x) al variare della variabile x. Per tracciare un grafico sul video del computer, si deve scegliere un
DettagliRelazioni tra tabelle
Relazioni tra tabelle Una delle caratteristiche principali di Access è la possibilità di definire le relazioni fra tabelle in modo molto semplice vista l interfaccia grafica visuale. Le relazioni possono
DettagliPROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
DettagliIl calendario di Windows Vista
Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative
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.
DettagliIL MIO PRIMO SITO: NEWS
Pagina 1 IL MIO PRIMO SITO: NEWS Sommario IL MIO PRIMO SITO: NEWS...1 Introduzione...2 I Contenitori...2 Creo un Contenitore...3 I Tracciati...4 Creo le Notizie...6 Inserisco il Testo...6 Inserisco un
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
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
DettagliObiettivo Principale: Aiutare gli studenti a capire cos è la programmazione
4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:
DettagliStrutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
Dettagli