Lab 3: TDD Calisthenics
|
|
- Patrizia Ippolito
- 6 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Milano Dept. of Computer Science Lab 3: TDD Calisthenics Matteo Camilli Progettazione del Software a.a. 2012/13 1
2 Obbiettivi del laboratorio Capire quando il codice che scrivete fa schifo : Manutenibile? Leggibile? Riusabile? Testabile? Come sistemarlo? 2
3 Object Calisthenics Cal-is-then-ic - noun Calisthenics are a form of dynamic exercise consisting of a variety of simple, often rhythmical, movements, generally using minimal equipment or apparatus. 3
4 Object Calisthenics Cal-is-then-ic - noun Calisthenics are a form of dynamic exercise consisting of a variety of simple, often rhythmical, movements, generally using minimal equipment or apparatus. Nel nostro contesto: Una varietà di semplici e ritmici esercizi per ottenere un migliore OO e una migliore qualità del codice. 3
5 Object Calisthenics Cal-is-then-ic - noun Calisthenics are a form of dynamic exercise consisting of a variety of simple, often rhythmical, movements, generally using minimal equipment or apparatus. Nel nostro contesto: Una varietà di semplici e ritmici esercizi per ottenere un migliore OO e una migliore qualità del codice. Sono linee guida.. non regole! 3
6 OC #1 Usare un solo livello di indentazione per metodo. public void format() for (int row=0; row<rows; row++) for (int column=0; column<columns; column++) grid[row,column].format(); VS public void format() for (int row=0; row<rows; row++) formatrow(row); public void formatrow() for (int col=0; col<columns; col++) grid[row,col].format(); 4
7 OC #1 Usare un solo livello di indentazione per metodo. public void format() Benefici for (int row=0; row<rows; row++) for (int column=0; column<columns; column++) grid[row,column].format(); Più leggibilità Metodi svolgono un unica funzione. Maggiore riusabilità del codice. VS public void format() for (int row=0; row<rows; row++) formatrow(row); public void formatrow() for (int col=0; col<columns; col++) grid[row,col].format(); 4
8 OC #2 Non utilizzare la parola chiave else if(form.isvalid()) entity = new Post(form); repository = this.getrepository( Post ); if(!repository.exists(entity)) repository.save(entity); message = new Message( create_ok ); else message = new Message( Post Title already exists ); else message = new Message( Invalid fields ); Bad return message; 5
9 OC #2 Non utilizzare la parola chiave else Flusso di esecuzione if(form.isvalid()) entity = new Post(form); repository = this.getrepository( Post ); if(!repository.exists(entity)) repository.save(entity); message = new Message( create_ok ); else message = new Message( Post Title already exists ); else message = new Message( Invalid fields ); Bad return message; 5
10 OC #2 Non utilizzare la parola chiave else if(form.isvalid()) entity = new Post(form); repository = this.getrepository( Post ); if(!repository.exists(entity)) repository.save(entity); message = new Message( create_ok ); else message = new Message( Post Title already exists ); else message = new Message( Invalid fields ); Bad return message; 5
11 OC #2 Non utilizzare la parola chiave else if(!form.isvalid()) return new Message( Invalid fields ); OK entity = new Post(form); repository = this.getrepository( Post ); if(repository.exists(entity)) return new Message( Post Title already exists ); repository.save(entity); return new Message( create_ok ); 5
12 OC #2 Non utilizzare la parola chiave else if(!form.isvalid()) return new Message( Invalid fields ); Benefici OK entity = new Post(form); repository = this.getrepository( Post ); Più leggibilità (singolo path di esecuzione) Evita duplicazione del codice if(repository.exists(entity)) return new Message( Post Title already exists ); Testing più semplice repository.save(entity); return new Message( create_ok ); 5
13 OC #3 Non usare parametri di tipo primitivo (es. int, double) e di tipo String. Creare invece degli oggetti che rappresentano cosa sono i parametri. public class UIComponent public void repaint(boolean animate) component.repaint(false); Bad Operazione non chiara! 6
14 OC #3 Non usare parametri di tipo primitivo (es. int, double) e di tipo String. Creare invece degli oggetti che rappresentano cosa sono i parametri. public class UIComponent public void repaint(animate animate) OK public class Animate private boolean animate; public Animate(boolean animate) this.animate = animate; component.repaint(new Animate(false)); 6
15 OC #3 Non usare parametri di tipo primitivo (es. int, double) e di tipo String. Creare invece degli oggetti che rappresentano cosa sono i parametri. Più leggibilità Più manutenibilità public class UIComponent Benefici public void repaint(animate animate) public class Animate private boolean animate; OK public Animate(boolean animate) this.animate = animate; component.repaint(new Animate(false)); 6
16 OC #4 Usare un singolo punto per linea. public void update() context.currentsession.update(); Bad??? public void update() Session s = context.currentsession; s.update(); Bad public void update() context.update(); public class Context public void update() currentsession.update(); OK 7
17 OC #4 Usare un singolo punto per linea. public void update() public void update() context.currentsession.update(); Session s = context.currentsession; s.update(); Benefici??? Più leggibilità Più semplicità di debugging Responsabilità alle classi giuste Bad public void update() context.update(); public class Context Bad public void update() currentsession.update(); OK 7
18 OC #5 Non abbreviare i nomi.? if (sx >= sy) if (sx > strsysmatimgw) ny = strsysmatimgw * sy / sx; nx = strsysmatimgw; if (ny > strsysmatimgh)?? Bad 8
19 OC #5 Non abbreviare i nomi.? I Nomi dei metodi sono troppo lunghi.. if (sx >= sy) if (sx > strsysmatimgw) Bad ny = strsysmatimgw * sy / sx; nx = strsysmatimgw; public void processresponseheadersanddefineoutput()... if (ny > strsysmatimgh) Troppe responsabilità??? 8
20 OC #5 public Page getpage()... public Page downloadpage()... public Page fetchpage() get from where? public void startprocess()... public void forkprocess()... public void createprocess() tr.process(); table row? tablerow.process(); translatorservice.process();... 9
21 OC #5 public Page getpage()... public Page downloadpage()... public Page fetchpage() get from where? public void startprocess()... Più leggibilità Rivela problemi sottostanti Benefici public void forkprocess()... public void createprocess() tr.process(); table row? tablerow.process(); translatorservice.process();... 9
22 OC #6 Non più di 50 righe di codice per classe. Non più di 10 file per package. 10
23 OC #6 Non più di 50 righe di codice per classe. Non più di 10 file per package. Benefici Aiuta a mantenere ogni classe con una singola responsabilità. Oggetti più semplici da utilizzare. 10
24 OC #7 Ogni classe deve avere un massimo di due attributi. public class Person() String first; String middle; String last; public class Person() Names givennames; Surname family; public class Surname() String family; public class Names() List<String> names; 11
25 OC #7 Ogni classe deve avere un massimo di due attributi. public class Person() String first; String middle; String last; Benefici public class Person() Names givennames; Surname family; public class Surname() String family; Aiuta a trovare implementazioni più generiche. Limita responsabilità di una classe. public class Names() List<String> names; 11
26 OC #8 Ogni classe avente una collection come attributo, non deve avere nessun altro attributo. 12
27 OC #8 Ogni classe avente una collection come attributo, non deve avere nessun altro attributo. Benefici Limita le responsabilità della classe: manipolare la collezione è già una responsabilità! 12
28 OC #9 Non usare metodi setter e getter. Dire agli oggetti cosa fare in base al loro stato invece che chiedere qual è il loro stato attuale e agire di conseguenza. Object[] objects = collection.getelements(); // modifica elementi della lista... collection.setelements(objects); Bad collection.filter(...); collection.append(...); collection.map(...) OK 13
29 OC #9 Non usare metodi setter e getter. Dire agli oggetti cosa fare in base al loro stato invece che chiedere qual è il loro stato attuale e agire di conseguenza. Object[] objects = collection.getelements(); // modifica elementi della lista... collection.setelements(objects); Benefici Bad Aiuta ad associare responsabilità alle classi giuste. collection.filter(...); collection.append(...); collection.map(...) OK 13
30 Ricapitolando OC #1: Un solo livello di indentazione. OC #2: Non usare la keyword else. OC #3: Wrappare i tipi primitivi. OC #4: Un solo. per linea. OC #5: Non abbreviare. OC #6: Mantenere le classi piccole. OC #7: Limitare il numero di attributi (2). OC #8: firstclass collection. OC #9: Non usare metodi setter e getter. 14
31 Come Lavorare Test Driven Development (TDD) (Red, Green, Refactoring) Refactoring = seguire linee guida #1,..., #9 Tramite GIT dovete far vedere che avete usato questo approccio: Red - commit Green - commit Refactoring - commit Tracciare solo i file sorgenti del progetto! 15
32 Come usare GIT per l esercizio Creare un solo repository remoto per gruppo su bitbucket. Creare repo locale: $ git init Linkare repo remota: $ git remote add origin [url] Lavorare solo sul branch master Svolgere l esercizio a coppie su due pc. Ad ogni ciclo (Red, Green, Refactoring) si cambia pc e driver. Repository remoto 2. git push 3. git pull 1. git commit 4. pronto a lavorare 16
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica: Convenzioni di Stile versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
Dettagli1. MyAir. Analizzare anche i criteri funzionali
Esercizi di verifica: progettazione di casi di test usando criteri strutturali. 1. MyAir Si consideri il metodo stimalivelli, con la seguente specifica: dato un vettore di associati del club MyAir, restituisce
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliLab 4: Locks, Condition Variables in Java
Dept. of Computer Science Lab 4: Locks, Condition Variables in Java Matteo Camilli matteo.camilli@unimi.it Laboratorio di Sistemi Operativi a.a. 2015/16 Università degli Studi di Bergamo 1 Esercizi Lab3
DettagliIndice. Prefazione. 3 Oggetti e Java 53
Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware
DettagliUtilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:
1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente
DettagliXML e Windows Phone. Semplice tutorial per l'utilizzo di documenti e dati XML in un'app per Windows Phone.
Semplice tutorial per l'utilizzo di documenti e dati XML in un'app per Windows Phone. Linguaggio utilizzato: C# IDE utilizzato: Visual Studio 2010 Andreetta Stefano Argomenti trattati: Caricamento di un
DettagliAlberi Binario in Java
Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un
DettagliProgrammazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
DettagliSOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria
Sapienza - Università di Roma Facoltà di Ingegneria Requisiti Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito
DettagliA.A. 2006/2007 Laurea di Ingegneria Informatica. Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio
A.A. 2006/2007 Laurea di Ingegneria Informatica Fondamenti di C++ Horstmann Capitolo 3: Oggetti Revisione Prof. M. Angelaccio Obbiettivi Acquisire familiarità con la nozione di oggetto Apprendere le proprietà
DettagliImplementazione Java di un ADT
Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice
Dettagli24 - Possibili approfondimenti
24 - Possibili approfondimenti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliUniversità degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
Dettagli19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
DettagliModello di Implementazione
Modello di Implementazione Laboratorio di Ingegneria del Software Andrea Bei Modello di implementazione Un è costituito dall insieme dei sorgenti che implementano un Modello di Progetto Linee guida per
DettagliSTRUTTURE DATI: OLTRE GLI ARRAY LISTE
STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi
DettagliEsercitazione n 3. Capacità di analisi e di estensione di progetti esistenti Linguaggio Java:
Esercitazione n 3 Obiettivi: Capacità di analisi e di estensione di progetti esistenti Linguaggio Java: Ereditarietà delle classi Utilizzo di costruttori e metodi di superclasse Classi astratte Visibilità:
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliMetodologie di Programmazione. ovvero, Principi e Tecniche per la costruzione di programmi
Metodologie di Programmazione ovvero, Principi e Tecniche per la costruzione di programmi 1 In questo corso Sviluppo in piccolo: Tempi: mesi/uomo v.s. anni/uomo Strumenti: personal v.s. professional Programmazione
DettagliProgrammazione a Oggetti Modulo B
Programmazione a Oggetti Modulo B Design Pattern Dott. Alessandro Roncato 18/10/2011 Design Patters I Design Patters sono soluzioni di progettazione standard e ben collaudate che possono essere usate in
DettagliCatia Trubiani. Laboratorio di Ingegneria del Software a.a
Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM) - Università degli Studi
DettagliIl linguaggio Java: aggiunte in Java 1.5
.. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:
DettagliCorso di Algoritmi e Strutture Dati con Laboratorio. Tipi di dato pila e coda
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda Uno stack è una collezione di elementi ( tipo di dato astratto) che supporta le seguenti operazioni tipiche: push, pop, peek
DettagliClient - Interfaccia - Implementazione
Client - Interfaccia - Implementazione Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
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 Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO
DettagliPhoneGap Build. Adobe s cloud mobile apps packager
PhoneGap Build Adobe s cloud mobile apps packager Vittorio Maniezzo - University of Bologna - 1 PhoneGap Build (WikiPedia) PhoneGap è un framework di sviluppo mobile proposto da Adobe. Permette di sviluppare
DettagliSOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)
SAPIENZA Università di Roma Facoltà di Ingegneria Sede di Latina Corso di Laurea in Ingegneria Informatica e dell Informazione Requisiti Corso di PROGETTAZIONE DEL SOFTWARE Prof. Domenico Lembo A.A. 2008-09
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori 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
DettagliVariabili e Metodi di classe Interfacce e Package Gestione di File in Java
Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe
DettagliFondamenti di Programmazione Prof.ssa Elisa Tiezzi. Programmazione orientata a oggetti
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi Programmazione orientata a oggetti 1 Programmazione OO Concetti base: dati istruzioni Dati: variabili tipi Istruzioni: istruzioni base strutture di controllo
DettagliRiassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
DettagliProgrammazione Java Struttura di una classe, Costruttore, Riferimento this
Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento
DettagliProgrammazione 2. Introduzione al corso
Programmazione 2 Introduzione al corso Informazioni generali Sito del corso http://matematica.unipv.it/gualandi/programmazione2/ Orario lezioni: Martedi 9h00/11h00 Aula C8 o Lab. Mate Giovedi 14h00/15h00
DettagliClassi astratte e progettazione OOP Esempio: l enciclopedia degli animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
DettagliPolimorfismo per Genericità in Java
Polimorfismo per Genericità in Java Corso di Linguaggi di Programmazione ad Oggetti 1 A.A. 2003/04 A cura di Polimorfismo Polimorfismo Ad-Hoc: Overloading Un metodo può essere sovraccaricato per manifestare
DettagliSQL - Structured Query Language
SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente
DettagliProgrammazione Java Avanzata PATTERN
Programmazione Java Avanzata PATTERN Anno 2011/2012 Pattern Una soluzione progettuale generale a un problema ricorrente Elementi per il riuso di software ad oggetti Vantaggiosi e obbligatori da usare Pattern
DettagliClassi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
DettagliProgrammazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
DettagliLa classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliProgrammazione II Compitino (Vers. B)
Programmazione II Compitino (Vers. B) 17 dicembre 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi
Dettagli16 - Ereditarietà, tipi e gerarchie
16 - Ereditarietà, tipi e gerarchie 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
DettagliSommario. 1 La shell di Windows PowerShell... 1
Ringraziamenti.........................................................xix Introduzione........................................................... xxi A chi è rivolto il libro...............................................
DettagliLaboratorio di Python
Problem solving, Ricorsione, Università di Bologna 13 e 15 marzo 2013 Sommario 1 2 3 4 Errore di semantica Esercizio def vocali(s): voc='' for c in s: if c in 'aeiou': voc=voc+c return voc Cerchiamo di
DettagliEsempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
DettagliSQL Server BI Development Studio. SQL Server Business Intelligence Development Studio. Analysis Services
SQL Server Business Intelligence Development Studio Analysis Service Dutto Riccardo Analysis Services Operazioni OLAP Creazione di dimensioni Creazione e interrogazione di cubi Operazioni di Data Mining
Dettagli1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages
1 http://desvino.altervista.org JSPDynPage, componenti portale e Java Server Pages Le JSP DynPages sono un utile strumento, fornito da SAP Netweaver, per una gestione più evoluta di event handling e session
DettagliJava: loading dinamico e reflection
Java: loading dinamico e reflection Scopo del corso integrativo: Presentare le caratteristiche avanzate di Java che lo rendono un linguaggio molto flessibile pur senza rinunciare ai vantaggi di un typechecking
DettagliIntroduzione Programmazione Java
Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea
DettagliEsempio di architettura software
Esempio di architettura software Corso di Principi di Progettazione del Software, a.a. 2012/13 29 novembre 2016 Ing. Roberto Vergallo 1 Esempio di architettura software View (GUI) Action Listener Business
Dettagli5 - Istruzioni condizionali
5 - Istruzioni condizionali 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
DettagliTecnologia e Applicazioni Internet 2011/12
Tecnologia e Applicazioni Internet 2011/12 Lezione 4 - Persistenza Matteo Vaccari http://matteo.vaccari.name/ matteo.vaccari@uninsubria.it Perché usare un DB relazionale? Per l accesso concorrente ai dati
DettagliParte I - Concetti Base ESEMPIO
Informatica Nome e Cognome: Esempio Esame Programma Completo, I Turno 17/12/2015 C. I. Durate: 45 Minuti N. Matricola Questa prova contiene 32 domande. Il punteggio totale è 32. Ogni risposta corretta
Dettaglinome (lista_parametri) Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti
Università di Roma Tor Vergata L9-1 Funzioni funzioni predefinite: sqrt(x) log(x) usare queste funzioni significa: specificare il valore degli argomenti utilizzare il valore restituito quanti argomenti
DettagliProgrammazione II Compitino (Vers. B)
Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliProgrammazione. Andrea Passerini Informatica. Programmazione
Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla
DettagliRicerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5
Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare
DettagliProgrammazione Orientata agli Oggetti. Polimorfismo: Studio di caso
Programmazione Orientata agli Oggetti Polimorfismo: Studio di caso Riprendiamo il nostro studio di caso Nelle lezioni precedenti abbiamo già individuato (e rimosso) alcuni limiti del codice del nostro
DettagliCorso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 8 luglio 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
DettagliLuca Ottaviano. Everyday Git
Luca Ottaviano Everyday Git Usare Git per lo sviluppo embedded Firenze, 24 settembre 2012 Chi sono Luca Ottaviano lottaviano@develer.com @lucaotta Sviluppatore su sistemi embedded presso Develer Qt certified
DettagliCOMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002. Soluzione degli Esercizi
COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 17 Luglio 2002 degli Esercizi ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int i=0, j=0; int[][] a=b; boolean trovato=false;
DettagliINFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg borg@unive.it Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità
DettagliValori Alfanumerici. Informatica di Base -- R.Gaeta 1
Valori Alfanumerici Finora abbiamo utilizzato solo valori numerici; Se vogliamo usare valori alfanumerici (caratteri e numeri), usiamo le stringhe; In Logo le stringhe si delimitano con le parentesi quadre;
DettagliCorso di Reti di Calcolatori L-A
Università degli Studi di Bologna Facoltà di Ingegneria Corso di Reti di Calcolatori L-A Esercitazione 6 (svolta) Java RMI Luca Foschini Anno accademico 2010/2011 Esercitazione 6 1 Specifica: il Client
DettagliInformazioni sull esame e Regole per lo svolgimento dei progetti
Informazioni sull esame e Regole per lo svolgimento dei progetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliIntroduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011
13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.
DettagliControllo degli accessi
Il linguaggio Java Il controllo degli accessi alle classi ed ai membri di una classe Controllo degli accessi Accesso alle classi Accesso alle classi package package miopackage; public public class class
DettagliIntroduzione alle classi 2
Introduzione alle classi 2 Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 31 ottobre, 2001 Gino Perna Utilizzo di una classe in C++ UN ESEMPIO DI CLASSE: LO STACK Supponiamo
DettagliIL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
DettagliProva d Esame Compito A
Domanda 1 A) Si richiede di analizzare le seguenti sezioni di codice. Il candidato indichi il risultato dell esecuzione del main. public class Father { private static int counter=0; private int code; public
DettagliFondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A
Fondamenti di Programmazione Recupero Primo Parziale 30 Gennaio 2008 Traccia A Cognome: Nome: Corso di Laurea N. Matricola: Giorno non preferito per l orale (Matematici) Giorno non preferito per l orale
DettagliEsercitazione 15. Il problema dello Sleeping Barber
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazione 15 Il problema dello Sleeping Barber E dato un salone di barbiere,
DettagliPython moduli classi e qualche funzione grafica di base
Python moduli classi e qualche funzione grafica di base Loriano Storchi loriano@storchi.org http:://www.storchi.org/ I moduli I moduli sono codice sorgente, quindi una collezione di dati, funzioni e classi
DettagliProgrammazione con Java
Programmazione con Java con Eclipse Introduzione Sviluppare software è un attività umana e quindi possibilmente soggetta ad errori Tipi di errori Failure (malfunzionamento) il programma non funziona il
DettagliPlus srl :: www.conplus.it :: info@conplus.it :: Via Morgagni, 4/A 37135 Verona :: Tel. +39 045 580 491 :: Fax 045 82 78 722
PMF Web-Service Quick-Start Guide Guida Introduttiva Cliente Redatto da Francesco Buratto Redatto il 01 gennaio 2011 Riferimento PMF 2011 Introduzione PMFWS è un web-service HTTP che espone un interfaccia
DettagliMetodi di una Collection
Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare
DettagliClassi astratte e progettazione OOP Esempio: l enciclopedia degli animali. Esempio Animali
Classi astratte e progettazione OOP Esempio: l enciclopedia degli animali 1 Ereditarietà, polimorfismo e altri sporchi trucchi Facciamo un esempio che ci permette di comprendere come vengono utilizzate
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
DettagliLinguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi
Linguaggio Java Robusto Non permette costrutti pericolosi Eredità Multipla Gestione della Memoria Orientato agli oggetti Ogni cosa ha un tipo Ogni tipo è un oggetto (quasi) Protegge e gestisce dagli errori
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliOperazioni scatenanti. Nozione ed uso. Sintassi. Esempio
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: Gestione di vincoli di integrità: Per fallimento Per modifica Auditing: Sicurezza Statistiche Valori derivati
DettagliCorrado Aaron Visaggio visaggio@unisannio.it, Research Centre on Software Technology - RCOST University of Sannio Benevento, Italy
Test Driven Development in action Corrado Aaron Visaggio visaggio@unisannio.it, Research Centre on Software Technology - RCOST University of Sannio Benevento, Italy Corrado Aaron Visaggio 1 Agile Manifesto
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliIterazioni. L istruzione while. while (condition) istruzione
Iterazioni L istruzione while while (condition) istruzione Ripete l esecuzione di istruzione fino a che la condizione resta vera while (balance < targetbalance) year++; double interest = balance * rate
DettagliAlgoritmi e Strutture Dati
Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta
DettagliEsempio: Interfacce. Gioco Interfacce
Esempio: Interfacce 1 Descrizione Si supponga di avere delle carte da gioco. Ogni carta rappresenta un Personaggio che può essere di tipo o Umano o Mostro. Un Personaggio di tipo Umano ha una forza fisica
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 Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,
DettagliJava, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM
Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 20/05/2017 Nota: il codice corretto è ottenibile da quella errato
DettagliEsempio: Ogni colonna può contenere un solo tipo di dati. Colonne e righe sono numerate partendo da zero. L Header non conta nella numerazione:
JTable Cos è una JTable Una JTable è un elemento Swing che rende possibile visualizzare delle informazioni sotto forma di tabella e se necessario ne permette la modifica. Header - Nelle JTabel è possibile
DettagliPolimorfismo parametrico vs polimorfismo per inclusione
Polimorfismo parametrico vs polimorfismo per inclusione Esercizio Definire il tipo di dato Stack con operazioni Push( element ) Pop() Non forzare una specifica implementazione Non forzare un tipo specifico
DettagliLiceo Scienti*ico U.Dini PISA. PenSazionale!! A.s. 2016/17. Potenziare il programma scolastico attraverso lo sviluppo del Pensiero Computazionale
Liceo Scienti*ico U.Dini PISA PenSazionale A.s. 2016/17 Potenziare il programma scolastico attraverso lo sviluppo del Pensiero Computazionale UNA$SUGGESTIONE.$ Non%comprate%un%nuovo%videogioco,%fatene%uno.%Non%scaricate%l
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliUnit Testing. Giovanni Lagorio lagorio@disi.unige.it
Unit Testing Giovanni Lagorio lagorio@disi.unige.it Licenza Questi lucidi sono rilasciati sotto la licenza Creative Commons Attribuzione-Non commerciale-non opere derivate 3.0 Unported. Per leggere una
DettagliPILE E CODE. Pile (stack):
PILE E CODE Sono tipi di dato che consentono di rappresentare sequenze di elementi in cui gli inserimenti e le cancellazioni sono eseguiti con particolari modalita` (politiche o discipline). Pile (stack):
Dettagli