L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1"

Transcript

1 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II (Caso di studio facoltativo) Pensare a oggetti: Modello-Vista-Controllore I design pattern descrivono strategie efficaci per costruire sistemi software orientati agli oggetti affidabili. Il nostro caso di studio utilizza l architettura Modello-Vista-Controllore (Model- View-Controller, MVC), che usa diversi design pattern. MVC divide i compiti del sistema in tre parti: 1. il modello, che memorizza i dati e la logica del programma; 2. la vista (o le viste), che fornisce una presentazione visuale del modello, e 3. il controllore, che elabora l input dell utente ed esegue delle modifiche al modello. Usando il controllore, l utente cambia i dati nel modello MVC. Il modello MVC notifica poi il cambio nei dati alle viste. Le viste cambiano la propria presentazione visuale in modo da riflettere i cambiamenti nel modello MVC. Per esempio, nella nostra simulazione, l utente aggiunge un oggetto Person al modello MVC premendo i JButton First Floor o Second Floor nel controller. Il modello MVC poi notifica alla vista che è stato creato un oggetto Person. La vista, in risposta a questa notifica, visualizza una persona su un piano. Il modello MVC non sa come la vista visualizza la persona, e la vista non sa come o perché il modello MVC ha creato l oggetto Person. L architettura MVC aiuta la costruzione di sistemi affidabili e facilmente modificabili. Se volessimo usare nella simulazione dell ascensore un output basato su testo, anziché su un interfaccia grafica, potremmo creare una vista alternativa che produce output testuale, senza alterare il modello MVC o il controllore. Potremmo anche fornire una vista tridimensionale che usa una prospettiva in prima persona per permettere all utente di partecipare alla simulazione; tali viste vengono comunemente usate in sistemi di realtà virtuale. L applicazione di MVC alla simulazione di ascensore Applichiamo ora l architettura MVC alla nostra simulazione di ascensore. Ogni diagramma UML che abbiamo fornito fino a questo punto modella una porzione del modello MVC del nostro sistema d ascensori. La figura 3.21 mostra un modello UML di alto livello della simulazione. La classe ElevatorCaseStudy una sottoclasse di JFrame aggrega un istanza per ciascuna delle classi ElevatorSimulation, ElevatorView e ElevatorController per creare l applicazione ElevatorCaseStudy. In UML, un rettangolo con l angolo superiore destro ripiegato rappresenta una nota. In questo caso, ogni nota punta ad una classe specifica (con una line tratteggiata), e descrive il suo ruolo nel sistema. Le classi ElevatorSimulation, ElevatorView e ElevatorController incapsulano tutti gli oggetti che comprendono le porzioni del nostro simulatore che descrivono rispettivamente il modello, la vista e il controllore. La classe ElevatorSimulation è un aggregazione di diverse classi (ad esempio, ElevatorShaft, Elevator e Floor). Per risparmiare spazio, non modelliamo questa aggregazione nella figura Anche la classe ElevatorView è un aggregazione di diverse classi: per mostrarle, espanderemo il modello UML di ElevatorView nella sezione 8.7. La classe ElevatorController rappresenta il controllore della simulazione. Notate che la classe ElevatorView implementa l interfaccia ElevatorSimulationListener, che permette a ElevatorView di ricevere eventi dal modello MVC.

