LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 1

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 1"

Transcript

1 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI (Caso di studio facoltativo) Pensare a oggetti: animazioni e suoni nella vista Questo caso di studio si è focalizzato principalmente sul modello MVC della nostra simulazione di ascensore. Ora che abbiamo completato la progettazione del modello, ci occupiamo della vista, che fornisce la presentazione visiva del modello. Nel nostro caso di studio, la vista, incapsulata nella classe ElevatorView, è un oggetto JPanel contenente altri oggetti JPanel figli, ognuno rappresentante un oggetto unico del modello MVC (per esempio, un oggetto Person, un oggetto Button, ecc.). La classe ElevatorView è la classe più grande nel caso di studio. In questa sezione, discutiamo le classi per la grafica e il suono usate da ElevatorView. Presenteremo e spiegheremo il resto del codice sul sito Web /allegati/. Nella sezione 3.7 del volume Tecniche di base, abbiamo costruito il diagramma di classe del nostro modello individuando sostantivi e frasi dalla specifica del problema. Abbiamo ignorato parecchi di questi sostantivi, perché non erano associati con il modello MVC. Ora, elenchiamo i sostantivi e le frasi che sono relativi alla visualizzazione del modello MVC: visualizzazione audio musica dell ascensore. Il sostantivo visualizzazione corrisponde alla vista, o alla presentazione visuale, del modello MVC. Come descritto nella sezione 2.7, la classe ElevatorView aggrega diverse classi. Il sostantivo audio si riferisce agli effetti sonori che la nostra simulazione genera quando accadono varie azioni; creeremo la classe SoundEffects per generare tali effetti sonori. La frase musica dell ascensore si riferisce alla musica che viene riprodotta quando una persona viaggia sull ascensore; useremo la classe SoundEffects anche per riprodurre questa musica. La vista visualizza gli oggetti del modello MVC. Creeremo la classe ImagePanel per rappresentare gli oggetti stazionari del modello, come ElevatorShaft. Creeremo la classe MovingPanel, che estende ImagePanel, per rappresentare gli oggetti in movimento, come Elevator. Infine, creeremo la classe AnimatedPanel, che estende MovingPanel, per rappresentare gli oggetti in movimento la cui immagine corrispondente cambia continuamente, come Person (useremo diverse immagini per mostrare la persona che cammina e preme un pulsante). Usando queste classi, presentiamo il diagramma di classe della vista per la nostra simulazione nella figura 8.5. Le note indicano i ruoli che hanno le classi nel sistema. Secondo il diagramma di classe, la classe ElevatorView rappresenta la vista, le classi ImagePanel, MovingPanel e AnimatedPanel si riferiscono alla grafica e la classe SoundEffects si riferisce ai suoni. La classe ElevatorView contiene diverse istanze delle classi ImagePanel, MovingPanel e AnimatedPanel e un istanza della classe SoundEffects. Nella versione finale del caso di studio, assoceremo ogni oggetto del modello con una classe corrispondente nella vista. In questa sezione, discutiamo le classi ImagePanel, MovingPanel e AnimatedPanel per spiegare la grafica e le animazioni. Poi, discuteremo la classe SoundEffects per spiegare le funzionalità audio.

2 2 CAPITOLO 8 ImagePanel 1..* javax.swing.jpanel 1 MovingPanel 1..* 1 1 ElevatorView 1 Audio AnimatedPanel 1..* 1 SoundEffects Grafica Vista Figura 8.5 Diagramma di classe della vista del simulatore di ascensore ImagePanel La classe ElevatorView usa oggetti di sottoclassi di JPanel per rappresentare e visualizzare ogni oggetto nel modello (come Elevator, Person, ecc.). La classe ImagePanel (figura 8.6) è una sottoclasse di JPanel in grado di visualizzare un immagine in una data posizione dello schermo. La classe ElevatorView usa oggetti ImagePanel per rappresentare oggetti immobili nel modello, come ElevatorShaft e i due Floor. La classe ImagePanel contiene un attributo intero, ID (riga 16), che dichiara un identificatore unico per tenere traccia dell ImagePanel nella vista. Ciò è utile quando diversi oggetti della stessa classe sono presenti nel modello, come diversi oggetti Person. La classe ImagePanel contiene l oggetto position della classe Point2D.Double (riga 19) per rappresentare la sua posizione sullo schermo. Vedremo più avanti che MovingPanel, che estende ImagePanel, dichiara la velocità con valori double. Convertiremo le coordinate position in valori int per posizionare l oggetto ImagePanel sullo schermo (Java rappresenta le coordinate dello schermo come interi) nel metodo setposition (righe 90-94). La classe ImagePanel contiene anche un oggetto ImageIcon chiamato imageicon (riga 22), il cui metodo paintcomponent (righe 54-60) visualizza l icona sullo schermo. Le righe inizializzano ImageIcon usando un parametro stringa che contiene il nome dell immagine. Infine, la classe ImagePanel contiene l oggetto panelchildren della classe Set (riga 25) che memorizza tutti gli oggetti JPanel figli (o oggetti di una sottoclasse di JPanel). Gli oggetti figli vengono visualizzati sopra il loro ImagePanel genitore: per esempio, un oggetto Person dentro un Elevator. Il primo metodo add (righe 63-67) aggiunge un oggetto a panelchildren. Il secondo metodo add (righe 70-74) inserisce un oggetto in panelchildren all indice specificato. Il metodo seticon (righe 84-87) imposta imageicon con una nuova immagine. Gli oggetti della classe AnimatedPanel usano ripetutamente il metodo seticon per cambiare l immagine visualizzata, in modo da eseguire l animazione.

