La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 51 Applet configurabili Grazie alla sezione parametri aggiuntivi del comando di HTML è possibile.

Presentazioni simili


Presentazione sul tema: "Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 51 Applet configurabili Grazie alla sezione parametri aggiuntivi del comando di HTML è possibile."— Transcript della presentazione:

1 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 51 Applet configurabili Grazie alla sezione parametri aggiuntivi del comando di HTML è possibile configurare lapplet Il metodo getParameter( ) consente di leggere il valore di un certo parametro direttamente dal file HTML

2 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 52 Esempio: unapplet che disegna varie forme public class GraphicsApplet extends Applet { Font appFont; Color appColor; String appShape; String appText; Image image; public Color colorFromString(String s, Color defaultColor ) { Integer i; try { i = Integer.valueOf(s, 16); return new Color(i.intValue( )); } catch (NumberFormatException e) { if (s.equalsIgnoreCase(red)) { return Color.red; } else if (s.equalsIgnoreCase(green)) { return Color.green; } else if (s.equalsIgnoreCase(blue)) { return Color.blue; } else return defultColor; } // CONTINUA NELLA PROSSIMA DIAPOSITIVA

3 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 53 Esempio: unapplet che disegna varie forme (continua) public void init ( ) { String arg = getParameter(COLOR); appFont =new Font(Helvetica, Font.BOLD, 14); if (arg != null) appColor = colorFromString(arg, Color.red); appShape = getParameter(SHAPE); if (appShape == null) appShape = Line; appText = getParameter(TEXT); if (appText == null) appText = Graphics; arg = getParameter(IMAGE); if (arg == null) arg = images/duke.gif; image = getImage (getDocumentBase( ), arg); } // CONTINUA NELLA PROSSIMA DIAPOSITIVA

4 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 54 Esempio: unapplet che disegna varie forme (continua 2) public void paint (Graphics g) { Rectangle r = bounds( ); g.setColor(appColor); if (appShape.equalsIgnoreCase(Line) { g.drawLine(0, 0, r.width, r.height); } else if (appShape.equalsIgnoreCase(Rectangle) { g.drawRectangle(0, 0, r.width-1, r.height-1); } else if (appShape.equalsIgnoreCase(Image) { g.drawImage(image, 0, 0, r.width, r.height, this); } else if (appShape.equalsIgnoreCase(String) { g.setFont(appFont); g.drawCenteredString(appText, g, r); }

5 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 55 Esempio: unapplet che disegna varie forme (continua 3) - Uso in diversi testi HTML Disegna una linea diagonale verde Disegna un rettangolo blu Stampa una stringa in rosso

6 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 56 Aggiungere controlli interattivi Applet estende Panel, quindi unapplet è un contenitore Usare add( ) per aggiungere nellapplet componenti interattivi (es., bottoni) Implementare la o le interfacce listener per rispondere agli eventi provenienti dai componenti interattivi public class UIApplet extends Applet implements ActionListener { private Button bott; private String str; public void init( ) { bott = new Botton(Show); str = getParameter(SCRITTA); add (bott); } public void actionPerformed(ActionEvent a) { showStatus(str); }

7 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 57 Animazioni Mostrare sequenze di immagini simili con un certo intervallo di tempo fra luna e laltra (frame rate) Ciclo di base: finché (ancora_immagini) { mostraImmaginiCorrente( ); sleep (un_certo_tempo); avanzaAllaProssimaImmagine( ); } Scelta critica: il frame rate determina la percezione più o meno naturale dellanimazione Effetto di sleep: sospende lesecuzione dellapplet e di conseguenza arresta ogni altra attività. Scelta alternativa: gestire il ciclo di animazione con un thread a sé stante

8 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 58 Prototipo di realizzazione di una animazione public class AnimationApplet extends Applet implements Runnable { Thread animator; public void init( ) { animator = new Thread(this); } public void start( ) { if (animator.isAlive( )) { animator.resume( ); } else {animator.start( ); } } public void stop ( ) { animator.suspend( ); } public void destroy ( ) { animator.stop( ); }

9 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 59 realizzazione di una animazione (continua) public void run( ) { while (true) { repaint ( ); Thread.sleep(200); // avanza alla prossima immagine } public void paint(Graphics g) { // disegna limmagine corrente }

10 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 510 Aggiungere una classe che guida lanimazione class Animation { protected Applet app; protected void init (Applet app) { this.app = app; } public abstract void advance ( ); public abstract void paintFrame (Graphics g); } La classe RectangleAnimation gestisce il disegno di un rettangolo in posizioni random allinterno dellapplet. Il metodo advance( ) determina la nuova immagine da disegnare calcolando le nuove coordinate del rettangolo in maniera random.

11 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione disegnare rettangoli class RectangleAnimation extends Animation { private int cx = 0; private int cy = 0; public void advance ( ) { Rectangle bounds = app.bounds( ); cx = (Math.random( ) * 1000) % bounds.width; cy = (Math.random( ) * 1000) % bounds.height; } public void paintFrame (Graphics g) { g.setColor(Color.blue); g.drawRect(cx, cy, 50, 50); }

12 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione istanziare il prototipo di animazione per disegnare rettangoli che si spostano in maniera casuale public class AnimationApplet extends Applet implements Runnable { Thread animator; Animation animation; public void init( ) { animator = new Thread(this); animation = new RectangleAnimation( ); animation.init(this); } public void start( ) { if (animator.isAlive( )) { animator.resume( ); } else {animator.start( ); } } public void stop ( ) { animator.suspend( ); }

13 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione (continua) public void destroy ( ) { animator.stop( ); } public void run( ) { while (true) { repaint ( ); Thread.sleep(200); animation.advance( ); } public void paint(Graphics g) { animation.paintFrame(g); }

14 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 514 Esercizio: estensioni a RectangleAnimation Configurabilità: parametri per variare - il frame rate - il tipo di immagine da visualizzare - la possibilità di indicare la sequenza delle posizioni Aggiunta di controlli interattivi: - bottoni per gestire lanimazione (avanti, indietro, pausa, moviola etc.) - uso del mouse per inserire a mano la sequenza dei punti

15 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 515 Dal come fare? al che cosa fare? IL FATTORE UMANO NEL SOFTWARE INTERATTIVO La tecnologia odierna consente di fornire le applicazioni di interfacce avanzate con limpiego di grafica avanzata: maggiori opportunità Unapplicazione amichevole deve essere semplice dal punto di vista dellutente e facile da usare: le prestazioni di un sistema oggi dipendono fortemente da come viene usato Deve comportarsi esattamente come lutente si aspetta: progettare una applicazione usabile richiede maggiori sforzi e maggiori costi

16 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 516 Perché progettare linterazione? La lista degli apparecchi interattivi è praticamente infinita: computer, telefoni cellulari, fotocopiatrici, agende elettroniche, telecomandi, videoregistratori.... Quanti apparecchi sono effettivamente usabili? Quando un prodotto viene ingegnerizzato, generalmente ci si preoccupa di dotarlo delle funzionalità previste, ignorando i problemi che incontreranno gli utenti

17 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 517 Interactive System Engineering Il successo di una applicazione interattiva dipende da quanto essa risulta gradita agli utenti. Linteractive system engineering ha perciò 4 attività di base: - PIANIFICAZIONE ACCURATA - SENSIBILITA PER LE ASPETTATIVE DEGLI UTENTI - PROTOTYPING E REVISIONE DEL PROGETTO - TESTING DI USABILITA Quando unapplicazione è ben progettata, la sua interfaccia dovrebbe scomparire, lasciando lutente a fare semplicemente il suo lavoro Vaga nozione di amichevolezza contro obiettivi ben definiti e misurabili Una progettazione che tenga conto di questi obiettivi ha dei costi aggiuntivi

18 Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 518 I punti chiave nel progettare linterazione Gli utenti dovrebbero essere coinvolti, o almeno tenuti in considerazione, durante lo sviluppo del progetto Gli obiettivi di usabilità dovrebbero essere identificati in partenza, chiaramente documentati ed accettati Il processo deve essere necessariamente reiterato


Scaricare ppt "Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 51 Applet configurabili Grazie alla sezione parametri aggiuntivi del comando di HTML è possibile."

Presentazioni simili


Annunci Google