2 2 CAPITOLO 3 javax.swing.jframe Applicazione ElevatorCaseStudy ElevatorSimulationListener 1 ElevatorSimulation ElevatorView 1 1 ElevatorController Modello MVC Vista Controllore Figura 3.21 Diagramma di classe della simulazione d ascensore Ingegneria del Software 3.1 Quando appropriato, dividete un modello UML in più diagrammi più piccoli, in modo che ogni diagramma rappresenti un certo sottosistema. La classe ElevatorCaseStudy non contiene attributi, a parte i suoi riferimenti ad un oggetto ElevatorSimulation, ad un oggetto ElevatorView e ad un oggetto ElevatorController. Il solo comportamento della classe ElevatorCaseStudy è far partire il programma: quindi, in Java, la classe ElevatorCaseStudy deve contenere un metodo statico main che istanzia un oggetto ElevatorCaseStudy, che a sua volta istanzia gli oggetti ElevatorSimulation, ElevatorView e ElevatorController. Implementeremo la classe ElevatorCaseStudy più avanti in questa sezione. Manufatti La figura 3.21 ci aiuta a progettare un altro aspetto del nostro sistema: i manufatti. La figura modella i pezzi, chiamati manufatti, di cui il sistema ha bisogno per eseguire i propri compiti. Questi pezzi comprendono programmi eseguibili, file.class, file sorgente.java, immagini, risorse, ecc. Nella figura 3.22, ogni rettangolo modella un manufatto. Il nostro sistema controlla cinque manufatti: ElevatorCaseStudy.class, ElevatorCaseStudy.java, ElevatorSimulation.java, ElevatorView.java ed ElevatorController.java. Nella figura 3.22, gli elementi grafici che assomigliano a delle cartelle (rettangoli con eitchette nella parte superiore sinistra) rappresentano dei package nel linguaggio UML (da non confondere con i package Java). Possiamo raggruppare classi, oggetti, manufatti, casi di utilizzo, ecc. in package. In questo diagramma (e nel resto del nostro caso di studio), i package UML corrispondono a package Java. Nella nostra discussione, useremo un tipo di carattere Courier minuscolo grassetto per i nomi dei package. I package nel nostro sistema sono model (contiene le classi del modello MVC), view (contiene le classi relative alla vista), e controller (contiene le classi relative al controllore). Il manufatto ElevatorCaseStudy.java contiene

3 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 3 «executable» ElevatorCaseStudy.class «compilation» model «file» ElevatorSimulation.java «imports» ElevatorSimulation- Listener view «file» ElevatorCaseStudy.java «imports» «file» ElevatorView.java «imports» controller «file» ElevatorController.java Figura 3.22 Manufatti della simulazione di ascensore un istanza di ognuno dei manufatti in questi package. Attualmente, ogni package contiene un solo manufatto, ovvero un file.java. Il package model contiene ElevatorSimulation.java, il package view contiene ElevatorView.java e il package controller contiene ElevatorController.java. Aggiungeremo manufatti ad ogni package quando implementeremo le varie classi del nostro modello UML come manufatti (file.java). Ogni freccia tratteggiata nella figura 3.22 indica una dipendenza tra manufatti, in cui la direzione della freccia indica la relazione dipende da. Una dipendenza descrive la relazione tra manufatti in cui i cambiamenti in un manufatto influiscono su un altro manufatto. Per esempio, il manufatto ElevatorCaseStudy.class dipende dal manufatto ElevatorCaseStudy.java, perché un cambiamento di ElevatorCaseStudy.java, al momento della compilazione, influisce su ElevatorCaseStudy.class. L oggetto ElevatorController contiene un riferimento all oggetto ElevatorSimulation. Quindi, ElevatorController.java dipende da ElevatorSimulation.java. Secondo la figura 3.22, ElevatorSimulation.java e ElevatorView.java non dipendono uno dall altro; essi comunicano attraverso l interfaccia ElevatorSimulationListener, che implementa tutte le interfacce nella simulazione. ElevatorView.java realizza l interfaccia ElevatorSimulationListener, e ElevatorSimulation.java dipende dall interfaccia ElevatorSimulationListener. La figura 3.22 contiene diversi stereotipi. Abbiamo parlato dello stereotipo <<JavaInterface>> nella sezione 1.9. Lo stereotipo <<compilation>> descrive la dipendenza tra ElevatorCaseStudy.class e ElevatorCaseStudy.java: ElevatorCaseStudy.java viene compilato in ElevatorCaseStudy.class. Lo stereotipo <<executable>> specifica che un