3 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 3 1 // ImagePanel.java 2 // sottoclasse di JPanel per posizionare e visualizzare ImageIcon 3 package com.deitel.jhtp5.elevator.view; 4 5 // package Java di base Java 6 import java.awt.*; 7 import java.awt.geom.*; 8 import java.util.*; 9 10 // package Java di estensione 11 import javax.swing.*; public class ImagePanel extends JPanel { // identificatore 16 private int ID; // posizione sullo schermo 19 private Point2D.Double position; // imageicon da disegnare sullo schermo 22 private ImageIcon imageicon; // memorizza tutti i figli di ImagePanel 25 private Set panelchildren; // costruttore che inizializza posizione e immagine 28 public ImagePanel( int identifier, String imagename ) 29 { 30 super( null ); // specifica layout null 31 setopaque( false ); // rende trasparente // imposta identificatore unico 34 ID = identifier; // imposta posizione 37 position = new Point2D.Double( 0, 0 ); 38 setlocation( 0, 0 ); // crea ImageIcon con imagename dato 41 imageicon = new ImageIcon( 42 getclass().getresource( imagename ) ); Image image = imageicon.getimage(); 45 setsize( 46 image.getwidth( this ), image.getheight( this ) ); // crea Set per memorizzare i figli di Panel Figura 8.6 La classe ImagePanel rappresenta e visualizza un oggetto immobile del modello (continua)

4 4 CAPITOLO 8 49 panelchildren = new HashSet(); } // fine costruttore di ImagePanel // disegna Panel sullo schermo 54 public void paintcomponent( Graphics g ) 55 { 56 super.paintcomponent( g ); // se l immagine è pronta, disegnala sullo schermo 59 imageicon.painticon( this, g, 0, 0 ); 60 } // aggiunge figlio di ImagePanel a ImagePanel 63 public void add( ImagePanel panel ) 64 { 65 panelchildren.add( panel ); 66 super.add( panel ); 67 } // aggiunge figlio di ImagePanel a ImagePanel all indice dato 70 public void add( ImagePanel panel, int index ) 71 { 72 panelchildren.add( panel ); 73 super.add( panel, index ); 74 } // rimuove figlio di ImagePanel da ImagePanel 77 public void remove( ImagePanel panel ) 78 { 79 panelchildren.remove( panel ); 80 super.remove( panel ); 81 } // imposta ImageIcon corrente da visualizzare 84 public void seticon( ImageIcon icon ) 85 { 86 imageicon = icon; 87 } // imposta posizione sullo schermo 90 public void setposition( double x, double y ) 91 { 92 position.setlocation( x, y ); 93 setlocation( ( int ) x, ( int ) y ); 94 } // ritorna identificatore di ImagePanel Figura 8.6 La classe ImagePanel rappresenta e visualizza un oggetto immobile del modello (continua)

