Upload
doanh
View
228
Download
0
Embed Size (px)
Citation preview
2
IDE
■ Cosa chiede un programmatore da una IDE
– Gestibilità del codice • avere il codice sotto controllo
– Source assistant • velocizzare e migliorare la scrittura del codice• minimizzare gli errori di sinatassi• evitare scritture ripetitive
– Refactoring• fondamentale
– Debugger• non si può scrivere codice corretto senza un buon
debugger– Testing
3
IDE
■ Gestione codice
– Esplorazione dei packages e delle classi con struttura ad albero
– Ricerca veloce della dichiarazione di un metodo, una classe di una variabile
– Informazioni istantanee sugli elementi del codice• tooltip sull’elemento• documentazione dell’elemento
– Ricerca di elementi in più files– Caller graph dei metodi– Ricerca dei riferimenti ad un elemento– Personalizzazione dell’interfaccia grafica– In pratica: avere sotto controllo il codice
4
IDE
■ Scrittura codice
– Completamento automatico– Evidenziazione immediata errori di sintassi– Elenco metodi di un oggetto– Code templates– Macro per scrittura automatica di metodi, costruttori
ecc...
5
IDE
■ Refactoring
– Conoscere in anticipo l’impatto di una modifica sul codice
– Possibilità di modificare un elemento mantenendo la semantica di tutto il codice
– Possibilità di decidere quali cambiamenti effettuare– Preview dei cambiamenti– Undo e Redo del refactoring
6
IDE
■ Debugger
– Step in, out, over...– Breakpoints– Conditional breakpoints– Variables– Watches– Stack trace
7
Eclipse Project
8
Scopi dell’Eclipse Project
■ Fornisce una piattaforma aperta per tool di sviluppo di applicazioni– Gira su un vasto range di sistemi operativi
■ Language-neutral– HTML, Java, C, JSP, EJB, XML
■ Facilita l’integrazione di tool– A livello di UI e più profondamente– Aggiunte di tool ai prodotti già presenti
9
Architettura Plug-in - Generale
■ Tutte le funzionalità sono fornite dai plug-in– Include tutti gli aspetti della piattaforma Eclipse stessa
■ Impacchettati in features installabili separatamente– Scaricabili
Eclipse ha un’architettura aperta e estendibile basata sui plug-in
10
Componenti del Workspace
■ I tool operano sui file nel workspace dell’utente
■ I progetti sono mappati su directory nel file system
■ Workspace contiene 1 o più progetti top-level
■ I tool leggono, creano, modificano e cancellano le risorse nel workspace
11
Workbench Component
■ UI della piattaforma Eclipse
■ UI paradigm centrato intorno– Editors– Views– Perspectives
12
Workbench Terminology
Tool bar
ResourceNavigatorview
Propertiesview
Tasksview
Outlineview
Bookmarksview
Menu bar
Messagearea
EditorStatusarea
Texteditor
13
Perspectives
■ Perspectives sono le disposizioni delle viste e degli editor
■ Differenti perspectives per differenti user tasks■ L’utente può velocemente passare tra le differenti
prospettive■ Perspectives control
– Visibilità delle viste– Disposizione delle viste e dell’editor– Visibilità delle azioni
■ Eclipse Platform include prospettive standard– Resource, Debug, …
14
Responsabilità del Workbench
■ Eclipse Platform gestisce le finestre e le prospettive■ Eclipse Platform crea i menu e le toolbar■ Eclipse Platform crea le viste e gli editor
15
Debug Component
■ UI
16
Debug Component
■ Configurazione per il launch– Come eseguire un programma (debug mode option)
■ Modello generico di debug– Azioni standard di debug: resume, terminate, step, …– Breakpoints– Expressions– Source code locator
■ UI generica di debug– Debug perspective– Debug views: stack frames, breakpoints, …
■ Esempio: JDT fornisce Java launcher e debugger
17
Java Development Tools
■ JDT = Java development tools– Implemented as Eclipse plug-ins– Using Eclipse Platform APIs and extension points
■ Incluso nelle release dell’ Eclipse Project
18
Java Workbench
Javaproject
package
class
field
method
Javaeditor
19
Java - Gestione codice
■ Esplorazione della gerarchia dei tipi– “Up” – “Down”
Typehierarchy
Selectedtype’s
members
20
Java Perspective
■ Ricerca di elementi Java– Dichiarazioni o riferimenti– Include librerie o altri progetti
Elemento trovato segnalato al margine
Tutti i risultati della ricerca
21
Java - Gestione codice
■ Javadoc come tooltip sugli oggetti
22
Java - Gestione codice
■ Completamento automatico del metodo
22
Java - Gestione codice
■ Completamento automatico del metodo
Lista dei metodi plausibili
22
Java - Gestione codice
■ Completamento automatico del metodo
Lista dei metodi plausibili Doc per il metodo
23
Java - Gestione codice
■ Controllo sintassi on-the-fly cattura gli errori istantaneamente
23
Java - Gestione codice
■ Controllo sintassi on-the-fly cattura gli errori istantaneamente
Problema
23
Java - Gestione codice
■ Controllo sintassi on-the-fly cattura gli errori istantaneamente
Clicca per vedere i fix
Problema
23
Java - Gestione codice
■ Controllo sintassi on-the-fly cattura gli errori istantaneamente
Clicca per vedere i fix
Problema
Quickfixes
23
Java - Gestione codice
■ Controllo sintassi on-the-fly cattura gli errori istantaneamente
Preview
Clicca per vedere i fix
Problema
Quickfixes
24
Java - Gestione codice
■ Code templates aiutano a scrivere il codice
24
Java - Gestione codice
■ Code templates aiutano a scrivere il codice
Statementtemplate
24
Java - Gestione codice
■ Code templates aiutano a scrivere il codice
Statementtemplate Preview
25
Java - Gestione codice
Variable namesuggestion
Argument hints andproposed argumentnames
JavaDoccode assist
■ Java editor aiuta i programmatori a scrivere buon codice
26
Java - Gestione codice
■ Call Hierarchy dei metodi
26
Java - Gestione codice
■ Call Hierarchy dei metodi
■ Ricerca veloce della dichiarazione di un elemento (F3)
27
Java - Gestione codice
■ Rimando ai metodi ridefiniti della superclasse
27
Java - Gestione codice
■ Rimando ai metodi ridefiniti della superclasse
rimando al metodo della superclasse
27
Java - Gestione codice
■ Rimando ai metodi ridefiniti della superclasse
rimando al metodo della superclasse
■ History degli spostamenti del cursore
28
Java Editor – Source
■ Organize imports
28
Java Editor – Source
■ Organize imports
■ Override implements methods– si scelgono i metodi della
superclasse da ridefinire
29
Java Editor – Source
■ Generate constructor using fields– Si scelgono gli attributi da
inizializzare nel costruttore
29
Java Editor – Source
■ Generate constructor using fields– Si scelgono gli attributi da
inizializzare nel costruttore
■ Add constructors from superclass– si scelgono i costruttori dalla
superclasse
30
Java Editor – Source
■ Generate delegate method– Si sceglie l’oggetto
contenuto e i metodi su cui eseguire la delega
30
Java Editor – Source
■ Generate delegate method– Si sceglie l’oggetto
contenuto e i metodi su cui eseguire la delega
■ Generate getter and setter method– si scelgono gli attributi per i quali costruire metodi get e set– utilissimo per Java Beans
30
Java Editor – Source
■ Generate delegate method– Si sceglie l’oggetto
contenuto e i metodi su cui eseguire la delega
■ Generate getter and setter method– si scelgono gli attributi per i quali costruire metodi get e set– utilissimo per Java Beans
■ Inserimento delle informazioni di base di un metodo (@param, @return...) quando si aggiunge un commento Javadoc ad un metodo
31
Java Editor – Source
■ Externalize strings– Utilissimo comando per
l’esportazione delle stringhe dal codice ad un file di testo.
– Le stringhe vengono sostituite da identificatori
– viene creato un file di testo e una classe per la gestione del caricamento delle stringhe
– Interazionalizzazione
32
Java Editor - Refactoring
■ JDT refactoring
33
Java Editor - Refactoring
■ Le azioni di refactory riscrivono il codice– dentro un singolo file java– attraverso molti file java tra loro correlati
■ Le azioni di refactory preservano la semantica del programma
■ Non alterano quello che il programma fa– Cambia solo il modo con cui lo fa
34
Java Editor - Refactoring
■ Preview completo di tutti i cambiamenti di codice che seguono– Il programmatore può decidere quali cambiamenti effettuare
Lista delle modifiche
“before” vs. “after”
35
Java Editor - Refactoring
■ Rename– aggiorna i riferimenti (anche quelli testuali – javadoc )
36
Java Editor - Refactoring■ Change method signature
– è possibile cambiare i parametri (numero e tipo dato) e il tipo di ritorno
– vengono visualizzati tutti gli errori che si generano
36
Java Editor - Refactoring■ Change method signature
– è possibile cambiare i parametri (numero e tipo dato) e il tipo di ritorno
– vengono visualizzati tutti gli errori che si generano
36
Java Editor - Refactoring■ Change method signature
– è possibile cambiare i parametri (numero e tipo dato) e il tipo di ritorno
– vengono visualizzati tutti gli errori che si generano
37
Java Editor - Refactoring
■ Preview errori
38
Java Editor - Refactoring
■ Preview modifiche
39
Java Editor - Refactoring
■ Extract interface
40
Java Editor - Refactoring
■ Extract method– Crea un nuovo metodo contenente il codice
selezionato e rimpiazza quest’ultimo con una chiamata al nuovo metodo.
– vengono aggiunti automaticamente i parametri del metodo e i valori di ritorno.
41
Java Editor - Refactoring
■ Codice originale
42
Java Editor - Refactoring
■ Refactor
43
Java Editor - Refactoring
■ Codice modificato
43
Java Editor - Refactoring
■ Codice modificato
■ Metodo aggiunto
44
Java Editor - Refactoring
■ Introduce factory– converte la creazione di un oggetto in un metodo di
una factory (singleton)■ Convert anonymous class to nested■ Pull up – push down
– sposta un metodo dalla classe alla super o sotto classe■ Use Supertype Where Possible
– Rimpiazza le occorrenze di un tipo con un suo supertipo dopo aver identificato tutti i posti dove questo rimpiazzo è possibile.
■ Inline – Rende inline le variabili statiche e i metodi.
■ ...
45
Java Editor
■ Altre caratteristiche– Code formatter– Source code for binary libraries– ...
46
Eclipse Java Debugger
■ Run or debug Java programs
Threads and stack
frames
Editor with breakpoint
marks
Console I/O
Local variables
47
Eclipse Java Debugger
■ Le caratteristiche del debugger includono– Ispezione delle variabili tramite tooltip sulla variabile
stessa– Method and exception breakpoints– Conditional breakpoints– Watches (anche di espressioni)– Step over, into, return; run to line– Inspect and modify fields and local variables
48
Eclipse Project
FINE