4 4 CAPITOLO 3 manufatto è un applicazione, e lo stereotipo <<file>> specifica che un manufatto è un file contenente codice sorgente per l eseguibile. Implementare il controllore La nostra simulazione implementa entrambi i casi di utilizzo Crea Persona e Riposiziona Persona. Implementiamo ora il caso di utilizzo Crea Persona attraverso un interfaccia utente grafica. Implementiamo la nostra interfaccia nella classe ElevatorController (figura 3.23), che è una sottoclasse di JPanel contenente due oggetti JButton: firstcontrollerbutton (riga 19) e secondcontrollerbutton (riga 20). Ogni JButton corrisponde a un piano su cui un oggetto Person viene posto (se il palazzo avesse 100 piani, chiaramente questa soluzione sarebbe poco funzionale; si potrebbe invece specificare il piano per mezzo di un campo di testo). Le righe istanziano questi pulsanti e li aggiungono a ElevatorController. 1 // ElevatorController.java 2 // Controllore per la simulazione d ascensore 3 package com.deitel.jhtp5.elevator.controller; 4 5 import java.awt.*; 6 import java.awt.event.*; 7 8 import javax.swing.*; 9 10 // package Deitel 11 import com.deitel.jhtp5.elevator.model.*; 12 import com.deitel.jhtp5.elevator.event.*; 13 import com.deitel.jhtp5.elevator.elevatorconstants; public class ElevatorController extends JPanel 16 implements ElevatorConstants { // il controllore contiene due JButton 19 private JButton firstcontrollerbutton; 20 private JButton secondcontrollerbutton; // riferimento al modello 23 private ElevatorSimulation elevatorsimulation; public ElevatorController( ElevatorSimulation simulation ) 26 { 27 elevatorsimulation = simulation; 28 setbackground( Color.white ); // aggiunge il primo pulsante al controllore 31 firstcontrollerbutton = new JButton( First Floor ); 32 add( firstcontrollerbutton ); // aggiunge il secondo pulsante al controllore 35 secondcontrollerbutton = new JButton( Second Floor ); 36 add( secondcontrollerbutton ); Figura 3.23 La classe ElevatorController che elabora l input dell utente (continua)

5 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II // classe interna anonima registrata per ActionEvents dal 39 // primo JButton del controllore 40 firstcontrollerbutton.addactionlistener( 41 new ActionListener() { // invocato quando viene premuto un JButton 44 public void actionperformed( ActionEvent event ) 45 { 46 // aggiunge Person al primo piano 47 elevatorsimulation.addperson( 48 FIRST_FLOOR_NAME ); // disabilita input dell utente 51 firstcontrollerbutton.setenabled( false ); 52 } 53 } // fine classe interna anonima 54 ); // classe interna anonima registrata per ActionEvents dal 57 // secondo JButton del controllore 58 secondcontrollerbutton.addactionlistener( 59 new ActionListener() { // invocato quando viene premuto un JButton 62 public void actionperformed( ActionEvent event ) 63 { 64 // aggiunge Person al secondo piano 65 elevatorsimulation.addperson( 66 SECOND_FLOOR_NAME ); // disabilita input dell utente 69 secondcontrollerbutton.setenabled( false ); 70 } 71 } // fine classe interna anonima 72 ); // classe interna anonima che permette input dell utente su 75 // Floor se un oggetto Person entra in Elevator su quel piano 76 elevatorsimulation.addpersonmovelistener( 77 new PersonMoveListener() { // invocato quando Person entra in Elevator 80 public void personentered( 81 PersonMoveEvent event ) 82 { 83 // ottiene il piano di partenza 84 String location = 85 event.getlocation().getlocationname(); // abilita il primo JButton se si parte dal primo piano Figura 3.23 La classe ElevatorController che elabora l input dell utente (continua)

6 6 CAPITOLO 3 88 if ( location.equals( FIRST_FLOOR_NAME ) ) 89 firstcontrollerbutton.setenabled( true ); // abilita il primo JButton se si parte dal secondo piano 92 else 93 secondcontrollerbutton.setenabled( true ); } // fine metodo personentered // altri metodi che implementano PersonMoveListener 98 public void personcreated( 99 PersonMoveEvent event ) {} public void personarrived( 102 PersonMoveEvent event ) {} public void personexited( 105 PersonMoveEvent event ) {} public void persondeparted( 108 PersonMoveEvent event ) {} public void personpressedbutton( 111 PersonMoveEvent event ) {} } // fine classe interna anonima 114 ); 115 } // fine costruttore di ElevatorController 116 } Figura 3.23 La classe ElevatorController che elabora l input dell utente La riga 23 della classe ElevatorController dichiara un riferimento a ElevatorSimulation, perché ElevatorController permette all utente di interagire con il modello. Le righe e dichiarano due oggetti ActionListener anonimi e li registrano presso firstfloorcontrollerbutton e secondfloorcontrollerbutton, rispettivamente, per eventi ActionEvent. Quando l utente preme uno qualsiasi dei JButton, le righe e dei metodi actionperformed chiamano il metodo addperson di ElevatorSimulation, che istanzia un oggetto Person in ElevatorSimulation sul piano specificato. Il metodo addperson prende come argomento una stringa dichiarata nell interfaccia ElevatorConstants (figura 3.24). Quest interfaccia, usata ad esempio dalle classi ElevatorController, ElevatorSimulation, Elevator, Floor ed ElevatorView, fornisce delle costanti che specificano i nomi degli oggetti Location nella nostra simulazione. Le righe 51 e 69 dei metodi actionperformed disabilitano i rispettivi JButton per impedire che l utente crei più di una persona per piano. Le righe della classe ElevatorController dichiarano un oggetto PersonMoveListener anonimo che si registra presso ElevatorSimulation per ri-abilitare i JButton. Il metodo personentered (righe 80-95) di PersonMoveListener ri-abilita il JButton associato con il piano servito dall ascensore: dopo che la persona è entrata nell ascensore, l utente può posizionare un altra persona sul medesimo piano.