5 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 5 97 public int getid() 98 { 99 return ID; 100 } // ottiene posizione di ImagePanel 103 public Point2D.Double getposition() 104 { 105 return position; 106 } // ottiene imageicon 109 public ImageIcon getimageicon() 110 { 111 return imageicon; 112 } // ottiene Set di figli di ImagePanel 115 public Set getchildren() 116 { 117 return panelchildren; 118 } 119 } Figura 8.6 La classe ImagePanel rappresenta e visualizza un oggetto immobile del modello MovingPanel La classe MovingPanel (figura 8.7) è una sottoclasse di ImagePanel in grado di cambiare la sua posizione sullo schermo in base ai valori xvelocity e yvelocity (righe 20-21). La classe ElevatorView usa oggetti MovingPanel per rappresentare oggetti mobili del modello, come Elevator. 1 // MovingPanel.java 2 // Sottoclasse di JPanel con funzionalità di movimento sullo schermo 3 package com.deitel.jhtp5.elevator.view; 4 5 // package Java di base 6 import java.awt.*; 7 import java.awt.geom.*; 8 import java.util.*; 9 10 // package Java di estensione 11 import javax.swing.*; public class MovingPanel extends ImagePanel { 14 Figura 8.7 La classe MovingPanel rappresenta e visualizza un oggetto che si muove dal modello (continua)

6 6 CAPITOLO 8 15 // MovingPanel dovrebbe cambiare posizione? 16 private boolean moving; // numero di pixel di cui MovingPanel si muove nelle direzioni x e y 19 // per animationdelay millisecondi 20 private double xvelocity; 21 private double yvelocity; // costruttore che inizializza posizione, velocità e immagine 24 public MovingPanel( int identifier, String imagename ) 25 { 26 super( identifier, imagename ); // imposta velocità di MovingPanel 29 xvelocity = 0; 30 yvelocity = 0; } // fine costruttore di MovingPanel // aggiorna posizione e animazione di MovingPanel 35 public void animate() 36 { 37 // aggiorna posizione a seconda della velocità 38 if ( ismoving() ) { 39 double oldxposition = getposition().getx(); 40 double oldyposition = getposition().gety(); setposition( oldxposition + xvelocity, 43 oldyposition + yvelocity ); 44 } // aggiorna tutti i figli di MovingPanel 47 Iterator iterator = getchildren().iterator(); while ( iterator.hasnext() ) { 50 MovingPanel panel = ( MovingPanel ) iterator.next(); 51 panel.animate(); 52 } 53 } // fine metodo animate // MovingPanel si sta muovendo sullo schermo? 56 public boolean ismoving() 57 { 58 return moving; 59 } // imposta MovingPanel per muoversi sullo schermo 62 public void setmoving( boolean move ) Figura 8.7 La classe MovingPanel rappresenta e visualizza un oggetto che si muove dal modello (continua)

7 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 7 63 { 64 moving = move; 65 } // imposta le velocità x e y di MovingPanel 68 public void setvelocity( double x, double y ) 69 { 70 xvelocity = x; 71 yvelocity = y; 72 } // ritorna velocità x di MovingPanel 75 public double getxvelocity() 76 { 77 return xvelocity; 78 } // ritorna velocità y di MovingPanel 81 public double getyvelocity() 82 { 83 return yvelocity; 84 } 85 } Figura 8.7 La classe MovingPanel rappresenta e visualizza un oggetto che si muove dal modello Il metodo animate (righe 35-53) muove MovingPanel secondo i valori attuali dei campi xvelocity e yvelocity. Se la variabile boolean moving (riga 16) è true, le righe usano i campi xvelocity e yvelocity per determinare la prossima posizione di movingpanel. Le righe ripetono il procedimento per tutti i figli. Nella nostra simulazione, ElevatorView invoca il metodo animate e il metodo paintcomponent della classe ImagePanel ogni 50 millisecondi. Queste chiamate in rapida successione spostano l oggetto MovingPanel. AnimatedPanel La classe AnimatedPanel (figura 8.8), che estende la classe MovingPanel, rappresenta un oggetto animato del modello (cioè, oggetti in movimento la cui immagine corrispondente cambia continuamente), come Person. La classe ElevatorView anima un AnimatedPanel cambiando l immagine associata con imageicon. 1 // AnimatedPanel.java 2 // Sottoclasse di Panel con funzionalità di animazione 3 package com.deitel.jhtp5.elevator.view; 4 5 // package Java di base 6 import java.awt.*; 7 import java.util.*; Figura 8.8 La classe AnimatedPanel rappresenta e visualizza un oggetto animato dal modello (continua)

