COGNOME.NOME. Matricola



Documenti analoghi
L interfaccia grafica in Java

Grafico della parabola

Due applicazioni complete in Java

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

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

Thread in Java CAPITOLO Richiami di gestione di processi

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

Esercitazione n 6. Capacità di analisi e di estensione di progetti Componenti grafici e gestione di eventi Linguaggio Java:

La struttura dati ad albero binario

Programmazione Java: Interfacce grafiche (GUI)

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

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:

Esercitazione n 4. Obiettivi

Algoritmi di Ricerca. Esempi di programmi Java

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

Alessandro De Luca. Lezione, 13 maggio 2015

Corso sul linguaggio Java

Ereditarietà e classi astratte

Scope e visibilità per classi

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

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono"," "}; //nomi delle colonne della tabella

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Prova d Esame Compito B

Prova d Esame Compito A

DeltaLog5. Visualizzazione dei dati La finestra di DeltaLog5 appare come segue:

13. Chain of Responsibility

APPLICAZIONI & APPLET

Esempi di esercizi d esame

Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Classi astratte. Master in Web Technology e Security luglio - settembre Interfacce

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Gestione dell interattività: gli eventi

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Corso Eclipse. Prerequisiti. 3 Window Builder

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

Oggetti Lezione 3. aspetti generali e definizione di classi I

Sviluppo di Interfacce Grafiche in Java

Applicazioni grafiche

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

CdL in Medicina Veterinaria - STPA AA

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Introduzione a Word. Prima di iniziare. Competenze che saranno acquisite. Requisiti. Tempo stimato per il completamento:

Programmazione ad Oggetti. JFrame è la classe di base per le finestre Fornisce tutte le caratteristiche di una finestra vuota

SAPIENZA Università di Roma, Facoltà di Ingegneria

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

Guida rapida di installazione e configurazione

I Layout Manager di java. Prof. Francesco Accarino IIS Altiero Spinelli via Leopardi 132 Sesto san Giovanni

Università degli Studi di Napoli Parthenope Facoltà di Scienze e Tecnologie Corso di Laurea in Informatica Generale

CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Metodologie di progetto Estensione di classi Implementazione di interfacce Composizione

WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.

QUICK GUIDE ESAMI DI STATO

Modulo 10. Configurazione VLAN Interconnessione del cavo seriale all'apparato attivo

Implementazione su web del sistema WIND-GIS

Programmazione Orientata agli Oggetti in Linguaggio Java

Interazioni col mondo: eventi

HELP ONLINE Guida per la registrazione al portale

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

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

DeltaLog5 - ShortForm Introduzione

1 JSPDynPage, componenti portale e Java Server Pages

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)

Progettazione : Design Pattern Creazionali

Il sistema wireless nell Università degli studi della Basilicata Indicazioni tecniche

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

WEBGIS 1.0. Guida per l utente

IMPORTAZIONE FILE IN OFFICE 365 TRAMITE IL CARICAMENTO DI RETE

SOMMARIO... 2 Introduzione... 3 Configurazione Microsoft ISA Server... 4 Microsoft ISA Server Microsoft ISA Server

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

Compito di laboratorio di informatica HTML

SOFTWARE CONSULTATORE IMMAGINI. Prima di inserire il cd rom del consultatore dovete verificare quanto segue:

Programmazione Orientata agli Oggetti in Linguaggio Java

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

Algoritmi per suddividere il testo in righe in un editor di testo

Audio IP Manager Guida Utente

Release note AGGIORNAMENTI & NOVITA

Gestione degli eventi in Java

Guida all utilizzo del nuovo sito SACERT per i certificatori

DOCUMENTO ESERCITAZIONE ONENOTE. Utilizzare Microsoft Offi ce OneNote 2003: esercitazione rapida

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Progetto INCOME. Manuale Utente Operatore Installazione

Un esercizio d esame. Flavio De Paoli

