05 JAR file, Javadoc, Polimorfismo Parametrico e Introduzione al Java Collections Framework

Documenti analoghi
07 JAR e Javadoc. Danilo Pianini Giovanni Ciatto, Angelo Croatti, Mirko Viroli

Fondamenti di Informatica T2 Modulo 2

Installazione. Eclipse. Workspace. Primo Avvio. Fondamenti di Informatica T2 Modulo 2. Università di Bologna A.A. 2008/2009

Strumenti Java. Fondamenti di informatica L-B A.A Alessandra Toninelli

Corso sul linguaggio Java

Guida introduttiva su Eclipse. Ing. Marco Dell'Unto

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

06 Analisi di qualità del codice, collezioni avanzate, enumeration e classi innestate

Inizializzare oggetti

2 Lavorare con Eclipse

Ambienti di Sviluppo. Linguaggi compilati

Agenda. Agenda. Credenziali. Configurazione del Proxy (1/2) Configurazione del Proxy (2/2) Fondamenti di Informatica T2 Modulo 2

Ingegneria del Software 1: Eclipse

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda

03FYZ TECNICHE DI PROGRAMMAZIONE Esercitazione di Laboratorio 03 es.1 23 Marzo 2016

GUIDA ALL INSTALLAZIONE DI R CONTENUTO

Documentazione e tutorial

Lezione 5 Namespace e JavaDoc

Eclipse e SDK. Capiamo che sistema operativo abbiamo

Cosa è importante: pom.xml Goal Plug-in Repository

Linguaggi di Programmazione

Lezione 3. Ing. Giuseppe Chiapparo - Università di Roma Tor Vergata Corso di ingegneria degli algoritmi (parte pratica) A.A.

Fondamenti di Informatica T-1

03FYZ TECNICHE DI PROGRAMMAZIONE Istruzioni per effettuare il fork di un repository GitHub

Il concetto di Package

01 Terminale e file system

Esercitazione n 2. Obiettivi

L IDE NETBEANS. (slide: A. Baratè) Programmazione per la Musica Adriano Baratè

Manuale utente Volta Control

Fondamenti di Informatica T-1. Guida al LAB3 Introduzione a JDK e Eclipse

03 Eclipse IDE, Incapsulamento e Interfacce

Esercitazione n 2. Obiettivi

Installazione Java Standard Edition (SDK)

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

Corso Programmazione Java Standard

Università di Ferrara Facoltà di Ingegneria. Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Installazioni preliminari

PRIMO MODULO. DURATA: 80 ore CONTENUTI

Introduzione a Visual Studio 2005

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Macchina virtuale di valutazione

Configurazione database MySQL

Cabel.

Istruzioni per l installazione del Local Scheduler

Università di Ferrara. Facoltà di Ingegneria. Esercitazioni di

ADaMSoft. Procedure per l installazione del software in ambiente Microsoft Windows 3/6/2008. Powered by:

Corso sul linguaggio Java

Università di Ferrara Facoltà di Ingegneria. Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Laboratorio di Informatica

Day by Day. Note Installative. Foglio presenze per il mondo Web e la procedura Rewind. Day by Day INFORMATICA TELEMATICA CONSULENZA.

Fondamenti di Informatica T-1


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

Laboratorio di Progettazione di Sistemi Software Progetto: UMLPatterns2Java

Fondamenti di Informatica T-1. Guida al LAB4 Introduzione a JDK e Eclipse

Strumenti per l automazione del testing di applicazioni web Javascript-based

Laboratorio di Informatica

PROVA FINALE Ingegneria del software

Comandi principali di Linux (1)

INSTALLAZIONE versione CLIENT/stand-alone

DISTRIBUIRE UN'APPLICAZIONE

BOOLE SERVER - Installation guide-

Backup e manutenzione del database

Esercitazione n 1. Obiettivi

Insegnamento di Laboratorio di algoritmi e strutture dati

CORSO DI PROGRAMMAZIONE JAVA STANDARD + ENTERPRISE EDITION

Linea di comando. Compilazione. Aprire una shell di DOS tramite:

Commenti per documentare il codice (doc comments) I commenti speciali devono essere delimitati da /**... */.

Lab 01 Introduzione a Codelite

Eclipse for the dummies. Primi passi nel mondo Eclipse Lorenzo Cioni LIP 1 Modulo a.a. 2006/2007

