Programmazione Orientata agli oggetti

Похожие документы
Tale attività non è descritta in questa dispensa

Corso Eclipse. Prerequisiti. 1 Introduzione

Eclipse - Nozioni Base

Corso di Laurea in Matematica. Seminario C/C++ Lorenzo Dusty Costa. Università degli Studi di Milano Dipartimento di Matematica

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

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

Guida all uso di Java Diagrammi ER

Cos'é Code::Blocks? Come Creare un progetto Come eseguire un programma Risoluzione problemi istallazione Code::Blocks Che cos è il Debug e come si usa

Introduzione a Dev-C++

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

Introduzione all uso di Eclipse

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

Istruzioni per la configurazione di IziOzi

Ambienti di Sviluppo

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

Figura 1 Le Icone dei file di Excel con e senza macro.

STAMPA UNIONE DI WORD

Esercitazione n. 10: HTML e primo sito web

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Strumenti per lo sviluppo del software

Eclipse. Avviare un progetto e compilare un semplice programma

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

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

MANUALE D USO DELLA PIATTAFORMA ITCMS

Organizzare i file. 1. Le cartelle e i file

Configurare TPTP in Eclipse e testare un applicazione

Programmare in Java. Olga Scotti

Appunti di Informatica 1

Ingegneria del Software 1: Eclipse

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

Il calendario di Windows Vista

Scrivere un programma in Java

Office 2007 Lezione 08

Office 2007 Lezione 02. Le operazioni più

Installazione e Configurazione della strumentazione necessaria. Antonio Gallo info@laboratoriolibero.com

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

On-line Corsi d Informatica sul Web

Manuale di istruzioni sulle maschere per il calcolo del punteggio e del voto (unico) degli studenti che sostengono la Prova nazionale 2011

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

L interfaccia utente di Office 2010

ISTRUZIONI XCODE. Autore: Luca Florio (luca.florio<at>polimi.it)

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:

Breve guida a Linux Mint

Flow!Works Manuale d uso

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

Manuale NetSupport v Liceo G. Cotta Marco Bolzon

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

LCMobile Restaurant. Guida su come usare il software per palmare LCMobile Restaurant.

MANUALE EDICOLA 04.05

TRASMISSIONE RAPPORTO ARBITRALE IN FORMATO PDF

Invio SMS. DM Board ICS Invio SMS

Word Libre Office. Barra degli strumenti standard Area di testo Barra di formattazione

Word. Cos è Le funzioni base Gli strumenti. 1

File, Modifica, Visualizza, Strumenti, Messaggio

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Tecniche di progettazione e sviluppo di applicazioni mobile

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Uso del Computer e Gestione dei File. Uso del Computer e Gestione dei File. Federica Ricca

Word per iniziare: aprire il programma

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

COMPILAZIONE DI UN APPLICAZIONE. 1) Compilare il file (o i file se più d uno) che contengono il testo del programma. compilatore

Corso base di informatica

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

I Preferiti. Elenco dei Preferiti

MERIDESTER SOFTWARE DI COMUNICAZIONE PER PC

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

INTERNET EXPLORER Guida introduttiva CAPITOLO 1 Fig. 1

Introduzione. Macro macro istruzione. Sequenza di comandi memorizzati programma

INSTALLAZIONE E UTILIZZO DEL COMPILATORE Code::Blocks 8.02

