Java è un linguaggio di programmazione di alto livello, sviluppato da Sun Microsystems e rilasciato sul mercato nel 1995. Viene utilizzato da una grande varietà di piattaforme e di sistemi operativi, come Windows, MacOS, Unix.
Tra le sue principali caratteristiche vi è l’orientamento di programmazione ad oggetti (OOP), la facilità di programmazione e la sicurezza che questo linguaggio assicura.
JAVA
Il corso di Java inizia con un’introduzione al linguaggio, seguita poi da un approfondimento mirato a offrire delle solide basi a ciascun partecipante, che garantiscano una totale autonomia con lo sviluppo degli elementi.
Ciascuno studente potrà mettere alla prova le proprie capacità personali per fare di Java il proprio lavoro, sia nella ricerca di ulteriori funzionalità sia degli sviluppi che si renderanno eventualmente necessari, in parallelo all’acquisizione di una maggiore esperienza e di competenze più approfondite.
Classi, oggetti e metodi.
• Concetti della programmazione orientata agli oggetti (OOP).
• Definizione e personalizzazione di una classe.
• Tipi di dati.
• Cicli e costrutti binari.
• Array e ArrayList.
• Privatezza degli attributi.
• Ricorsione.
• Metodi statici.
• Stesura corretta del codice: Java Best Practices.
Concetti fondamentali.
• Ereditarietà: relazione classi padre–figlio; classi astratte; interfacce.
• Incapsulamento: protezione del codice.
• Polimorfismo: riutilizzo del codice; concetti di overHead e di overRide.
• Personalizzazione della superClasse: Metodi toString() e Clone().
Grafica.
• Realizzare interfacce grafiche interattive con Java.
• Librerie: JavaSwing; JavaAwt.
Data & ora.
• Operare in Java con le date.
• Librerie: DateTime; Date.
Gestione delle eccezioni.
• Utilizzo delle eccezioni per gestire comportamenti imprevisti del software.
• Personalizzazione delle classi di eccezione.
Concetti avanzati.
• JavaPattern: progettazione di un software; stesura del codice partendo dal diagramma di stato.
• DataBase SQL: interazione di Java con un DB SQL.
• Algoritmi e strutture dati: algoritmi per l’ordinamento; problemi decidibili e indecidibili.
• Crittografia: utilizzare le librerie crittografiche per realizzare funzioni di hash o generare chiavi per cifrature asimmetriche; operazioni algebriche sui campi finiti; libreria BouncyCastle.
• Design by contract: utilizzo della sintassi OpenJML.
• Testing: test del software tramite JUnit.