A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... ·...

31
A proposito dell’esame

Transcript of A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... ·...

Page 1: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Apropositodell’esame…

Page 2: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esame-Materiale1aprova:-  Orologio-  Penne-  Documento-  N.Matricola2aprova:-  Tuttoilmaterialecartaceochevolete–soloperusopersonale.

-  APIinlocale,inNetbeans.JavaTutorials

Page 3: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esame-IscrizioneAssumetelevostreresponsabilità!

- Iscrizione (fino a 3 giorni prima)- Dis-iscrizione (fino a 24 ore prima, eventualmente via mail. Last minute – only for serious reasons-, via mail.)

Noexcuses.Noexceptions.

Page 4: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esame-IscrizioneAssumetelevostreresponsabilità!

- Chi, essendosi iscritto, non si presenta senza una ottima giustificazione salta l’appello successivo

Noexcuses.Noexceptions.

Page 5: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Datedegliesami•  Esse3,maanchesulsitodiquestocorso

Page 6: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Netbeanstricks

Page 7: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Alwaysfullyrecompile!(Javafx)

Format!

Page 8: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Readthesuggestions!

Be careful with the imports!

Page 9: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

packagenames!

package it.unitn.disi.lingProg.ronchet

Page 10: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

History

Page 11: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esercizio

Page 12: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esercizio1•  Scrivereunaapplicazionechemostra9bottoni

numeratida0a8.Premendountastonumericosullatastiera,ilbottonerelativodeveessererimosso,mentreglialtridevonorestarealloroposto

•  (ovviamentenondevonoesseregeneratierroripremendopiùvoltelostessotasto,opremendotastinonnumerici)

Page 13: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

package it.unitn.disi.lingProg.ronchet import… public class AggiungiTogli extends Application { Button[] btn; final int NBUTTONS = 9; @Override public void start(Stage primaryStage) { // CREA BOTTONI // CREA PANNELLO (root) // GESTISCI GLI EVENTI // CREA SCENA // MOSTRA STAGE } public static void main(String[] args) { Application.launch(args); } private Button createButton(int i) {…} }

btn=newButton[NBUTTONS];for(inti=0;i<NBUTTONS;i++){btn[i]=createButton(i);}//AGGIUNGEREILMETODO//createButton

Scenescene=newScene(root);primaryStage.setTitle("Togliunoallavolta!");primaryStage.setScene(scene);primaryStage.show();

privateButtoncreateButton(inti){Stringtext=""+i;Buttonbtn=newButton(text);btn.setPrefWidth(200);btn.setPrefHeight(200);returnbtn;}

Page 14: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

// CREA PANNELLO (root) // GESTISCI GLI EVENTI final Pane root = new TilePane(); root.setPrefTileWidth(100); root.setPrefTileHeight(100); root.setPrefColumns(3); root.getChildren().addAll(btn); root.addEventHandler(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key = keyEvent.getCharacter(); int i = Integer.parseInt(key); System.out.println(i); boolean retval = root.getChildren().remove(btn[i]); } });

Page 15: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

// CREA PANNELLO (root) // GESTISCI GLI EVENTI final Pane root = new TilePane(); root.setPrefTileWidth(100); root.setPrefTileHeight(100); root.setPrefColumns(3); root.getChildren().addAll(btn); root.addEventHandler(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key = keyEvent.getCharacter();

// ATTENTIONPOINT 1 if (!("012345678".contains(key))) { keyEvent.consume();

return; }

int i = Integer.parseInt(key); System.out.println(i); boolean retval = root.getChildren().remove(btn[i]); } });

Page 16: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

// CREA PANNELLO (root) // GESTISCI GLI EVENTI final Pane root = new TilePane(); root.setPrefTileWidth(100); root.setPrefTileHeight(100); root.setPrefColumns(3); root.getChildren().addAll(btn); root.addEventHandler(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key = keyEvent.getCharacter();

// ATTENTIONPOINT 1 if (!("012345678".contains(key))) { keyEvent.consume();

return; }

int i = Integer.parseInt(key); System.out.println(i); boolean retval = root.getChildren().remove(btn[i]); } });

Page 17: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

// CREA PANNELLO (root) // GESTISCI GLI EVENTI final Pane root = new TilePane(); root.setPrefTileWidth(100); root.setPrefTileHeight(100); root.setPrefColumns(3); root.getChildren().addAll(btn); root.addEventHandler(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key = keyEvent.getCharacter();

// ATTENTIONPOINT 1 if (!("012345678".contains(key))) { keyEvent.consume();

return; } int i = Integer.parseInt(key);

System.out.println(i); // ATTENTIONPOINT 2 - A root.getChildren().remove(btn[i]); root.getChildren().add(i, new Pane()); } });

Page 18: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

// CREA PANNELLO (root) // GESTISCI GLI EVENTI final Pane root = new TilePane(); root.setPrefTileWidth(100); root.setPrefTileHeight(100); root.setPrefColumns(3); root.getChildren().addAll(btn); root.addEventHandler(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key = keyEvent.getCharacter(); // ATTENTIONPOINT 1 if (!("012345678".contains(key))) { keyEvent.consume();

return; }

int i = Integer.parseInt(key); System.out.println(i); // ATTENTIONPOINT 2 - B boolean retval = root.getChildren().remove(btn[i]); System.out.println(retval); if (retval) { root.getChildren().add(i, new Pane()); } } });

Page 19: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Ristrutturiamoilcodice:componentipersonalizzate

class MyButton extends Button { MyButton(int i) { super("" + i); String text = "" + i; setPrefWidth(200); setPrefHeight(200); } }