7 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 7 Il metodo personentered di PersonMoveListener impedisce all utente di creare più di una persona per piano: pertanto, l attributo capacity (ereditato dalle classi Elevator e Floor dalla superclasse Location) non è più necessario. La figura 3.25 mostra il diagramma di classe modificato che tiene conto della rimozione di questo attributo. Implementazione: ElevatorCaseStudy.java Usando i diagrammi delle figure 3.22, 3.21 e 2.28, implementiamo ElevatorCaseStudy (figura 3.26). Le righe importano i package model, view e controller come specificato nella figura // ElevatorCaseStudy.java 2 // Applicazione simulazione di ascensore con MVC 3 package com.deitel.jhtp5.elevator; 4 1 // ElevatorConstants.java 2 // Costanti usate tra between ElevatorModel e ElevatorView 3 package com.deitel.jhtp5.elevator; 4 5 public interface ElevatorConstants { 6 7 public static final String FIRST_FLOOR_NAME = firstfloor ; 8 public static final String SECOND_FLOOR_NAME = secondfloor ; 9 public static final String ELEVATOR_NAME = elevator ; 10 } Figura 3.24 L interfaccia ElevatorConstants che fornisce le costanti per i nomi degli oggetti Location Location - locationname : String # setlocationname( String ) : void + getlocationname( ) : String + getbutton( ) : Button + getdoor( ) : Door Elevator - moving : Boolean = false - summoned : Boolean = false - currentfloor : Location - destinationfloor : Location - traveltime : Integer = 5 + ride( ) : void + requestelevator( ) : void + enterelevator( ) : void + exitelevator( ) : void + departelevator( ) : void + getbutton( ) : Button + getdoor( ) : Door Floor + getbutton( ) : Button + getdoor( ) : Door Figura 3.25 Diagramma di classe modificato che mostra la generalizzazione della superclasse Location e delle sottoclassi Elevator e Floor

8 8 CAPITOLO 3 5 // package Java di base 6 import java.awt.*; 7 8 // package Java di estensione 9 import javax.swing.*; // package Deitel 12 import com.deitel.jhtp5.elevator.model.*; 13 import com.deitel.jhtp5.elevator.view.*; 14 import com.deitel.jhtp5.elevator.controller.*; public class ElevatorCaseStudy extends JFrame { // modello, vista e controllore 19 private ElevatorSimulation model; 20 private ElevatorView view; 21 private ElevatorController controller; // il costruttore istanzia modello, vista e controllore 24 public ElevatorCaseStudy() 25 { 26 super( Deitel Elevator Simulation ); // istanzia modello, vista e controllore 29 model = new ElevatorSimulation(); 30 view = new ElevatorView(); 31 controller = new ElevatorController( model ); // registra la vista per gli eventi del modello 34 model.setelevatorsimulationlistener( view ); // aggiunge view e controller a ElevatorSimulation 37 getcontentpane().add( view, BorderLayout.CENTER ); 38 getcontentpane().add( controller, BorderLayout.SOUTH ); } // fine costruttore di ElevatorSimulation // metodo main per far partire il programma 43 public static void main( String args[] ) 44 { 45 // istanzia ElevatorSimulation 46 ElevatorCaseStudy casestudy = new ElevatorCaseStudy(); 47 casestudy.setdefaultcloseoperation( EXIT_ON_CLOSE ); 48 casestudy.pack(); 49 casestudy.setvisible( true ); 50 } 51 } Figura 3.26 La classe ElevatorCaseStudy è l applicazione per la simulazione di ascensore