8 8 CAPITOLO // package Java di estensione 10 import javax.swing.*; public class AnimatedPanel extends MovingPanel { // ImageIcon deve essere animato? 15 private boolean animating; // frequenza di cambio immagine 18 private int animationrate; 19 private int animationratecounter; 20 private boolean cycleforward = true; // ImageIcon individuali usati per l animazione 23 private ImageIcon imageicons[]; // memorizza tutte le sequenze di frame 26 private java.util.list framesequences; 27 private int currentanimation; // deve continuare l animazione alla fine del ciclo? 30 private boolean loop; // deve visualizzare l ultima immagine alla fine dell animazione? 33 private boolean displaylastframe; // determina la prossima immagine da visualizzare 36 private int currentframecounter; // costruttore che prende un array di nomi di file 39 public AnimatedPanel( int identifier, String imagename[] ) 40 { 41 super( identifier, imagename[0] ); // crea oggetti ImageIcon dall array di stringhe imagename 44 imageicons = new ImageIcon[ imagename.length ]; for ( int i = 0; i < imageicons.length; i++ ) { 47 imageicons[i] = new ImageIcon( 48 getclass().getresource( imagename[i] ) ); 49 } framesequences = new ArrayList(); } // fine costruttore di AnimatedPanel // aggiorna posizione dell icona e immagine dell animazione 56 public void animate() Figura 8.8 La classe AnimatedPanel rappresenta e visualizza un oggetto animato dal modello (continua)

9 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 9 57 { 58 super.animate(); // visualizza la prossima immagine se counter > frequenza di animazione 61 if ( framesequences!= null && isanimating() ) { if ( animationratecounter > animationrate ) { 64 animationratecounter = 0; 65 determinenextframe(); 66 } 67 else 68 animationratecounter++; 69 } 70 } // fine metodo animate // determina prossima immagine dell animazione 73 private void determinenextframe() 74 { 75 int framesequence[] = 76 ( int[] ) framesequences.get( currentanimation ); // se non ci sono più immagini, determina immagine finale 79 // a meno che non si debba ripetere l animazione 80 if ( currentframecounter >= framesequence.length ) { 81 currentframecounter = 0; // se loop è false, termina animazione 84 if (!isloop() ) { setanimating( false ); if ( isdisplaylastframe() ) // visualizza ultima immagine della sequenza 91 currentframecounter = framesequence.length - 1; 92 } 93 } // imposta immagine corrente dell animazione 96 setcurrentframe( framesequence[ currentframecounter ] ); 97 currentframecounter++; } // fine metodo determinenextframe // aggiunge animazione all ArrayList framesequences 102 public void addframesequence( int framesequence[] ) 103 { 104 framesequences.add( framesequence ); Figura 8.8 La classe AnimatedPanel rappresenta e visualizza un oggetto animato dal modello (continua)

10 10 CAPITOLO } // chiede se AnimatedPanel sta eseguendo l animazione 108 public boolean isanimating() 109 { 110 return animating; 111 } // imposta AnimatedPanel per eseguire l animazione 114 public void setanimating( boolean animate ) 115 { 116 animating = animate; 117 } // imposta ImageIcon corrente 120 public void setcurrentframe( int frame ) 121 { 122 seticon( imageicons[ frame ] ); 123 } // imposta frequenza di animazione 126 public void setanimationrate( int rate ) 127 { 128 animationrate = rate; 129 } // ottiene frequenza di animazione 132 public int getanimationrate() 133 { 134 return animationrate; 135 } // imposta se l animazione deve ripetersi 138 public void setloop( boolean loopanimation ) 139 { 140 loop = loopanimation; 141 } // ottiene se l animazione deve ripetersi 144 public boolean isloop() 145 { 146 return loop; 147 } // ottiene se visualizzare l ultima immagine alla fine dell animazione 150 private boolean isdisplaylastframe() Figura 8.8 La classe AnimatedPanel rappresenta e visualizza un oggetto animato dal modello (continua)

11 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI { 152 return displaylastframe; 153 } // imposta se visualizzare l ultima immagine alla fine dell animazione 156 public void setdisplaylastframe( boolean displayframe ) 157 { 158 displaylastframe = displayframe; 159 } // inizia ad eseguire la sequenza di animazione all indice dato 162 public void playanimation( int framesequence ) 163 { 164 currentanimation = framesequence; 165 currentframecounter = 0; 166 setanimating( true ); 167 } 168 } Figura 8.8 La classe AnimatedPanel rappresenta e visualizza un oggetto animato dal modello La classe AnimatedPanel sceglie un oggetto ImageIcon da disegnare sullo schermo tra diversi oggetti ImageIcon memorizzati nell array imageicons (riga 23). La classe AnimatedPanel determina l oggetto ImageIcon secondo una sequenza di riferimenti, memorizzata nella lista framesequences (riga 26), che è un array di interi che memorizza la sequenza appropriata per visualizzare gli oggetti ImageIcon: in particolare, ogni intero rappresenta l indice di un oggetto ImageIcon nell array imageicons. La figura 8.9 mostra la relazione tra imageicons e framesequences (questo non è un diagramma UML). Per esempio, la sequenza numero 2 = { 2, 1, 0 } si riferisce a { imageicon[2], imageicon[1], imageicon[0] }, che porta alla sequenza di immagini { C, B, A }. Nella vista, ogni immagine è un file.png unico. Il metodo addframesequences (righe ) aggiunge una sequenza di animazione alla lista framesequences. Il metodo playanimation (righe ) fa partire l animazione asso- framesequences image sequences imageicons 0= A B C 1= A B C D A B D B A = C B A 3= D C C A Figura 8.9 Relazione tra l array imageicons e la lista FrameSequences