Software WinEeprom Evo

INSTALLAZIONE MACCHINA VIRTUALE

Fondamenti di Informatica L-A

GUIDA UTENTE PRIMA NOTA SEMPLICE

Fondamenti di Informatica T-1. Classi & vettori

Tutorial installazione Oracle e Sql Developer (Ubuntu 16.04)

Imagicle Hotel. Guida alla configurazione delle centrali Avaya IP Office con Kit configuration service

Importazione dati. e/fiscali Spesometro - Rel con gestionale e/satto. Gestionale e/satto

EDUCATION & TRAINING Formazione Tecnica Engine of Your Business

2. Funzionalità principali aggiunte a questa versione del software

Jamio openwork data source connector for QlikView

Guida per l esecuzione del trasferimento del programma DINAMIC su un nuovo computer

Java SE 7. Introduzione.

Introduzione al DEV C++

Aprire MPLAB. Cliccare sull icona presente sul Desktop

Installazione dell SDK sotto Windows

IDE DevC

Installazione Java Standard Edition (SDK)

Transcript:

05 JAR file, Javadoc, Polimorfismo Parametrico e Introduzione al Java Collections Framework Danilo Pianini Angelo Croatti, Simone Grotti, Mirko Viroli C.D.L. Ingegneria e Scienze Informatiche Alma Mater Studiorum Università di Bologna, Cesena 21 ottobre 2016 Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 1 / 39

Outline Goal della lezione Introduzione ai Java ARchive (JAR) e loro utilizzo Il ruolo della documentazione nello sviluppo del software Javadoc: linee guida Generazione automatica Esercizi in Autonomia Polimorfismo Parametrico Java Collection Framework - Parte I Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 2 / 39

Preparazione Ambiente di Lavoro Accendere il PC Loggarsi sul sito del corso https://bit.ly/oop2016cesena Scaricare dal sito il file lab05.zip contenente il materiale dell esercitazione odierna Spostare il file scaricato sul Desktop Decomprimere il file usando 7zip (o un programma analogo) sul Desktop Importare la cartella lab05 come progetto all interno di Eclipse Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 3 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 4 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 5 / 39

Deployment di applicazioni Java Finora, abbiamo visto che un applicazione Java è composta di un insieme di classi: noi vorremmo distribuirla come singolo file! Normalmente, le applicazioni Java vengono confezionate in file JAR (Java ARchive) File JAR Un JAR è un archivio (normalmente compresso) che contiene le classi, le risorse (e.g. icone) e un file descrittivo detto Manifest Il Manifest viene creato sempre in META-INF/MANIFEST.MF, e contiene informazioni sull applicazione, ad esempio su quale classe contenga il main del programma È possibile associare (a livello di sistema operativo) l esecuzione del JAR file al comando Java, in modo che l applicazione si avvii automaticamente col doppio click (avviando automaticamente la classe scritta nel Manifest) È possibile utilizzare i file JAR come componenti di altre applicazioni Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 6 / 39

Il comando jar Per creare un file JAR, si può utilizzare direttamente il comando jar Normalmente, tuttavia, ci si avvale del supporto dell IDE Opzioni importanti del comando jar c Specifica l intenzione di creare un JAR file f Specifica un file di output (se non presente, l output è rediretto su standard output) m Specifica l intenzione di allegare un manifest file personalizzato (se non presente, ne viene creato uno di default, che non specifica alcuna classe da eseguire) Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 7 / 39

Esempi d uso del comando jar jar cf jar-file.jar file1 file2 directory1 Crea un nuovo JAR file di nome jar-file.jar contenente file1 file2 directory1. Include un Manifest di default. jar cf jar-file.jar * Crea un nuovo JAR file di nome jar-file.jar contenente tutti i file e le directory nel path corrente. Include un Manifest di default. Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 8 / 39

Esecuzione di JAR file tramite command line shell java ha un opzione che consente l esecuzione di file jar. Tale opzione è -jar Quando si lancia java -jar nomefile.jar, la Java Virtual Machine automaticamente legge il file Manifest, cerca una descrizione della Main Class da eseguire e tenta di eseguirla. Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 9 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 10 / 39