9 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 9 La figura 3.21 specifica che la classe ElevatorCaseStudy è una sottoclasse di JFrame: quindi, la riga 16 dichiara la classe ElevatorCaseStudy come una classe public che estende JFrame. Le righe implementano l aggregazione delle classi ElevatorSimulation, ElevatorView ed ElevatorController (vedi figura 3.21) nella classe ElevatorCaseStudy, dichiarando un oggetto per ciascuna classe. Le righe del costruttore di ElevatorCaseStudy inizializzano questi oggetti. Le figure 3.21 e 3.22 specificano che ElevatorView è un ElevatorSimulationListener per ElevatorSimulation. La riga 34 registra ElevatorView come ascoltatore per ElevatorSimulation, in modo che ElevatorView possa ricevere eventi da ElevatorSimulation e rappresentare lo stato del modello in modo appropriato. Le righe aggiungono ElevatorView ed ElevatorController a ElevatorCaseStudy. Secondo gli stereotipi nella figura 3.22, ElevatorCaseStudy.java viene compilato in ElevatorCaseStudy.class, che è eseguibile: le righe forniscono il metodo main che esegue l applicazione.

Identificare le classi in un sistema

Identificare le classi in un sistema 3.7 (Caso di studio facoltativo) Pensare a oggetti: identificare le classi nella specifica del problema Cominciamo ad affrontare la progettazione del simulatore di ascensore introdotto nel capitolo. Iniziamo

Dettagli

La specifica del problema

La specifica del problema 2.9 (Caso di studio facoltativo) Pensare a oggetti: esame del problema Iniziamo ora a esaminare il nostro caso di studio di progettazione e implementazione orientate agli oggetti. Le sezioni Pensare a

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 B1 Gestione eventi 1 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti AWT o Swing Programmazione ad eventi 2 1 Introduzione Le interfacce create

Dettagli

Prova di Laboratorio di Programmazione

Prova 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

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione 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:

Dettagli

Elementi di UML (7): Diagrammi dei componenti e di deployment

Elementi di UML (7): Diagrammi dei componenti e di deployment Elementi di UML (7): Diagrammi dei componenti e di deployment Università degli Studi di Bologna Facoltà di Scienze MM. FF. NN. Corso di Laurea in Scienze di Internet Anno Accademico 2004-2005 Laboratorio

Dettagli

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012

Esercitazioni di PROGETTAZIONE DEL SOFTWARE A.A. 2011-2012 Sapienza Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica Corso di Laurea in Ingegneria dei Sistemi Informatici

Dettagli

Programmazione a Oggetti Lezione 10. Ereditarieta

Programmazione 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

Dettagli

Grafico della parabola

Grafico 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

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - 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,

Dettagli

UML Diagrammi delle classi. UML Diagramma classi 1

UML 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

Dettagli

14 - 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 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

Dettagli

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame(Finestra); // crea frame invisibile I Canvas Tra i vari contenitori Java il Canvas (area di disegno o tela) è una semplice superficie di disegno particolarmente utile per visualizzare immagini o per effettuare altre operazioni grafiche.

Dettagli

15 - 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 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

Dettagli

3 - 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 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

Dettagli

Esercizi della lezione 5 di Java

Esercizi 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

Dettagli

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Reflection 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

Dettagli

Object Oriented Software Design

Object 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

Dettagli

Modellazione dei dati in UML

Modellazione dei dati in UML Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):

Dettagli

Object Oriented Programming

Object 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

Dettagli

Tipi 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. 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

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - 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/

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Programmare in Java. Olga Scotti

Programmare in Java. Olga Scotti Programmare in Java Olga Scotti Linguaggi di programmazione linguaggio macchina assembler linguaggi ad alto livello Linguaggi ad alto livello istruzioni comprensibili linguaggio simile a quello naturale

Dettagli

Alcuni Design Pattern in Java

Alcuni Design Pattern in Java Marco Faella Alcuni Design Pattern in Java basato su Progettazione del Software e Design Pattern in Java, di Cay Horstmann Pattern ITERATOR Contesto: 1) Un oggetto (aggregato) contiene altri oggetti (elementi)

Dettagli

Programmazione a Oggetti Modulo B

Programmazione 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

Dettagli

Parola chiave extends

Parola 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

Dettagli

L interfaccia grafica in Java