12 12 CAPITOLO 8 ciata con il parametro framesequences. Per esempio, supponiamo di avere un oggetto AnimatedPanel chiamato personanimatedpanel nella classe ElevatorView. Il frammento di codice animatedpanel.playanimation( 1 ); genererebbe la sequenza di immagini { A, B, D, B, A } se usiamo la figura 8.9 come riferimento. Il metodo animate (righe 56-70) sovrascrive il metodo animate della superclasse MovingPanel. Le righe determinano la successiva immagine per l animazione a seconda del campo animationrate, che è inversamente proporzionale alla velocità dell animazione: un valore più alto per animationrate comporta un animazione più lenta. Per esempio, se animationrate vale 5, animate si sposta alla successiva immagine dell animazione ogni cinque volte viene invocato. Usando questa logica, la frequenza di animazione viene massimizzata quando animationrate ha un valore 1, perché la successiva immagine viene determinata ogni volta che viene chiamato animate. Il metodo animate chiama determinenextframe (righe 73-99) per determinare la successiva immagine da visualizzare: in particolare, viene chiamato il metodo setcurrentframe (righe ) che imposta imageicon (l immagine correntemente visualizzata) all immagine ritornata dalla corrente sequenza di animazione. Le righe di determinenextframe vengono usate per ripetere l animazione. Se loop vale false, l animazione termina dopo una iterazione. L ultima immagine della sequenza viene visualizzata se displaylastframe vale true, e, se vale false, viene visualizzata la prima immagine della sequenza. Se loop vale true, l animazione si ripete finché non viene fermata esplicitamente. Effetti sonori Vediamo ora come generare dei suoni nella nostra simulazione. La classe SoundEffects (figura 8.10) trasforma file audio (.au), wave (.wav) e MIDI (.mid) contenenti suoni come il campanello, i passi della persona e la musica dell ascensore, in oggetti java.applet.audioclip. L oggetto ElevatorView riprodurrà gli oggetti AudioClip per generare i suoni. Tutti i file dei suoni sono nella struttura di directory com/deitel/jhtp5/elevator/view/sounds Nella nostra simulazione, useremo suoni e file MIDI disponibili gratuitamente al sito Web di Microsoft: msdn.microsoft.com/downloads/default.asp Per scaricare questi suoni, fate clic su Graphics and Multimedia, Multimedia (General), e poi Sounds. La classe SoundEffects contiene i metodi getaudioclip (righe 16-27), che usa il metodo statico newaudioclip (della classe java.applet.applet) per ritornare un oggetto AudioClip usando il parametro soundfile. Il metodo setpathprefix (righe 30-33) permette di cambiare directory del file audio (utile se vogliamo dividere i nostri file sonori tra directory diverse).

13 LA MULTIMEDIALITÀ: LE IMMAGINI, LE ANIMAZIONI E I SUONI 13 1 // SoundEffects.java 2 // Ritorna oggetti AudioClip 3 package com.deitel.jhtp5.elevator.view; 4 5 // package Java di base 6 import java.applet.*; 7 8 public class SoundEffects { 9 10 // posizione dei file audio 11 private String prefix = ; public SoundEffects() {} // ottiene AudioClip associato con soundfile 16 public AudioClip getaudioclip( String soundfile ) 17 { 18 try { 19 return Applet.newAudioClip( getclass().getresource( 20 prefix + soundfile ) ); 21 } // ritorna null se il file audio non esiste 24 catch ( NullPointerException nullpointerexception ) { 25 return null; 26 } 27 } // imposta prefisso per la posizione di soundfile 30 public void setpathprefix( String string ) 31 { 32 prefix = string; 33 } 34 } Figura 8.10 La classe SoundEffects ritorna oggetti AudioClip Conclusione Avete appena completato un procedimento di progettazione orientata agli oggetti che aveva lo scopo di prepararvi per le sfide dei progetti di livello industriale. Speriamo che abbiate trovato le sezioni Pensare a oggetti informative e utili come complemento al materiale presentato nei vari capitoli. Inoltre, speriamo vi siate divertiti a progettare il sistema usando UML. Il linguaggio UML è stato adottato come standard dall industria del software mondiale per la modellazione di software orientato agli oggetti. Anche se avete completato la fase di progettazione, avete solo sfiorato il processo di implementazione. Consultate il sito Web per la completa implementazione del progetto, e le traduzioni dei diagrammi UML in un programma Java completo per la simulazione dell ascensore. Studiare l implementazione rafforzerà le abilità nella programmazione che avete sviluppato leggendo il libro e migliorerà la vostra comprensione del processo di progettazione.