Page 20: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Ristrutturiamoilcodiceclass MyPane extends TilePane { MyPane() { setPrefTileWidth(100); setPrefTileHeight(100); setPrefColumns(3); addEventHandler(KeyEvent.KEY_TYPED, new

EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key=keyEvent.getCharacter(); if (!("012345678".contains(key))) { keyEvent.consume();

return; }

int i = Integer.parseInt(key); boolean retval = getChildren().remove(btn[i]); if (retval) getChildren().add(i, new Pane()); }}); }}

Page 21: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

package it.unitn.disi.lingProg.ronchet public class AggiungiTogli extends Application { Button[] btn; final int NBUTTONS = 9; @Override public void start(Stage primaryStage) { btn = new Button[NBUTTONS]; for (int i = 0; i < NBUTTONS; i++) btn[i] = new MyButton(i); final Pane root = new MyPane(); root.getChildren().addAll(btn); Scene scene = new Scene(root); primaryStage.setTitle("Togli uno alla volta!"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); } private Button createButton(int i) {…} } class MyButton … class MyPane …

Ristrutturiamoilcodice

Page 22: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

ReimplementiamoMyPaneclass MyPane extends GridPane { final int NCOL = 3; final int NROW = 3; MyPane() {

ColumnConstraints cc1 = new ColumnConstraints(); cc1.setPercentWidth(100./ NCOL); getColumnConstraints().addAll(cc1, cc1, cc1);

RowConstraints rc1 = new RowConstraints(); rc1.setPercentHeight(100./ NROW); getRowConstraints().addAll(rc1, rc1, rc1); addEventHandler(KeyEvent.KEY_TYPED, new

EventHandler<KeyEvent>() { public void handle(KeyEvent keyEvent) { String key = keyEvent.getCharacter(); if (!("012345678".contains(key))) { keyEvent.consume(); return; } int i = Integer.parseInt(key); System.out.println(i); boolean retval = getChildren().remove(btn[i]); } }); }

Page 23: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

ReimplementiamoMyPane /** * aggiunge un elemento alla griglia mappando l'indice sequenziale * in posizione (riga, colonna) * * @param index indice dell'elemento * @param o nodo da aggiungere */ void add(int index, Node o) { add(o, index % NCOL, index / NCOL); } void addAll(Node[] n) { for (int i=0; i<n.length; i++) { add(i,n[i]); } }

Page 24: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esercizio2•  Scrivereunaapplicazionechemostra8bottoni

numeratida1a8edunospaziovuoto.Premendountastonumericosullatastieraadiacenteallospaziovuoto,iltastosispostasullospaziovuotoeviceversa.

Premendountastononadiacenteallospaziovuoto,nonaccadenulla(opzionalmente:sisenteunbeepounmessaggiovocaledierrore).Situazionianomalevannogestite.

Page 25: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esempidiesame

Vedereifilesallegatiallalezioneodierna

Page 26: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

Esercizioperlunedi

Pensateci,poiinlaboratoriodiscuteretel’impiantodellasoluzione

epotretefaredomande

Page 27: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

SlotMachine1) Scrivere un’applicazione che implementi una slot machine. Tutto il codice deve essere documentato con Javadoc. L’applicazione presenterà una finestra che ricordi vagamente la seguente immagine

Page 28: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

2)Icontatorisonodue:Credito(indicaisoldidisponibili,espressiincentesimi,inizialmenteè0)Punteggio(inizialmenteè0)3)Lemoneteinizialmentesono3.Sonodeicerchisuciascunodeiqualièriportataladicitura“1Euro”.4)Cliccandosuunamoneta,questasparisceeilcreditovieneaumentatodi100.5)Ibottonisono:NuovapartitaSpin(disabilitatoseilcreditoèzero)Pay(disabilitatoseilcreditoèzero)

Page 29: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

6)Leruotedeisimbolisonotre,ugualitraloro.Ciascunacontieneglistessiseisimboli(dellefiguregeometrichestilizzate:barrainclinataadestra,rombo,cerchio,ecc.,sceglietevoi).Ogniruotamostraunsolosimboloallavolta.7)Cliccandosultasto“Nuovapartita”,seilcreditoèinferiorea100appareunafinestradipop-upchedice“nonhaicreditosufficiente”.Altrimentiilcreditovienediminuitodi100eilpunteggiovienesettatoa128.

Page 30: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

8)SeIltastoSpinèabilitato,cliccandoloisimbolidelletreruotevengonosceltiinmodocasuale.Adognipressionedeltasto“Spin”ilpunteggiovienedimezzato(maseè1diventa0).9)Cliccandosuunadelleruotedeisimboli,ilsuosimbolovienemodificato(masoloseilpunteggiononèzero)scegliendoloinmodocasuale(quellidellealtreruoterestanoimmutati).Ilpunteggiovienedimezzato.10)Seisimbolimostratidalletreruotesonouguali,appareunafinestradipop-upchedice“Haivinto”,ilcreditovieneincrementatodiunvaloreparialpunteggiomoltiplicatoper100,ilpunteggiodiventazero.

Page 31: A proposito dell’esame - UniTrentolatemar.science.unitn.it/segue_userFiles/2019Programma... · 2019. 5. 11. · 6) Le ruote dei simboli sono tre, uguali tra loro. Ciascuna contiene

11)Cliccandosultasto“Pay”appareunpop-upchedice“HaivintoXXEuro”,doveXXèilcreditodiviso100.Ilsistemavieneresettatonellacondizioneiniziale.