Manuale di Java 9
eBook - ePub

Manuale di Java 9

Programmazione orientata agli oggetti con Java Standard Edition 9

  1. 736 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Manuale di Java 9

Programmazione orientata agli oggetti con Java Standard Edition 9

About this book

Java non sarà mai più lo stesso! Il Manuale di Java 9 è stato strutturato per soddisfare le aspettative di: aspiranti programmatori: nulla è dato per scontato, è possibile imparare a programmare partendo da zero ed entrare nel mondo del lavoro dalla porta principale; studenti universitari: le precedenti edizioni di quest'opera sono state adottate come libro di testo per diversi corsi in tutte le maggiori università italiane; programmatori esperti: Java 9 semplifica lo sviluppo, rivoluziona il JDK, introduce nuovi formati per i file e, con i moduli, cambia per sempre il modo in cui pensiamo, progettiamo e distribuiamo il software.Informatica di base - Ambiente di sviluppo - Basi del linguaggio - Approfondimento sull'Object Orientation - Java e il mondo del lavoro - Interfacce in Java 9 - Caratteristiche avanzate del linguaggio - Stream API - Collections Framework - Tipi Generici - Date & Time API - Tipi annotazioni - Multi-threading - Espressioni Lambda - JShell - Le librerie fondamentali - Gestione delle eccezioni e delle asserzioni - Input e Output - Modularizzazione.

Frequently asked questions

Yes, you can cancel anytime from the Subscription tab in your account settings on the Perlego website. Your subscription will stay active until the end of your current billing period. Learn how to cancel your subscription.
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
Perlego offers two plans: Essential and Complete
  • Essential is ideal for learners and professionals who enjoy exploring a wide range of subjects. Access the Essential Library with 800,000+ trusted titles and best-sellers across business, personal growth, and the humanities. Includes unlimited reading time and Standard Read Aloud voice.
  • Complete: Perfect for advanced learners and researchers needing full, unrestricted access. Unlock 1.4M+ books across hundreds of subjects, including academic and specialized titles. The Complete Plan also includes advanced features like Premium Read Aloud and Research Assistant.
Both plans are available with monthly, semester, or annual billing cycles.
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, we’ve got you covered! Learn more here.
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Yes! You can use the Perlego app on both iOS or Android devices to read anytime, anywhere — even offline. Perfect for commutes or when you’re on the go.
Please note we cannot support devices running on iOS 13 and Android 7 or earlier. Learn more about using the app.
Yes, you can access Manuale di Java 9 by Claudio De Sio Cesari in PDF and/or ePUB format, as well as other popular books in Computer Science & Programming in Java. We have over one million books available in our catalogue for you to explore.

Information