WORD per WINDOWS95. Un word processor e` come una macchina da scrivere ma. con molte più funzioni. Il testo viene battuto sulla tastiera

GESTIONE DI FINESTRE, FILE E CARTELLE con Windows XP

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

ROBOMAT. ROBOMAT Progettare, comunicare, stabilire relazioni di tipo spaziale misurare in tipiche situazioni di problemsolving

4. Fondamenti per la produttività informatica

Visual basic base Lezione 01. L'ambiente di sviluppo

TUTORIAL PUBBLICARE e INVIARE CIRCOLARI (v 1.5) -- PRIMA FASE -- PUBBLICAZIONE DI UNA CIRCOLARE (e suoi eventuali allegati)

TEST: Hardware e Software

Dipartimento di Sistemi e Informatica Università degli Studi di Firenze. Dev-C++ Ing. Michele Banci 27/03/2007 1

Codifica: dal diagramma a blocchi al linguaggio C++

Uso di filmati flash sulla LIM

TUTORIAL DI DOCMAN RC2 PER UTILIZZATORI FINALI di

Mappe concettuali con Cmap Istruzioni base

ShellExcel. Una domanda contiene i riferimenti (#A, #B, #C) alle celle che contengono i dati numerici del

STUDIUM.UniCT Tutorial per gli studenti

Manuale di installazione driver FTDI v. 1.0 manuale utente

Manuale per i redattori del sito web OttoInforma

Fondamenti di Informatica T1 Guida all uso di JDK e Eclipse

Esercizi su. Funzioni

Presentazione della pratica online

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Транскрипт:

Programmazione Orientata agli oggetti Ambiente di Lavoro: Eclipse http://merialdo.dia.uniroma3.it/didattica/wiki/index.php?title=eclipse A cura di Lorenzo Blanco

Introduzione: che cosa è Eclipse? Un IDE (Integrated Development Environment) open source ideato da un consorzio di grandi società (Eclipse Foundation) creato da una comunità strutturata sullo stile dell'open source. E' scritto in Java (ma utilizza librerie grafiche proprie per rendere più veloce l'interazione con l'utente)

Introduzione: che cosa è Eclipse La piattaforma di sviluppo è incentrata sull'uso di plug-in: componenti software ideate per uno specifico scopo (es. la programmazione in Java) o tutta la piattaforma è un insieme di plug-in, versione base compresa, che chiunque può sviluppare e modificare. Nella versione base è possibile programmare in Java, con funzioni di aiuto come il completamento automatico, il suggerimento dei tipi di parametri dei metodi, la riscrittura automatica del codice in caso di cambiamenti nelle classi, etc. Eclipse è disponibile per le piattaforme Linux, Mac OS X, Windows (e altre)

Una Panoramica Installazione Progetti Workspace Perspectives Views

Installazione Eclipse è molto facile da installare: è sufficiente 1. scaricarlo da http://www.eclipse.org/ versione suggerita: EE (la stessa usata in sede di esame) 2. scompattare il file nella directory che si preferisce (su Windows consigliato c:/programmi/eclipse)

I Progetti Eclipse non è un editor, ma un ambiente di sviluppo o non si può, ad esempio, aprire e compilare un qualunque file Bisogna organizzare il proprio lavoro in progetti Un progetto è l'insieme di file e impostazioni relativi ad una applicazione che si sta sviluppando o Nel caso di Java, ad esempio, il progetto conterrà non solo i file sorgenti.java, ma anche l'indicazione di quale JDK usare, eventuali librerie esterne (file.jar), etc.

Workspace Per "workspace" si intende la directory (cartella) in cui vengono salvati i progetti Al primo avvio di Eclipse viene suggerita una directory all'interno della directory di installazione di Eclipse o questa scelta non è la migliore! o se si seleziona una directory esterna (a quella dove è installato Eclipse) si può successivamente installare e usare una nuova versione di Eclipse senza perdere i progetti sviluppati con la versione precedente

Perspectives Con Eclipse è possibile organizzare l'interfaccia grafica in base a ciò che si sta facendo Una "prospettiva" è un modo di vedere il progetto (cioè organizzare l'interfaccia grafica) nella maniera più comoda o Ad esempio, è possibile programmare nella prospettiva "Java", organizzare i file in "Resource", eseguire debug in "Debug", etc. Questa organizzazione dell'interfaccia permette di avere sottomano i comandi immediatamente utili e non dover ricordare mille scorciatoie di tastiera I numerosissimi plugin di Eclipse sfruttano questa caratteristica per offrire funzionalià non solo testuali (editor, debug,...) ma anche grafiche (come il plugin di supporto agli schemi UML) Per cambiare e personalizzare la prospettiva si usa il menu "Window"

Views Rimanendo sempre nella metafora visuale una prospettiva è composta da "viste" Una vista è una tab che solitamente visualizza un output o un qualche genere di struttura o Per visualizzare o nascondere le viste si usa Window -> Show view. Esempi di viste: o "Navigator": visualizza i file contenuti in un progetto o "Console": alla stregua della console riceve input e mostra l'output del programma o "Problems": evidenzia i problemi di compilazione del programma

Views e Perspectives Le prospettive possono essere personalizzate spostando, aggiungendo o eliminando le viste. In questo modo si può avere l'interfaccia più congeniale al lavoro che si sta facendo Le views posso essere chiuse, spostate, ridotte o ingrandite Con Ctrl+F6 ci si può spostare nelle tab dei file aperti nell'editor, tenendo premuto Ctrl e usando le frecce direzionali

La prima esecuzione Come prima cosa viene chiesto di scegliere la locazione del workspace una schermata di help propone vari informazioni e tutorial Si può chiudere questa vista e riaprirla in seguito con Help -> Welcome Vogliamo usare le convenzioni di Java 1.6, per impostare questa scelta di default da Window -> Preferences... -> Java -> Compiler setta il "Compiler compliance level" a 1.6:

Un'occhiata all'interfaccia In alto a destra è evidenziata la prospettiva corrente (Java in questo caso). Per cambiarla si può usare il simbolo accanto (quello con il +) o il menu "Window". sulla sinistra c'è la view "Package explorer": quando saranno creati dei progetti permetterà di esplorare i package dell'applicazione Java. Nelle altre prospettive non sarà visibile. la view "Hierarchy" serve a navigare le gerarchie delle classi (>>) le view in basso hanno diverse funzioni legate all'output in alto c'è una toolbar che contiene comandi usati frequentemente (come "Run") ESERCIZIO: Passare alla prospettiva Debug e tornare a Java. L'interfaccia cambia radicalmente! Nella prospettiva Java non c'è ancora la vista "Console", provare a farla comparire

Hello Eclipse world! Finalmente è giunto il momento di scrivere il canonico "hello world"! Per creare un nuovo progetto selezionare File -> New -> Project e poi "Java Project" (se non appare "Other"). La schermata successiva permette di specificare il nome del progetto e altre opzioni tra cui il "Compiler compliance level" (impostato a 1.6 poco fa). A questo punto non ci interessano le altre opzioni e possiamo cliccare su "Finish".

Hello Eclipse world! Nel Package Explorer puoi vedere il nuovo progetto e dentro la JRE che viene utilizzata. Con File -> New -> Package aggiungi un package chiamato "prova". NB: potremmo non creare il package, ma Eclipse giustamente ce lo sconsiglierebbe e non riuscendo a concepire la mancanza di package, inserirebbe le classi in un package virtuale chiamato "(default package)". Con File -> New -> Class aggiungi una classe chiamata "Hello" (specificando che fa parte del package "prova")

Hello Eclipse world! A questo punto scriviamo il metodo main. Un modo veloce per farlo è questo: posiziona il cursore nella classe, indenta e scrivi "main" premi ctrl-spazio, Eclipse mostra una lista di completamenti possibili. seleziona il primo (main method) e premi invio, magicamente appare il metodo main! Analogamente possiamo creare i metodi getter e setter, se necessario

Hello Eclipse world! Quando hai finito di scrivere il contenuto del metodo main salva il file con Ctrl+s. Una opzione comoda di Eclipse è che compila ad ogni salvataggio (per gestire la compilazione usa il menu "Project"). Se ci sono degli errori (prova a metterne uno di proposito) vengono mostrati nella view "Problems". Se dopo aver scritto il codice o effettuato una modifica non hai salvato Eclipse te lo segnala con un asterisco vicino al nome nella tab.

Hello Eclipse world! Scritto il codice e compilato non resta che eseguire il programma. L'esecuzione è un po' meno intuitiva Eclipse gestice delle "run configurations", ovvero dei set di impostazioni per l'esecuzione. Per crearne uno al volo senza perdersi in dettagli seleziona la classe "Hello" dalla view "Package Explorer" ed esegui Run -> Run As -> Java Application. In basso nella view "Console" viene visualizzato l'output

Hello Eclipse world! Per far partire di nuovo l'applicazione si può ripetere la procedura o cliccare sull'icona di Run nella toolbar. Se si clicca sul triangolino nero si mostrano le varie opzioni di Run (Run As, Run, Organize Favorites), altrimenti viene fatta partire l'ultima applicazione eseguita.

Importare classi in Eclipse Crea un nuovo progetto dal menù File seleziona "Import" seleziona general->filesystem indica la cartella che contiene i file da importare e sulla destra i file da importare finish In alternativa puoi copiare direttamente i file nella cartella del progetto (dal sistema operativo) e poi avvertire Eclipse con File->refresh.

Il debugger di Eclipse Il debugger è un programma specificatamente progettato per l'analisi e l'eliminazione dei bug presenti in altri programmi. L'uso del termine bug è legato ad un curioso aneddoto risalente ai tempi pionieristici dell'informatica: nell'agosto del 1945 il tenente Hopper ed il suo gruppo stavano cercando la causa del mafunzionamente di un computer Mark II quando, con stupore, si accorsero che una falena si era incastrata tra i circuiti. Dopo aver rimosso l'insetto, il tenente incollò la falena rimossa sul registro del computer e annotò: "1545. Relay #70 Panel F (moth) nel relay. First actual case of bug being found". Questo registro è conservato presso lo Smithsonian National Museum of American History.

Il debugger di Eclipse Supponiamo di dover scrivere una classe che offre metodi per manipolare array di stringhe. La classe, chiamata "Dummy", per ora deve offrire solo il metodo public int search(string[] elenco, String parola) restituisce la posizione della String parola nell'array elenco o -1 se tale String non è contenuta nell'array Scriviamo anche un metodo di test per verificare il funzionamento del metodo

La classe Dummy package dummy; public class Dummy { public int search(string[] elenco,string parola) { int i = 0; for(string stringacorrente : elenco) { if(stringacorrente == parola) { return i; } i++; } return -1; } // continua

La classe Dummy public void searchtest() { System.out.println("test di search():"); // inizializza l'elenco di stringhe String[] elenco = new String[5]; elenco[0] = new String("anna"); elenco[1] = new String("carla"); elenco[2] = new String("sedia"); elenco[3] = new String("sei"); elenco[4] = new String("puma"); // continua

La classe Dummy // continua // verifica la presenza di tutte le parole System.out.println("\t"+(this.search(elenco, new String("sedia")) == 2)); System.out.println("\t"+(this.search(elenco, new String("sei")) == 3)); System.out.println("\t"+(this.search(elenco, new String("carla")) == 1)); System.out.println("\t"+(this.search(elenco, new String("puma")) == 4)); System.out.println("\t"+(this.search(elenco, new String("anna")) == 0));

La classe Dummy // continua // verifica la mancanza di parole System.out.println("\t"+(this.search(elenco, new String("cane")) == -1)); System.out.println("\t"+(this.search(elenco, new String("lume")) == -1)); System.out.println("\t"+(this.search(elenco, new String("gino")) == -1)); System.out.println("\t"+(this.search(elenco, new String("nota")) == -1)); } // continua

La classe Dummy // continua } public static void main(string[] args) { Dummy dummy = new Dummy(); dummy.searchtest(); }

Il debugger di Eclipse Se tutto è stato scritto senza errori verrà stampata una sequenza di "true" che indica il successo in tutte le prove effettuate L'esecuzione del test mostra dei problemi: siamo di fronte ad un errore logico Dobbiamo scovare e correggere l'errore Ipotizzando che il metodo di test sia stato scritto correttamente non rimane altro che controllare il metodo search()

Il debugger di Eclipse Un debugger offre la possibilità di eseguire il programma permettendo di: far partire l'esecuzione sospendere l'esecuzione e ispezionare lo stack di attivazione dei metodi (comprese le variabili) eseguire solo una riga o un metodo far ripartire il programma Per indicare al debugger dove sospendere l'esecuzione si devono indicare una o più righe di codice che (se raggiunte) bloccano il programma permettendo al programmatore di analizzare lo stato del processo in cerca di errori Per "impostare breakpoint alla riga x" si intende proprio questo.

Il debugger di Eclipse Proviamo ora a usare il debugger di Eclipse: per prima cosa passa alla prospettiva "Debug"

Il debugger di Eclipse A questo punto dobbiamo impostare un breakpoint per poter analizzare il programma e capire dov'è l'errore. Visto che probabilmente è nel metodo search() possiamo impostarlo alla prima riga int i = 0; per verificare il metodo Per farlo si clicca col tasto destro a sinistra della riga desiderata e si seleziona "Toggle Breakpoint"

Impostiamo un breakpoint

Il debugger di Eclipse Per eseguire in modalità di debugging si esegue il programma con Run -> Debug As... -> Java Application Apparirà una schermata ad indicare che l'esecuzione è attiva, ma bloccata appena prima della riga su cui è stato impostato il breakpoint

Il debugger di Eclipse

Il debugger di Eclipse Nella view "Debug" (in alto a sinistra) è riportata la pila di attivazione corrente In "Variables" (in alto a destra) è possibile ispezionare le variabili. In questo caso se selezioni la variabile "elenco" viene mostrato il contenuto dell'array In questo modo possiamo scoprire che in questa esecuzione di search() stiamo cercando la stringa "sedia" nell'array {"anna", "carla" "sedia", "sei", "puma"}, quindi il metodo deve restituire il valore 2

Il debugger di Eclipse Proviamo ora a fare qualcosa di utile e tentiamo di capire cosa non va nel codice. Se premi F6 il debugger esegue solo una riga di codice La riga corrente ora è quella successiva al breakpoint impostato e tra le variabili è comparsa la variabile i che non era ancora stata dichiarata Premendo due volte F6 si arriva alla riga if(stringacorrente == parola) { che controlla se la stringa corrente è uguale alla stringa passata come parametro Ma quanto valgono queste String? Dall'ispezione di variabili parola vale "sedia" ed stringacorrente "anna". Ci aspettiamo che la riga successiva non sia un return, ma il prosimo ciclo nel for. Funzionerà? Per scoprirlo basta premere F6...

Il debugger di Eclipse Effettivamente è andato tutto bene. Tuttavia il metodo di test ci stampa "false" per questa attivazione di search(), quindi l'errore sarà più avanti Continua il debugging una riga alla volta fino a quando la variabile stringacorrente non vale proprio "sedia" quando viene eseguito l'if ci si aspetta che il metodo ritorni il valore della variabile i ad indicare la posizione dell'array Prova a farlo. Cosa succede? Non viene ritornato nessun valore, anzi si continua con l'esecuzione del for. Eppure sia la varible stringacorrente che il parametro parola memorizzano "sedia"!

Il debugger di Eclipse Abbiamo trovato l'errore logico: il confronto tra oggetti String non può essere fatto con l'operatore == in quanto tale operatore non verifica che due oggetti siano "equivalenti", ma controlla che il loro indirizzo in memoria sia lo stesso (ovvero la loro "identità") Quindi se ho due oggetti String che memorizzano "sedia" == restituisce false (lo abbiamo provato sulla nostra pelle). Per restituire true quando sono equivalenti dobbiamo usare il metodo equals()! Modifica la riga del confronto utilizzando equals() al posto di ==. A questo punto non rimane che provare di nuovo ad eseguire il test. Interrompi il processo con il quadratino rosso nella view "Debug"

Il debugger di Eclipse Se vuoi usare meglio il debugger di Eclipse prova a capire a cosa servono F5, F7 ed F8 ("I will use Google before asking dumb questions") e ad impostare DURANTE il debug dei breakpoint