Generazione di file JAR con Eclipse (1/5) L IDE Eclipse supporta efficacemente l utente nella generazione di file JAR (eseguibili o per la creazione di librerie). Esercizio Si seguano i passi descritti nelle slide successive per generare un file JAR a partire dai tre packages: it.unibo.oop.lab05.packages.pkg1 it.unibo.oop.lab05.packages.pkg2 it.unibo.oop.lab05.packages.pkg3 Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 11 / 39

Generazione di file JAR con Eclipse (2/5) Click col tasto destro sul progetto > Export... Nella schermata di export: java > JAR file > Next Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 12 / 39

Generazione di file JAR con Eclipse (3/5) Espandere l elenco dei file: verificare sempre che siano selezionate tutte e sole le risorse d interesse per il JAR file Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 13 / 39

Generazione di file JAR con Eclipse (4/5) Risulta possibile esportare anche i sorgenti nel file JAR Utile nel caso si voglia rendere ispezionabile il codice sorgente delle librerie distribuite come file JAR (ad esempio) in fase di debug. In questo caso, selezionare: Export Java Source files and resources Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 14 / 39

Generazione di file JAR con Eclipse (5/5) Selezionare una directory di destinazione Fornire un nome (con estensione.jar) al file che sarà generato Click su Finish Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 15 / 39

