Java Core
- Programmazione ad oggetti
- 01. Introduzione agli oggetti
- 02. Dichiarazione di un oggetto
- 03. Accesso ai membri
- 04. Allocazione in memoria - costruttori
- 05. Autoriferimento: this
- 06. Esercitazione su oggetti
- 07. Soluzione
- 08. Combinare oggetti
- 09. Oggetti come data-types
- 10. Esercitazione su data-types
- 11. Soluzione
- 12. Incapsulamento: introduzione
- 13. Incapsulamento: get e set
- 14. Incapsulamento: applicazione
- 15. Incapsulamento: proprietà di insieme
- 16. Esercitazione su incapsulamento
- 17. Soluzione
- 18. Static
- 19. Costanti
- 20. Riepilogo
- 21. Esercitazione su scontrino
- 22. Soluzione A
- 23. Soluzione B
- La compilazione
- 24. Introduzione alla compilazione Java: le unità di compilazione
- 25. Il compilatore javac
- 26. Output della compilazione
- 27. Principali opzioni di compilazione
- 28. Compilazione di più files
- 29. Il packaging delle classi
- 30. Accessibilita' tra package e importazione di oggetti
- 31. Modificatori di visibilità delle classi
- 32. Classi pubbliche e compilazione in cascata
- 33. Esercitazione su compilazione
- 34. Soluzione
- Introduzione all'API Java
- 35. Introduzione all'API di Java
- 36. Documentazione dell'API
- 37. API per il testo: introduzione all'oggetto String
- 38. Particolarità dell'oggetto String
- 39. Documentazione dell'oggetto String
- 40. Altri metodi dell'oggetto String
- 41. L'oggetto System
- 42. System: standard input e ouput
- 43. Standard Output
- 44. Standard Input
- Programma Java
- 45. Il metodo "main"
- 46. Il primo programma completo
- 47. Parametri di avvio (args)
- 48. Esercitazione
- 48.1. Soluzione
- Strumenti IDE
- 49. Integrated Development Environment
- 50. IntelliJ Idea - Setup
- 51. IntelliJ Idea - Prima esecuzione e creazione di un progetto
- 52. IntelliJIdea - Caratteristiche e principali struementi
- 53. IntelliJIdea - Compilazione ed esecuzione
- 54. Il Debugger
- API Java per i tipi di dati
- 55. I Wrappers
- 56. Esercitazione
- 56.1 Proposta di soluzione (livello zero)
- 56.2 Proposta di soluzione (livello accettabile)
- 57. Il tempo e i calendari
- 58. Documentazione sul package java.time
- 59. Azioni con gli oggetti temporali datari
- 60. Formattazione degli oggetti temporali
- 61. Archi temporali e calcoli temporali
- 62. Esercitazione
- 62.1 Proposta di soluzione (parte prima)
- 62.2 Proposta di soluzione (parte seconda)
- Object Oriented
- 63. Object Oriented
- 64. Overriding
- 65. Modificatore di visibilità "protected"
- 66. Classi astratte
- 67. La classe Object e l'upcasting
- 68. Il downcasting
- 69. Interfacce
- 70. Polimorfismo e instanceof
- 71. Classi final
- 72. Enumerations
- 73. Enumerations valorizzate
- 74. Costrutto switch e gli enums
- 75. Annotations
- 76. Ma in pratica?
- 77. Ma in pratica?
- Gestione degli errori
- 78. Introduzione alla gestione degli errori
- 78. Lanciare errori
- 78. Creare errori personalizzati
- 79. Catturare gli errori
- 80. Trattare gli errori mediante rilancio
- 81. Esercitazione
- 82. Proposta di soluzione (parte prima)
- 83. Proposta di soluzione (parte seconda)
- Archivi Jar
- 84. Il tool jar
- 85. Creare archivi eseguibili
- 86. Creare librerie di oggetti
- Insiemi: le basi
- 87. Collection Framework
- 88. Collections
- 89. Set, List, Queue, Deque
- 90. Map
- Insiemi: applicazioni pratiche e costrutti
- 91. Applicazione pratica di insiemi List (1/2)
- 92. I tipi "generics"
- 93. Applicazione pratica di insiemi List (2/2)
- 94. Il costrutto "for" (each)
- 95. File System
- 96. Applicazione pratica di insiemi Queue e Deque (1/2)
- 97. Applicazione pratica di insiemi Queue e Deque (2/2)
- 98. Applicazione pratica di insiemi Map (1/3)
- 99. Applicazione pratica di insiemi Map (2/3)
- 100. Applicazione pratica di insiemi Map (3/3)
- 101. Properties
- 102. Store e load di insiemi Properties
- 103. Ordinamento di un insieme: Comparator<T>
- 104. Esercitazione
- 104. Proposta di soluzione
- Dichiarazioni anonime e Lambda functions
- 105. Dichiarazione di "inner class"
- 106. Dichiarazioni anonime
- 107. Interfacce funzionali: introduzione
- 108. Interfacce funzionali: espressioni "lambda"
- Stream di dati
- 109. Le interfacce funzionali standard
- 110. L'oggetto Optional
- 111. Gli Stream di dati
- 112. Creazione di uno stream
- 113. Funzionamento dello stream
- 114. Operazioni terminali: introduzione
- 115. Operazioni terminali: operazioni semplici
- 116. Operazioni terminali: collect
- 117. Operazioni terminali: reduce
- 118. Operazioni intermedie: basilari
- 119. Operazioni intermedie: filtri e ordinamenti
- 120. Operazioni intermedie: map e flatMap
- 121. Gli Stream di dati: esempi pratici 1
- 122. Gli Stream di dati: esempi pratici 2
- 123. Method reference
- Multithreading
- 124. Multithreading in Java
- 125. Thread e Runnable
- 126. Multithreading nativo
- 127. Un esempio: la catapulta
- 128. Un esempio: la banca
- 129. La banca-"rotta"
- 130. Problemi di "concorrenza": i lock
- 131. Una banca "differente": wait e notify
- 132. Gestione della "concorrenza" in modo nativo
- Progetto Finale
- 133. Presentazione esercitazione finale: specifiche di output
- 134. Esercitazione finale: suggerimenti di progettazione
- 135. Esercitazione finale: svolgimento step 1 parte 1
- 136. Esercitazione finale: svolgimento step 1 parte 2
- 137. Esercitazione finale: svolgimento step 2 parte 1
- 138. Esercitazione finale: svolgimento step 2 parte 2
- 139. Esercitazione finale: svolgimento step 3 parte 1
- 140. Esercitazione finale: svolgimento step 3 parte 2
- 141. Esercitazione finale: svolgimento step 3 parte 3
- 142. Esercitazione finale: svolgimento step 3 parte 4
- 143. Esercitazione finale: svolgimento step 3 parte 5
- 144. Esercitazione finale: svolgimento step 3 parte 6
- 145. Esercitazione finale: svolgimento step 3 parte 7
- 146. Esercitazione finale: svolgimento step 4 parte 1
- 147. Esercitazione finale: svolgimento step 4 parte 2
- 148. Esercitazione finale: svolgimento step 5 parte 1
- 149. Esercitazione finale: svolgimento step 5 parte 2
110. L'oggetto Optional
L'oggetto Optional
Java Core
Apprendi tutto quello che c'è da sapere su Java. Con questa guida completa al "core" di Java, impararerai la programmazione Object Oriented e la programmazione Funzionale.
Questo corso costituisce la naturale prosecuzione del corso “Introduzione alla programmazione con Java” e affronta le tematiche centrali della programmazione in Java che consentono di creare software completi ed autonomi.
Partendo esattamente da dove termina il corso di introduzione, in cui si acquisiscono i rudimenti basilari della sintassi delle istruzioni del linguaggio, questo percorso affronta di petto la programmazione object oriented e le modalità con cui Java implementa questo paradigma, affrontando passo dopo passo concetti quali le classi, le istanze, l’incapsulamento, i package, i membri statici, l’ereditarietà, l’overriding, l’astrazione, le interfacce, il polimorfismo, e il casting di oggetti.
In questo percorso si andranno ad utilizzare tools per la compilazione, per la creazione di librerie software, per il debug dei programmi e ci si avvarrà del supporto di IDE evolute per lo sviluppo di programmi
Si affronteranno quindi temi legati alla gestione degli errori e agli insiemi di dati, tema cruciale nei migliori linguaggi di programmazione, da cui ci si muoverà per affrontare il paradigma della programmazione funzionale e le modalità con cui Java permette di sfruttare l’approccio misto tra quest’ultimo e il paradigma object oriented.
Ogni “step” del percorso viene accompagnato da prove pratiche in cui chi segue le lezioni potrà cimentarsi per testare in proprio le conoscenze acquisite. Il tutto sarà corredato da un’esercitazione finale nella quale ci si dovrà cimentare nella realizzazione di un software completo in Java svolgendo attività simili a quelle solitamente intraprese da chi lavora in contesti di progetti di sviluppo di applicativi
Iscriviti al corso "Java Core" per poter visualizzare la lezione
Vai al corso