Utente:LoStrangolatore/corsojava
Principio generale:
- Su 'Books c'è un manuale di Java
- Su 'Books c'è un guida alla programmazione, la cui sezione "Programmazione ad oggetti" riporta indicazioni, consigli, ecc. per programmare: design patterns, buone norme di programmazione, ecc.
- Qui su 'Versity ci sono
- un corso che dà le conoscenze minime necessarie per poter consultare il manuale
- (idealmente) una comunità di studenti che si aiutano a vicenda
Quindi, il corso che è su 'Versity fa da supporto per la lettura del manuale di Java e della guida alla programmazione. Tutto ciò che può stare nel manuale e non nel corso dovrebbe stare nel manuale invece che nel corso.
Contenuto vecchio, da smantellare
[modifica]Scaletta:
- concetti preliminari
- Hello, world!
- variabili in 2 puntate
- oggetti
- strutture di controllo
- metodi (di istanza e statici)
- ...
Altro da includere:
- ereditarietà e polimorfismo
- tools del JDK: javadoc, javap
- gestione delle eccezioni (+ costrutto try-with-resources)
- threading (istruzione e modificatore synchronized; deadlock, long e double non sono atomici, ...; volatile)
- altri concetti da conoscere: garbage collector; ...
- librerie standard: collezioni; streams; serializzazione; reflection; AWT/Swing; ...
- ...
Sandboxes:
- Utente:LoStrangolatore/corsojava/lez01
- Utente:LoStrangolatore/corsojava/lez02
- Utente:LoStrangolatore/corsojava/lez03
- Utente:LoStrangolatore/corsojava/lez04
- Utente:LoStrangolatore/corsojava/programmazione a oggetti
- Utente:LoStrangolatore/corsojava/ereditarietà Concetti: responsabilità; incapsulamento; top-down e bottom-up. DPs: inversion of control; oggetto factory; MVC?
- Utente:LoStrangolatore/corsojava/ereditarietà/2 Linguaggio: interfaces.
- Utente:LoStrangolatore/corsojava/threads and locks
Concetti da spiegare:
- ...
Metafore:
- per spiegare l'ereditarietà; per spiegare l'overriding; per spiegare l'overloading: fare uso della metafora del libretto di istruzioni che ho presentato nella lezione "programmazione a oggetti". Ad es., l'overriding è come libretto di istruzioni che contiene delle correzioni o emendamenti per un altro libretto di istruzioni.
ToDos:
- link reciproci da e verso il libro di Wikibooks
Esercizio per i generics
[modifica]Data una classe come:
public class C<T> {
public <S> C() {}
}
La seguente riga quale tupo sostituisce al type parameter S e quale al tipo T?
new <A> C()Caratteri di escape nelle stringhe
[modifica]
Così come le virgolette marcano le stringhe all'interno del codice sorgente, così i backslash marcano le virgolette all'interno di una stringa. Quindi:
System.out.println("Il mio libro preferito è \"Ventimila leghe sotto i mari\" di Jules Verne.");
scriverà su terminale:
Il mio libro preferito è "Ventimila leghe sotto i mari" di Jules Verne.
In questo caso, il significato della barra è: compilatore, prendi il carattere che segue per come è, e non interpretarlo con il significato previsto dalle regole del Java. Quindi, quando il compilatore scorre la stringa e trova il backslash, considera il carattere successivo come parte della stringa. Questo significato si applica in pochi casi ben precisi. Ad esempio, se voglio scrivere il percorso di un file sotto Windows, per es. C:\Documenti\Letture.txt, allora nel codice sorgente devo scrivere "C:\\Documenti\\Letture.txt"
Altre volte la barra dice: "Compilatore, metti qui un simbolo speciale che sulla mia tastiera non c'è." Ad esempio, per inserire una nuova riga è prassi comune inserire \n all'interno della stringa. Infatti System.out.println, che abbiamo visto nella scorsa lezione, dietro le quinte non fa altro che eseguire System.out.print aggiungendo \n in fondo alla stringa.
Mettiamo insieme ciò che abbiamo scritto finora per ottenere un piccolo dialogo:
public class Cabaret {
public static void main(String[] args) {
System.out.println("A > Buonasera, signore e signori.");
System.out.println("B > Buonasera.");
System.out.println("A > Un cane dice a una papera: \"Dove abiti?\" E la papera risponde: \"Qua!\"");
System.out.println("B > ...");
}
}