L interfaccia grafica in Java L interfaccia grafica in Java Java possiede due package per la creazione di interfacce grafiche java.awt javax.swing AWT (Abstract Widget Toolkit) presente già in Java 1.0, migliorato in Java 1.1. Invariato

Dettagli

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Java: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

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 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

Dettagli

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

I 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

Dettagli

Programmazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)

Programmazione 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à

Dettagli

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).

Dettagli

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Relazioni 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

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli

Programmazione in Java Parte I: Fondamenti

Programmazione in Java Parte I: Fondamenti Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella Riferimenti Testi consigliati: Progettazione del software e design pattern in Java di C.S. Horstmann Apogeo Gli esempi di codice

Dettagli

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse Prova Finale a.a. 2011/2012 Laboratorio 1: Introduzione a Java e Eclipse 1 Java 6 Standard Edition Linguaggio Java (... (javac, Tool di sviluppo Librerie per l'interfaccia grafica Librerie di base Macchina

Dettagli

Progettazione : Design Pattern Creazionali

Progettazione : 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

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

Metodologie 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

Dettagli

Esercitazione sui Design Pattern

Esercitazione sui Design Pattern Esercitazione sui Design Pattern Pattern Creazionali Singleton Permette la creazione di una sola istanza della classe all interno dell applicazione Fornisce un metodo con cui ottenere l istanza Il costruttore

Dettagli

Modulo 4: Ereditarietà, interfacce e clonazione

Modulo 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

Dettagli

Corso di Informatica

Corso 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

Dettagli

Eventi di azione. // con interfaccia per eventi di azione

Eventi di azione. // con interfaccia per eventi di azione Eventi di azione (Interfaces ActionListener, Classes ActionEvent) Sono generati quando si premono bottoni, si selezionano voci di menù, si preme invio mentre si scrive in un campo di testo. In awt sono

Dettagli

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Le basi della programmazione ad oggetti: per costruire in modo adeguato una applicazione basata sulla programmazione ad oggetti occorre

Dettagli

Programmazione Java: Interfacce grafiche (GUI)

Programmazione Java: Interfacce grafiche (GUI) Programmazione Java: Interfacce grafiche (GUI) romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp ( 1 ) (GUI) Interfacce grafiche Rendere facili le cose semplici e possibili le cose difficili

Dettagli

Linguaggi 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. 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

Dettagli

Guida all uso di Java Diagrammi ER

Guida 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

Dettagli

Realizzazione di una classe con un associazione

Realizzazione 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

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto 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

Dettagli

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page» Scaletta Estensioni UML per il Web Michele Zennaro 14-05-2004 Le applicazioni web Scopo di un estensione UML per il web Due punti di vista Uno più astratto Uno più vicino ai file fisici conclusivo Commenti

Dettagli

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Uso 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

Dettagli

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Le basi della grafica in Java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni Le basi della grafica in Java Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni Elaborazione classica o imperativa L elaborazione è concentrata nel momento centrale, durante

Dettagli

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Java Applet. 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 Java Applet 1 Application VS Applet Una

Dettagli

Corso di Informatica

Corso 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

Dettagli

Strumenti di modellazione. Gabriella Trucco

Strumenti di modellazione. Gabriella Trucco Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell

Dettagli

Programmi e Oggetti Software

Programmi e Oggetti Software Corso di Laurea Ingegneria Civile Elementi di Informatica Programmi e Oggetti Software Settembre 2006 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il punto di

Dettagli

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06

Raffaella Brighi, a.a. 2005/06. Eventi e listener. Corso di Laboratorio II. A.A. 2005-06 Raffaella Brighi, a.a. 2005/06 Eventi e listener Corso di Laboratorio II. A.A. 2005-06 Eventi e listener Un evento è un oggetto che rappresenta il verificarsi di un azione dell utente o del sistema(es

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Interazioni col mondo: eventi

Interazioni col mondo: eventi Interazioni col mondo: eventi Le interazioni di una GUI con il mondo esterno sono segnalate tramite eventi: click del mouse, inserimento di testo, selezione/attivazione... Gli eventi che memorizzano queste

Dettagli

Controllo degli accessi

Controllo 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

Dettagli

SOMMARIO... 3 INTRODUZIONE...

SOMMARIO... 3 INTRODUZIONE... Sommario SOMMARIO... 3 INTRODUZIONE... 4 INTRODUZIONE ALLE FUNZIONALITÀ DEL PROGRAMMA INTRAWEB... 4 STRUTTURA DEL MANUALE... 4 INSTALLAZIONE INRAWEB VER. 11.0.0.0... 5 1 GESTIONE INTRAWEB VER 11.0.0.0...

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida Breve introduzione curata da Alessandro Benedetti Struts2-Introduzione e breve guida 22-11- 2008 1 Struts 2 Costruisci,attiva e mantieni! Apache Struts 2 è un framework elegante ed estensibile per creare

Dettagli

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)

Esercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010) Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica, Ingegneria dei Sistemi Informatici Esercitazioni

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti 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

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione 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

Dettagli

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD La prima applicazione Java con NetBeans IDE Dott. Ing. M. Banci, PhD Creare la prima applicazione 1. Creare un progetto: Quando si crea un progetto IDE occorre creare un ambiente nel quale costruire e

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni

Dettagli

Strutturazione logica dei dati: i file

Strutturazione 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

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Introduzione all uso di Eclipse

Introduzione all uso di Eclipse Introduzione all uso di Eclipse Daniela Micucci Programmazione Outline Eclipse: concetti generali Definire un workspace Creare un project Importare un file Utilizzo 1 Introduzione Eclipse è un ambiente

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corsi di Laurea in Ingegneria Informatica ed Automatica ed Ingegneria

Dettagli

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo Creazione di moduli Creazione di moduli Che cos'è un modulo? Un elenco di domande accompagnato da aree in cui è possibile scrivere le risposte, selezionare opzioni. Il modulo di un sito Web viene utilizzato

Dettagli

Traccia di soluzione dell esercizio del 25/1/2005

Traccia 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

Dettagli

Diagrammi dei package

Diagrammi dei package Diagrammi dei package Package Meccanismo di raggruppamento di più classi (riferito al momento della compilazione) in unità di livello più alto, al fine di dominare la complessità strutturale di un sistema

Dettagli

Main System Monitor Keyboard

Main 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

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione 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)