La multimedialità: le immagini, le animazioni e i suoni

La multimedialità: le immagini, le animazioni e i suoni CAPITOLO 8 La multimedialità: le immagini, le animazioni e i suoni Obiettivi Imparare a visualizzare le immagini Creare animazioni da sequenze di immagini Creare mappe di immagini Imparare a riprodurre,

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. 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),

Dettagli

FloorButton - pressed : Boolean = false + resetbutton( ) : void + pressbutton( ) : void

FloorButton - pressed : Boolean = false + resetbutton( ) : void + pressbutton( ) : void 0. (Caso di studio facoltativo) Pensare a oggetti: incorporare l ereditarietà nel simulatore di ascensore Rivisitiamo ora il nostro progetto di simulatore di ascensore per vedere come può beneficiare dell

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 Alcune Soluzioni ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int[][] a = new int[n][n]; for (int i

Dettagli

Array. Walter Didimo

Array. Walter Didimo Array Walter Didimo Un problema ricorrente Gli strumenti di programmazione che abbiamo visto sin qui non sono ancora sufficienti per risolvere tutti i problemi di base Consideriamo ad esempio il seguente

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo L6 (JAVA9) 4 Disegni Animazioni Immagini Suoni 1 Prerequisiti Funzioni grafiche in Java Utilizzo package awt 2 1 Introduzione In questa Unità utilizziamo Java per creare

Dettagli

Le basi del linguaggio Java

Le 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

Dettagli

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

L applicazione di MVC alla simulazione di ascensore I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 I COMPONENTI DELLE INTERFACCE UTENTE GRAFICHE: PARTE II 1 3.13 (Caso di studio facoltativo) Pensare a oggetti: Modello-Vista-Controllore I design pattern descrivono strategie efficaci per costruire sistemi

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea

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

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.

Dettagli

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007 Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento

Dettagli

Scope e visibilità per classi

Scope e visibilità per classi Scope e visibilità per classi Packages Classi interne nelle loro diverse forme Interne / statiche / locali Utilizzo congiunto con interfacce Implementazione di iteratori Gestione di eventi Classi interne

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Thread, classi attive e sequenze di modellazione IL MULTITHREADING 1

Thread, classi attive e sequenze di modellazione IL MULTITHREADING 1 IL MULTITHREADING 5. (Caso di studio facoltativo) Pensare a oggetti: il multithreading Gli oggetti del mondo reale svolgono le loro funzioni indipendentemente uno dall altro e in modo concorrente. Come

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Soluzione della prova scritta del 5 febbraio 2013

Soluzione della prova scritta del 5 febbraio 2013 Corso di Programmazione Anno Accademico 2012 2013 Prof. Giovanni Pighizzini della prova scritta del 5 febbraio 2013 Questo documento discute un esempio di soluzione di alcuni esercizi assegnati. Naturalmente

Dettagli

Esercizio: Lista Circolare

Esercizio: Lista Circolare Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

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

Gerarchia di classi Java 1

Gerarchia di classi Java 1 Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

Programmazione a Oggetti Modulo B

Programmazione 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

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

public double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo.

public double getraggio() restituisce la lunghezza del raggio del cerchio che esegue il metodo. Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 7 settembre 2015 TEMPO DISPONIBILE: 1 ora e 40

Dettagli

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.

Oggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione

Dettagli

14 - Metodi e Costruttori

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

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012

Programmazione. Cognome... Nome... Matricola... Prova scritta del 20 febbraio 2012 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 20 febbraio 2012 TEMPO DISPONIBILE: 1 ora Negli

Dettagli

Grafica in Java. introduzione

Grafica in Java. introduzione Grafica in Java introduzione Awt vs swing Contenitori Top level Swing: indipendenza dalla piattaforma muro grezzo da rivestire ad esempio con pannelli Frame Un frame (lett.: 'cornice') è, a livello visivo,

Dettagli

Java e i Tipi di dati primitivi. Parte 3

Java e i Tipi di dati primitivi. Parte 3 Java e i Tipi di dati primitivi Parte 3 La nozione di tipo di dato Il tipo del dato consente di esprimere la natura del dato Indica il modo con cui verrà interpretata la sequenza di bit che rappresenta

Dettagli

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 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

Dettagli

SET: specifica INTRODUZIONE. SET: esempio Si stampano i numeri casuali in ordine di generazione e il contenuto dell insieme.

SET: specifica INTRODUZIONE. SET: esempio Si stampano i numeri casuali in ordine di generazione e il contenuto dell insieme. INTRODUZIONE Il tipo di dati astratto insieme (set) definisce operazioni, quali inserimento e rimozione, su collezioni di oggetti che presentano molteplicità uno, cioè non sono ammessi duplicati. Una possibile

Dettagli

Requisiti. Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Requisiti. Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria Sapienza - Università di Roma Facoltà di Ingegneria 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 d esame

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 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

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Gerarchia di classi Java 1

Gerarchia di classi Java 1 Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale

Dettagli

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico

Dettagli

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object

Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza

Dettagli

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria Sapienza - Università di Roma Facoltà di Ingegneria Requisiti Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

Tecniche iterative. Walter Didimo

Tecniche iterative. Walter Didimo Tecniche iterative Walter Didimo Tecniche iterative In questa lezione svolgeremo alcuni esercizi di definizione di classi con metodi che usano istruzioni condizionali istruzioni iterative Gli esercizi

Dettagli

Programmazione a oggetti

Programmazione a oggetti Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software simulazione di esame III Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Requisiti L'applicazione da progettare riguarda la

Dettagli

Alberi Binario in Java

Alberi 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

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Prova d Esame 19.04.2005 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 int counter;

Dettagli

Fondamenti di Informatica T1 Interfaccia Comparable Collezioni

Fondamenti di Informatica T1 Interfaccia Comparable Collezioni Fondamenti di Informatica T1 Interfaccia Comparable Collezioni Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 19 Interfaccia Comparable Fa

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Interfaccia Comparable e Collezioni Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 22 Interfaccia

Dettagli

Insegnamento di Laboratorio di algoritmi e strutture dati

Insegnamento di Laboratorio di algoritmi e strutture dati Insegnamento di Laboratorio di algoritmi e strutture dati Roberto Posenato ver. 0.6, 31/01/2008 1 / 25 Si comincia... 1 Esigenza... Definizione Tipi di eccezioni Sollevare eccezioni Gestire le eccezioni

Dettagli

Diagramma delle classi UML

Diagramma delle classi UML Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo, A.A. 2002-03 SOLUZIONE ESAME DEL 11/07/2003 Roma, 11 luglio 2003 1

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

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008

Programmazione. Cognome... Nome... Matricola... Compitino del 24 novembre 2008 Cognome................................ Nome................................... Matricola............................... Programmazione Compitino del 24 novembre 2008 Negli esercizi fate riferimento alle

Dettagli

Note ed esercizi aggiuntivi

Note ed esercizi aggiuntivi Corso di Programmazione Anno Accademico 2015 2016 Prof. Giovanni Pighizzini ed esercizi aggiuntivi Gli esercizi proposti sono utili per rivedere gli esempi riportati, che sono stati sviluppati e discussi

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 C2.1 Animazioni 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Utilizzo di elementi grafici ed eventi Utilizzo classe Canvas 2 1 Introduzione

Dettagli

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0}