Verifica del contenuto di un JAR Il tool jar distribuito con il JDK consente di verificare il contenuto del file compresso Aprire un terminale Digitare jar tf myjar.jar (dove myjar.jar è il nome del file JAR da verificare Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 16 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 17 / 39

Generazione di file JAR eseguibili con Eclipse (1/3) Eclipse consente anche di generare file JAR con un file Manifest ad hoc per mettere in esecuzione il progetto software contenuto nell archivio. Come prerequisito, è necessario che esista in Eclipse una Run Configuration valida per il progetto. Ovvero, è necessario che il progetto sia stato eseguito almeno una volta in Eclipse. Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 18 / 39

Generazione di file JAR eseguibili con Eclipse (2/3) Clik DX su progetto > Export... Nella schermata di export: java > Runnable JAR file > Next Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 19 / 39

Generazione di file JAR eseguibili con Eclipse (3/3) Selezionare la Run configuration da utilizzare Inserire il nome del file (e selezionare il path in cui si desidera crearlo) Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 20 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 21 / 39

Documentazione per il Codice Sorgente Il ruolo fondamentale della documentazione La documentazione di un progetto software è un aspetto fondamentale Al fine di garantirne la manutenibilità Siamo così sicuri di ricordarci a distanza di settimane del perché abbiamo adottato una certa architettura, scritto una certa classe, una data estensione di una classe, un certo metodo? Arriva in azienda un nuovo sviluppatore: come fa a costruirsi il background necessario per lavorare su un progetto software esistente? Al fine di aumentare la comprensione del codice Cosa farà mai il metodo do_stuff() sviluppato dal collega? Ci sono dei metodi che sono disponibili solo per ragioni di compatibilità e che non dovrei più utilizzare? Oggi ci concentreremo sulla Javadoc che, integrata all uso di UML, è una delle parti fondamentali di una buona documentazione di un progetto SW Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 22 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 23 / 39

Javadoc Introduzione Javadoc: che cos è? Tool di supporto per la generazione automatica della documentazione (HTML-based) dei programmi Java, tramite utilizzo di annotazioni speciali collocate in punti ben precisi dei sorgenti Come funziona Il tool processa tutti i commenti del tipo /**... */ Commenti che si trovano in testa a dichiarazione di classi, metodi, etc. vengono inclusi per generare automaticamente la documentazione Custom tag consentono di classificare diverse tipologie di informazioni, facilitando la scrittura e la generazione della documentazione Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 24 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 25 / 39

Javadoc Principali Tag (1/2) @param Utilizzabile nei commenti relativi a costruttori/metodi o in classi parametriche Descrive un generico parametro di input oppure un tipo generico @return Utilizzabile nei commenti relativi ai metodi Descrive il valore di ritorno @deprecated Utilizzabile nei commenti relativi a classi/costruttori/metodi/campi Descrive che quel particolare costruttore/metodo etc. è stato deprecato. E ancora disponibile per ragioni di compatibilità ma è opportuno non utilizzarlo nello sviluppo di nuove applicazioni Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 26 / 39

Javadoc Principali Tag (2/2) @throws Utilizzabile nei commenti relativi a costruttori/metodi che lanciano una eccezione (le vedremo in seguito) Descrive l eccezione e il motivo per cui viene lanciata @link Descrive collegamenti ipertestuali (link) a metodi/classi/costanti della stessa classe o anche di classi esterne Esempi di utilizzo {@link package.otherclass#somemethod} {@link #somemethodofsameclass} {@link #somefieldofsameclass} @author ed @version Utilizzabili nel commento che descrive la classe Descrive l autore/autori della classe, e la sua versione Non usateli. Esistono modi migliori (che vedremo in futuro in questo corso) per sapere esattamente chi ha fatto cosa, quando, e qual è la versione della classe. Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 27 / 39

Javadoc Linee Guida Cosa commentare e quali tag usare? Inserire sempre un commento (anche corto) che descrive il ruolo e il funzionamento generale della classe Inserire un commento per tutti i costruttori (parametri e return value inclusi), metodi, e campi con livello di accesso public e protected Non è necessario documentare metodi di cui si fa override, a meno che non vi siano peculiarità non rilevate nella documentazione della superclasse. In questo caso, è sufficiente utilizzare {@inheritdoc} all interno del commento, e verrà generata Javadoc prendendola dalla superclasse. Utilizzare i sorgenti che vi forniamo in lab come linea guida di riferimento Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 28 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 29 / 39

Generazione Javadoc tramite Eclipse (1/2) Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 30 / 39

Generazione Javadoc tramite Eclipse (2/2) Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 31 / 39

Javadoc: Esempio di Documentazione Generata Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 32 / 39

Outline 1 Deployment di applicazioni Java I JAR file Generazione di JAR tramite Eclipse Generazione di JAR eseguibili tramite Eclipse 2 Documentazione per il codice Java Javadoc Principali Tag e Linee Guida Generazione della Javadoc tramite Eclipse 3 Esercizi in Autonomia Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 33 / 39

Modalità di Lavoro 1. Gli esercizi sono divisi in package con nomi progressivi 2. Troverete un commento con le istruzioni per ciascun esercizio 3. Risolvere l esercizio in autonomia 4. Cercare di risolvere autonomamente eventuali piccoli problemi che possono verificarsi durante lo svolgimento degli esercizi 5. Utilizzare le funzioni di test presenti nei sorgenti per il testing dell esercizio 6. Contattare i docenti nel caso vi troviate a lungo bloccati nella risoluzione di uno specifico esercizio 7. Una volta ultimato l esercizio chiamare i docenti per un controllo della soluzione 8. Scrivere il Javadoc per l esercizio svolto 9. Proseguire con l esercizio seguente Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 34 / 39

[Esercizio 1] it.unibo.oop.lab05.ex1 1. Analizzare ed eseguire il programma definito in UseCollection.java 2. Seguire i commenti presenti in UseSet.java per realizzare un programma che crei, popoli e manipoli un oggetto di tipo TreeSet<String> Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 35 / 39

[Esercizio 2] it.unibo.oop.lab05.ex2 1. Seguire i commenti presenti in UseSetWithOrder.java per realizzare un programma che crei e ordini un oggetto di tipo TreeSet<String> avvalendosi di un oggetto da creare ad hoc che sia istanza di Comparator<String> Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 36 / 39

[Esercizio 3] it.unibo.oop.lab05.ex3 1. Implementare le classi WarehouseImpl.java e ProductImpl.java secondo i contratti definiti nelle rispettive interfacce. 2. Si faccia riferimento alla Javadoc inserita per descrive le interfacce per i dettagli circa l implementazione dei diversi metodi. 3. Si esegua la classe UseWarehouse.java e si verifichi il corretto funzionamento del programma. Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 37 / 39

[Esercizio 4] it.unibo.oop.lab05.ex4 1. L esercizio è una variazione di quanto fatto nell esercizio precedente. 2. Si riutilizzi quanto più possibile il codice (funzionante) prodotto per completare l esercizio 3 3. Per testare il buon funzionamento del codice prodotto, si completino nel metodo main della classe presente in UseWarehouse.java le inizializzazioni delle variabili di tipo Product e Warehouse. Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 38 / 39

[Esercizio 5] it.unibo.oop.lab05.ex5 1. Si implementino le funzioni descritte nella classe Utilities.java 2. Si verifichi il buon funzionamento di quanto implementato eseguendo il programma descritto in UseUtilities.java Pianini (Università di Bologna) OOP05 Collections and Generics I 21 ottobre 2016 39 / 39