Dettagli

Architettura MVC-2: i JavaBeans

Architettura 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

Dettagli

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html. Outline Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 http://polaris.ing.unimo.it/fic/laboratorio.html Ing. Francesco De Mola demola.francesco@unimore.it DII, Modena Via Vignolese (lab. Dottorandi

Dettagli

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Linguaggio 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

Dettagli

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.

Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche. Testo Esercizio Un negozio di musica vende anche libri e riviste musicali. Si intende automatizzare l intero processo, dall approvvigionamento alla vendita. Si analizzino i requisiti e se ne rappresentino

Dettagli

Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:

Uno 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

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Installazione SOFTWARE JDK ECLIPSE 03/03/2011 2 ALGORITMI E PROGRAMMI PROBLEMA ALGORITMO PROGRAMMA metodo risolutivo linguaggio di

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

La struttura dati ad albero binario

La 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,

Dettagli

Android. Implementare una interfaccia utente

Android. Implementare una interfaccia utente Android Implementare una interfaccia utente Introduzione In questa lezione vedremo come implementare una interfaccia utente sullo schermo di Android. Vedremo gli elementi di base visualizzabili sullo schermo

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione 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

Dettagli

I file di dati. Unità didattica D1 1

I 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à

Dettagli

La 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 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.

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

DESIGN PATTERNS Parte 6. State Proxy

DESIGN 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

Dettagli

Gestione degli eventi in Java

Gestione degli eventi in Java Gestione degli eventi in Java package java.awt.event.* Il modello degli eventi I componenti dell awt generano eventi in seguito alle azioni dell utente movimento del mouse click pressione di un tasto etc.

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Siti interattivi e dinamici. in poche pagine

Siti interattivi e dinamici. in poche pagine Siti interattivi e dinamici in poche pagine 1 Siti Web interattivi Pagine Web codificate esclusivamente per mezzo dell HTML non permettono alcun tipo di interazione con l utente, se non quella rappresentata

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE 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

Dettagli

GESTIONE DEI PROCESSI

GESTIONE 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

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B

LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B LABORATORIO DI PROGRAMMAZIONE 2012 2013 EDIZIONE 1, TURNO B 23.XI.2012 VINCENZO MARRA Indice Esercizio 1 1 Menu 1 Tempo: 35 min. 2 Commento 1 2 Esercizio 2 2 Ordinamento e ricerca binaria con la classe

Dettagli