{4, 4, 2, 9, 13} {2, 2, 9, 13, 0} {0, 4, 2, 9, 13} {2, 9, 13, 0, 0} 16181 Nome Cognome A domande a risposta multipla con n scelte, la risposta corretta vale (n-1)/n*difficoltàdomanda, la risposta errata -1/n*difficoltà domanda, la risposta non data. Eseguendo il frammento

Dettagli

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Matricola:...................... Cognome:...................... Nome:...................... Informatica

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati

Algoritmi di Ricerca. Esempi di programmi Java. Prof. Angela Bonifati Passaggio dei parametri in Java Nel seguente esempio public class parametri2 public static void main(string args[]) int x = 1; int y; double d[] = new double[2]; d[0] = 25; y= metodo1(d, x); System.out.println("Il

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti

Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti Fondamenti di informatica T-1 (A K) Esercitazione 8: classi e oggetti AA 2018/2019 Tutor Lorenzo Rosa lorenzo.rosa@unibo.it 2 Esercitazione 8 Introduzione al calcolatore e Java Linguaggio Java, basi e

Dettagli

Array di array. Walter Didimo

Array di array. Walter Didimo Array di array Walter Didimo Array di array Abbiamo visto che il tipo di dato degli elementi di un array può essere qualsiasi tipo valido Il tipo di dato degli elementi di un array può dunque anche essere

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA7 B1 Gestione di liste 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Tecnica di allocazione dinamica Gestione di liste Classificazione delle

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

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

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Laboratorio di Sistemi Classi e relazioni Java

Laboratorio di Sistemi Classi e relazioni Java package carrelloconsoleapp; import javax.swing.imageicon; /* *.java /** * * @author maurizio public class { private String id; private String descrizione; private double prezzo; private int percsconto;

Dettagli

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario

Dettagli

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo

Dettagli

Prova d Esame Compito A

Prova d Esame Compito A Prova d Esame 19.07.2005 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 int counter;

Dettagli

Sul pattern Iterator

Sul pattern Iterator Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione.

Dettagli

Prova d Esame Compito A

Prova 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

Dettagli

Parte I Java. Metodologie di Programmaziona Secondo Appello, 14/2/2006 1

Parte I Java. Metodologie di Programmaziona Secondo Appello, 14/2/2006 1 Metodologie di Programmaziona 05 06 Secondo Appello, 14/2/2006 1 Parte I Java Considerate le seguenti definizioni di classe. class T { class S extends T { class A { public void print(string s) { System.out.println(s);

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Diagramma delle classi UML

Diagramma delle classi UML Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Giuseppe De Giacomo e Monica Scannapieco, A.A. 2003-04 SOLUZIONE ESAME DEL 11/07/2003 Roma, 9

Dettagli

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

COGNOME.NOME. Matricola

COGNOME.NOME. Matricola Esame di PROGRAMMAZIONE ORIENTATA AGLI OGGETTI Appello del 4.9.2013 COGNOME.NOME. Matricola Tre classi, denominate Anemone, Fiordaliso e Viola devono assicurare la visualizzazione di un fiore stilizzato

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Proprietà delle Classi e degli Oggetti in Java

Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica Proprietà delle Classi e degli Oggetti in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Proprietà object-oriented di Java Definendo le caratteristiche e le operazioni di

Dettagli

Introduzione a Java e all'ambiente di sviluppo

Introduzione a Java e all'ambiente di sviluppo Introduzione a Java e all'ambiente di sviluppo Programmazione 2, a.a. 2006-2007 Nota: per esclusivo uso interno al corso, riferimenti bibliografici forniti a lezione Schema minimo di un applicazione public

Dettagli

Microsoft Visio 2002 UML Sergio Colosio

Microsoft Visio 2002 UML Sergio Colosio Microsoft Visio 2002 UML Sergio Colosio Casi d uso Prima di definire un caso d uso è necessario definire cosa s intende per scenario. Uno scenario è una sequenza di passi che descrivono l interazione tra

Dettagli

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione Liste doppie GT: 6.2 (e 3.3) Doubly Linked Lists 1 Argomenti della lezione ADT Position NodeList interface Position PositionList class DNode NodePositionList inserzione rimozione Iteratore ADT Iterator

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Sintassi e Semantica Riferimenti versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Pseudocodifica m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente,

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 (Corso di Laurea in Ingegneria Informatica ed Automatica Corso

Dettagli

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica (L-Z) Corso di Laurea in Ingegneria Gestionale Object Oriented Programming: Fondamenti Prof. Stefano Mariani Dott. Alket Cecaj Indice Introduzione all OOP Classi vs. oggetti Campi

Dettagli

GESTIONE DEGLI ERRORI

GESTIONE DEGLI ERRORI GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori

Dettagli

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array

Dettagli

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Liste doppie Liste: semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Rappresentazione grafica semplice: doppia: Gli

Dettagli

Programmazione II Compitino (Vers. B)

Programmazione 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

Dettagli

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

Programmazione in Java (I modulo) Lezione 20: Ereditarietà Programmazione in Java (I modulo) Lezione 20: Ereditarietà Ereditarietà (Inheritance) Il programmatore definisce una classe generale In seguito definisce una classe più specifica Aggiungo soltanto nuovi

Dettagli