Transcript:

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 della corrispondente specie (con lo stelo disposto verso l'alto oppure verso il basso e inclinato verso destra oppure verso sinistra) sul pannello di una interfaccia grafica, a fronte del messaggio fiore.traccia( g ) in cui g rappresenta il contesto grafico usato. L'interfaccia grafica, denominata FioriGUI, contiene due pannelli: (1) un pannello di controllo dotato dei pulsanti Clear, Insert ed Erase configurati come in Fig.1; (2) un pannello di tracciatura, su cui riprodurre una composizione floreale. La composizione è ottenuta mediante ripetute pressioni del pulsante Insert, ognuna delle quali causa la generazione di un nuovo fiore. Per contro, la funzione del pulsante Erase è quella di rimuovere dal pannello l'ultimo fiore inserito in ordine di tempo, mentre scopo del pulsante Clear è di rimuovere tutti i profili floreali correntemente presenti sul pannello. Fig. 1 Distribuzione casuale della composizione floreale. La struttura della classe FioriGUI è sintetizzata nel seguito, in cui panfiori costituisce il pannello di visualizzazione dell'interfaccia: class FioriGUI extends JFrame { private PanFiori panfiori; private JPanel panctrl; private JButton btnclear, btninsert, btnerase; public FioriGUI (int hsize, int vsize) { setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE );

settitle( getclass().getname() ); setsize( hsize, vsize ); Container cnt = getcontentpane(); cnt.setlayout( new BorderLayout() ); // Creazione del pannello di tracciatura panfiori panfiori = new PanFiori(); panfiori.setbackground( Color.yellow ); cnt.add( panfiori, BorderLayout.CENTER ); // Creazione del pannello di controllo panctrl = new JPanel(); panctrl.setlayout( new BoxLayout( panctrl, BoxLayout.Y_AXIS )); btninsert = new JButton( "Insert", new ImageIcon( "Fiore.jpg" )); btninsert.addactionlistener( new ActionListener() { panfiori.insertfiore(); ); panctrl.add( btninsert ); btnclear = new JButton( "Clear", new ImageIcon( "Fiori.jpg" )); btnclear.addactionlistener( new ActionListener() { panfiori.clearfiori(); ); panctrl.add( btnclear ); btnerase = new JButton( "Erase", new ImageIcon( "Fiore.jpg" )); btnerase.addactionlistener( new ActionListener() { panfiori.erasefiore(); ); panctrl.add( btnerase ); cnt.add( panctrl, BorderLayout.EAST ); setvisible( true ); Esercizio P1 (punti 12) In relazione agli oggetti fiore da visualizzare, si consideri che essi sono istanziabili dalle classi Anemone, Fiordaliso e Viola, la cui struttura è similare ed è schematizzabile come sotto indicato per la classe Anemone: class Anemone { public Anemone (int x, int y, int dir) {... public void traccia (Graphics g) { Graphics2D g2 = (Graphics2D) g; GeneralPath corolla = new GeneralPath(); // Punto di incardinamento e direzione

// Creazione della corolla corolla.closepath(); GeneralPath stelo = new GeneralPath(); // Creazione dello stelo stelo.closepath();............ Delineare l'organizzazione complessiva delle classi destinate alla modellazione degli oggetti fiore, completando con quanto ritenuto necessario (si escluda il codice relativo alla costruzione di corolla e stelo) il codice della classe Anemone e di sue eventuali sovraclassi e/o interfacce implementate. SOLUZIONE abstract class Fiore { protected int x, y; protected int dir = 1; // Coordinate punto di riferimento public Fiore( int x, int y, int dir ) { this.x = x; this.y = y; this.dir = dir; public abstract void traccia (Graphics g); class Anemone extends Fiore { public Anemone( int x, int y, int dir ) { super( x, y, dir ); public void traccia (Graphics g) { Graphics2D g2 = (Graphics2D) g; GeneralPath corolla = new GeneralPath(); // Costruzione della corolla corolla.closepath(); GeneralPath stelo = new GeneralPath(); // Costruzione dello stelo stelo.closepath(); g2.setcolor( Color.green ); g2.fill( stelo ); g2.setcolor( Color.red ); g2.fill( corolla );

Esercizio P2 (punti 21) Fornire il codice della classe PanFiori. In relazione al metodo insertfiore() di questa, si ricordi che la sua funzione è di creare un ulteriore fiore per ogni chiamata, procedendo all'inserimento dello stesso sul pannello dell'interfaccia nella posizione individuata da un click del mouse (deve quindi essere possibile sfruttare un solo click del mouse per ogni pressione del pulsante Insert ): la selezione del tipo di fiore, la collocazione dello stelo, supero o infero, e l'orientamento di quest'ultimo, inclinato verso destra o verso sinistra, devono essere casuali. SOLUZIONE class PanFiori extends JPanel { private Random rdn = new Random(); private int x, y; private Fiore fiore; private LinkedList<Fiore> fioridisponibili = new LinkedList<Fiore>(); private AscMouse ascmouse = new AscMouse(); private PanFiori panfiori; private static boolean ascadded = false; public PanFiori() { panfiori = this; public void paintcomponent (Graphics g) { super.paintcomponent( g ); Iterator<Fiore> iterator = fioridisponibili.iterator(); while (iterator.hasnext()) { fiore = iterator.next(); fiore.traccia( g ); class AscMouse extends MouseAdapter { public void mousepressed (MouseEvent ev) { x = ev.getx(); y = ev.gety(); int d = (rdn.nextint( 2 ) == 0)? -1 : 1; int k = rdn.nextint( 3 ); switch( k ) { case 0: fiore = new Anemone( x, y, d ); break; case 1: fiore = new Fiordaliso( x, y, d ); break; case 2: fiore = new Viola( x, y, d ); break; fioridisponibili.addlast( fiore ); panfiori.removemouselistener( this ); ascadded = false;

public void clearfiori() { fioridisponibili.clear(); public void insertfiore() { if (! ascadded) { panfiori.addmouselistener( ascmouse ); ascadded = true; public void erasefiore() { if (! fioridisponibili.isempty() ) { fioridisponibili.removelast();