Parte III
Caratteristiche avanzate
La parte III presenterà al lettore tutte le caratteristiche avanzate del linguaggio. L’approfondimento di alcuni concetti è molto elevato, e in generale i concetti stessi sono mediamente più complicati di quelli visti sino ad ora. Anche argomenti apparentemente semplici come le enumerazioni, presentano situazioni piuttosto complesse. Nei prossimi moduli esploreremo nuovi tipi di programmazione, come quella generica, quella concorrente (multithreaded) e quella funzionale grazie alle espressioni lambda. Inoltre introdurremo tutte le librerie fondamentali come la libreria Date and Time API, le librerie per gestire input e output, il framework Collections, la libreria Stream API e tante altre. L’ultimo capitolo è dedicato alla novità più importante di Java 9: i moduli. La modularizzazione della piattaforma Java rivoluziona completamente il nostro modo di concepire le applicazioni Java, e permette di creare sottosistemi disaccoppiati riutilizzabili, ed incapsulare risorse inaccessibili all’esterno con il cosiddetto forte incapsulamento. Inoltre con il nuovo strumento jlink, è ora possibile creare runtime personalizzati che includono solamente le librerie della piattaforma Java che sono necessarie.
10
Enumerazioni e Tipi Innestati
Obiettivi:
Al termine di questo capitolo il lettore dovrebbe essere in grado di:
Comprendere cosa sono i tipi innestati e i vantaggi che comportano (unità 10.1).
Saper elencare le proprietà fondamentali delle classi innestate (unità 10.1).
Saper definire ed utilizzare le classi anonime (unità 10.2).
Comprendere l’utilizzo e l’utilità delle enumerazioni (unità 10.3).
Comprendere l’utilizzo e l’utilità delle caratteristiche avanzate delle enumerazioni (unità 10.3).
Nel capitolo 2 abbiamo introdotto i componenti fondamentali della programmazione Java, ma ci siamo limitati ai concetti indispensabili. Abbiamo solo accennato agli altri componenti fondamentali della programmazione Java nell’ultimo paragrafo visto che era prematuro approfondirne il discorso.
È ora arrivato il momento quindi di introdurre le enumerazioni, che al pari delle classi e delle interfacce (e come vedremo delle annotazioni), vengono solitamente salvate in file con suffisso .java. Il concetto di enumerazione non è complicato, ma vi saranno da spiegare anche le caratteristiche avanzate.
In questo capitolo vedremo essenzialmente due argomenti principali: le classi innestate e le enumerazioni. La conoscenza delle classi innestate è propedeutica alla definizione avanzata delle enumerazioni. Entrambi gli argomenti sono abbastanza semplici da imparare se ci si limita all’utilizzo di base. Diventano molto più complessi quando si vogliono applicare le caratteristiche avanzate di queste nuove definizioni. Particolarmente ostiche sono le proprietà delle classi innestate, poco conosciute dalla maggior parte dei programmatori Java. Molto importanti dal punto di vista dell’utilizzo sono le classi anonime, che sino a Java 7 hanno rappresentato il modo più dinamico, sintetico e funzionale di scrivere codice Java. La seconda parte del capitolo è probabilmente più interessante. Infatti, definiremo le enumerazioni con il supporto di semplici esempi. Dopo aver presentato le ragioni per cui le enumerazioni costituiscono un vero punto di forza di Java, ne presenteremo le proprietà, le caratteristiche avanzate (metodi specifici, override tramite classi anonime, costruttori, etc.), il loro rapporto con i paradigmi object oriented, e con elementi di programmazione come il costrutto switch e gli import statici. Inoltre, cercheremo di capire che lavoro svolge il compilatore per noi, e noteremo come tutte le enumerazioni, inoltre, estendano la classe java.lang.Enum ereditandone i metodi.
10.1 Classi innestate: classi interne
Nel titolo di questo capitolo abbiamo parlato di tipi innestati perché lo stesso discorso che faremo in particolare per le classi, si potrà generalizzare anche per le interfacce, le enumerazioni e le annotazioni. Iniziamo a parlare delle classi innestate (in inglese nested classes).
10.1.1 Classe innestata: definizione
Una classe innestata (o anche classe interna nel caso non sia dichiarata statica) non è altro che una classe definita all’interno di un’altra classe. Per esempio:
 public class Outer { private String messaggio = "Nella classe "; private void stampaMessaggio() { System.out.println(messaggio + "Esterna"); } /* la classe interna accede ai membri privati * della classe che la contiene */ public class Inner { public void metodo() { System.out.println(messaggio + "Interna"); } public void chiamaMetodo() { stampaMessaggio(); } //... } //... } 
Il vantaggio di implementare una classe all’interno di un’altra riguarda principalmente il risparmio di codice. Infatti la classe interna ha accesso ai membri della classe esterna anche se dichiarati private. Nell’esempio, il metodo metodo(), della classe interna Inner utilizza la variabile privata d’istanza messaggio, definita però nella classe esterna Outer. Stesso discorso per il metodo chiamaMetodo() della classe interna che chiama il metodo della classe esterna stampaMessaggio(). Dal punto di vista object oriented, di solito nessun vincolo o requisito dovrebbe consigliarci l’implementazione di una classe innestata. Questo significa che è sempre possibile evitarne l’utilizzo. Esistono dei casi dove però tali costrutti sono effettivamente molto comodi. Per esempio nella creazione di classi per la gestione degli eventi sulle interfacce grafiche, ma tale argomento sarà affrontato in dettaglio nell’appendice Q dedicata alle interfacce grafiche.
Anche per le classi innestate esiste la possibilità di utilizzare i modificatori d’accesso come per i membri di una classe. Quindi, per le classi ordinarie è possibile solo usare public oppure non usare modificatori, ed abbiamo visto nel capitolo 6 come questo implichi che quella classe sia accessibile al di fuori del package oppure no. Invece per le classi innestate è possibile anche utilizzare protected e private, con le stesse regole che esistono per gli attributi di una classe, anche se non si tratta di attributi.
Inoltre è possibile anche utilizzare altri modificatori come static. Nel prossimo paragrafo vengono presentate le regole che governano le classi interne: sono complesse e difficili da ricordare.
10.1.2 Classi innestate: proprietà
Le seguenti proprietà vengono riportate per completezza. Tuttavia non ci dilungheremo sull’effettivo sfruttamento di queste regole. Dubitiamo fortemente per esempio che vengano usate spesso classi innestate statiche. Sicuramente però, il programmatore Java esperto può sfruttare con profitto tali proprietà per risolvere problemi di non facile soluzione. Una classe innestata:
1. deve avere un identificatore differente dalla classe che la contiene.
2. Si possono utilizzare tutti i modificatori d’accesso per dichiarare una classe innestata. Questo implica che gli oggetti di una classe innestata sono istanziabili solo negli ambiti di visibilità definiti dai modificatori come descritto nel paragrafo 6.7.
3. Per istanziare oggetti di una classe innestata (non privata) al di fuori della classe in cui è stata dichiarata, bisogna utilizzare una sintassi speciale:
NomeClasseEsterna.nomeClasseInterna. In particolare, se volessimo istanziare una classe interna al di fuori della classe in cui è definita, è necessario effet...

Table of contents

  1. Cover
  2. Frontespizio
  3. Copyright
  4. Indice
  5. Prefazione
  6. Parte I - Le basi del linguaggio
  7. Parte II - Object Orientation
  8. Parte III - Caratteristiche avanzate
  9. Conclusioni
  10. Indice analitico
  11. Informazioni sul Libro
  12. Circa l’autore