Programmi java utilizzati nelle lezioni
Lezione 1
Un programma che stampa un messaggio: PrimoProgramma.java
Lezione 2
Un programma che calcola l’area di un rettangolo: AreaRettangolo.java
Lezioni 3 e 4
Due programmi che utilizzano variabili di tipo int, double, long e alcune funzioni della classe Math: TestNumeri1.java e TestNumeri2.java.
Un programma che mostra alcuni esempi delle funzioni della classe String: TestStringhe.java.
Lezioni 5 e 6
Le strutture di controllo.
Un programma che, dato un numero intero n, calcola la massima potenza di 2 che divide n (esempio: se n = 24, il programma trova 2^3): CalcolaPotenze.java.
Un programma che definisce un numero intero a caso tra 1 e 10000 finché tale numero non risulta essere il “numero bersaglio” 5. Dopo di che stampa il numero di tentativi che sono stati necessari per trovarlo: CercaNumero.java.
Un programma che simula un certo numero di lanci di due dadi e calcola il numero di volte che si ottiene come punteggio un doppio 6. Il programma inoltre stampa la frequenza con cui si è presentato l’evento e la probabilità: DueDadi.java.
Un programma che stampa la tabella pitagorica dei numeri da 1 a 10 in un formato incolonnato: Tabella.java.
Un programma che stampa la “sequenza 3N+1” (cioè la sequenza in cui il primo elemento è un numero dato e il generico elemento è ottenuto dal precedente dividendolo per 2 se è pari, moltiplicandolo per 3 ed aggiungendo 1 se è dispari): Sequenza.java.
Un programma che sceglie un numero a caso e stabilisce se è pari o dispari: NumeriPariDispari.java. Un programma che simula il lancio di due dadi un numero fissato di volte e stabilisce quante volte si presenta il punteggio “doppio sei”: DoppioSei.java. Un programma che scrive una parola di 5 lettere scelte a caso: CostruttoreParole.java. Un programma che inventa una parola a caso di 10 lettere e stabilisce se tale parola contiene il carattere ‘d’: RicercaLettera.java.
Lezione 7
Lettura di dati in input da console: un modello (piuttosto grezzo) per leggere dati da console di tipo int, double o String: LeggiDati1.java.
Un secondo modello per leggere dati da console, sempre di tipo int, double o String (in questo secondo caso c’è un controllo migliore del tipo di dato inserito, che se è errato, viene riletto): LeggiDati2.java.
Lezione 8
Utilizzo delle procedure. Un semplice programma che chiede all’utente di indovinare, entro tre tentativi, un numero “pensato” dal calcolatore: IndovinaNumeri.java. Il programma utilizza un modo per leggere dei dati dalla finestra di console riassunto nelle classi della Lezione 7.
Esempio di variabili di classe: il programma precedente con una variante: una variabile che conta il numero di partite vinte: IndovinaNumeri1.java.
Una classe che contiene vari metodi (funzioni matematiche) utilizzabili in altre classi: MiaMath.java. Esempio di utilizzo della classe MiaMath: ProveMiaMath.java. Un albero di Natale: Albero.java.
Un programma che stampa una carta da gioco: ScegliCarta.java; un programma che testa il teorema di Cesaro (utilizzando l’algoritmo di Euclide): TestEuclide.java.
Lezione 9
Classi e oggetti. Un primo esempio di classe: la classe Studente.java e un esempio di sua applicazione: ProvaStudenti.java.
Un altro esempio di classe: la classe Attore.java e un suo utilizzo (molto grezzo, brutto e criticabile) GestioneTeatro.java.
Lezione 10
Esempi di classi e oggetti: una classe che definisce il comportamento di una formica: Formica.java e una classe che simula e studia il movimento di tre formiche nel piano: MarciaFormiche.java.
Riutilizzo della classe Formica.java per ottenere un’altra simulazione (un JApplet): AppletMarciaFormiche.html
File utilizzati per la costruizione dell’applet (oltre a Formica.java): FormicaCompleta.java, MarciaFormiche2.java
Lezione 11
La classe ContoCorrente.java (commentata con sintassi corretta per il programma javadoc) e la classe TestConto.java che testa la classe precedente.
La classe Anagrafe.java che utilizza variabili static e non static (scopo della classe: assegnare ad ogni oggetto un numero progressivo cioè al primo oggetto creato il numero 1, al secondo oggetto creato il numero 2 ecc.).
La classe ProvaStringBuffer.java per testare la diversa efficienza della classi String e StringBuffer.
Lezione 12 (array)
Alcuni esempi di utilizzo di array. La classe Conto.java e un suo utilizzo nella classe SimulazioneConto.java.
Lezioni 13 e 14 (Ereditarietà)
Discussione della soluzione del primo esercizio della prima lista degli esercizi proposti in aula computer: Terne.java.
Primo esempio di ereditarietà: la classe Veicolo.java e le sottoclassi: Auto.java, Camion.java e Moto.java. Una classe per testarle: TestVeicolo.java.
Lezione 15 e 16 (Ereditarietà: costruttori di sottoclassi, super e super())
Esempio di classi e sottoclassi: un contratto telefonico per un telefono fisso e un telefono mobile hanno in comune alcune caratteristiche riassunte dalla classe ContrattoTelefonico.java. La sottoclasse ContrattoFisso.java riscrive un metodo delle superclasse ed eredita gli altri. Analogamente la sottoclasse ContrattoMobile.java eredita tutti i metodi di ContrattoTelefonico, salvo riscriverne uno per il calcolo della tariffa. La classe TestContrattoTelefonico.java testa le classi precedenti.
Esempio: la classe Orologio.java e la classe OrologioCucu.java (trattate negli esempi discussi in aula computer).
Lezione 17 (Polimorfismo)
Le classi Veicolo, Auto, Camion e Moto modificate per far vedere un esempio di polimorfismo: Veicolo1.java, Auto1.java, Camion1.java, Moto1.java. Una classe per testarle: TestVeicolo1.java.
Altro esempio di polimorfismo: la classe Lavoratore.java con le sottoclassi: Capo.java, Impiegato.java, Fattorino.java e la classe Test: TestLavoratori.java.
Lezione 18 (Esempi di polimorfismo e classi astratte; il metodo toString() di Object)
Un esempio di classe astratta: la classe FormaGeometrica.java e le sue sottoclassi Quadrato.java, Rettangolo.java e Cerchio.java. Una classe per testare le tre classi dette e mostrare un esempio di polimorfismo: TestForme.java.
Il metodo toString() della classe Object. Un esempio di utilizzo: la classe Fiore1.java (senza la soprascrittura del metodo toString()) e la classe Fiore2.java (con la soprascrittura del metodoToString()) e un test delle due classi: TestFiori.java.
Lezione 19 (Primi esempi di applet)
(N.B. per visionare gli applet proposti qui e in seguito è necessario avere un navigatore con Java abilitato).
Un applet che disegna alcune forme geometriche (un segmento, il perimetro di un rettangolo, un ellisse e un rettangolo, in vari colori): ProvaApplet1.java. Visiona l’applet: ProvaApplet1.hml.
Un applet che scrive una stringa e qualche forma geometrica: ProvaApplet2.java. Visiona l’applet: ProvaApplet2.html.
Un applet che disegna ancora qualche forma geometrica: ProvaApplet3.java. Visiona l’applet: ProvaApplet3.html.
Una classe che realizza un’automobilina: Automobile.java e l’utilizzo della classe in un applet per disegnare vari oggetti ti tipo Automobile: ProvaApplet4.java. Visiona l’applet: ProvaApplet4.html.
Lezione 20 (Esempi di Applet, utilizzo della classe Graphics2D)
Un applet che stampa stringhe in font diversi: AppletStringa.java. Visiona l’applet: AppletStringa.html.
Un applet che disegna un cerchio sempre nel centro dell’applet (comunque venga modificata la finestra dell’applet): AppletCerchio.java. Visiona l’applet: AppletCerchio.html.
Un applet che traccia il grafico della funzione y = sen(x): AppletSeno.java. Visiona l’applet: AppletSeno.html.
Ancora esempi di applet e utilizzo di Graphics2D: tracciare linee più o meno grosse (con setStroke()): AppletGraphics2D.java. Visiona l’applet: AppletGraphics2D.html. Colorare figure in modo non omogeneo: AppletGrAv.java. Visiona l’applet: AppletGrAv.html.
Lezione 21 (Gestione di eventi)
Un applet che reagisce alle azioni del mouse: AppetMouse1.java e la classe (esterna) che definisce il ricevutore di eventi: RicevitoreEventiMouse.java. Lo stesso applet ma con la classe interna: AppletMouse2.java. Un applet che disegna un quadrato in varie zone dello schermo (in corrispondenza al punto in cui viene premuto il mouse): AppletMouse3.java. Visiona l’applet: AppletMouse3.html.
Lezioni 22 e 23 (gestione eventi e bottoni)
Un applet che mostra un quadrato che cambia colore quando viene premuto il mouse al suo interno: AppletMouse4.java. Visiona l’applet: AppletMouse4.html. Un applet che reagisce ai movimenti del mouse, scrivendo le coordinate del punto in cui si trova il mouse: AppletMovimento.java. Visiona l’applet: AppletMovimento.html. Un applet che disegna un segmento definito dai movimenti del mouse: AppletDisegno.java. Visiona l’applet: AppletDisegno.html. Un applet che utilizza un bottone: AppleConBottone1.java. Visiona l’applet: AppletConBottone1.html.
Utilizzo di una classe interna anonima per associare un ricevitore di eventi: l’applet AppletMouse4Nuovo.java che si comporta esattamente come AppletMouse4 ma con un implementazione diversa. Visiona l’applet: AppletMouse4Nuovo.html.
Lezione 24 (JApplet, animazioni – Array).
JApplet: l’applet “AppletConBottone1” rifatto in un JApplet: AppletConBottone2.java. Visiona l’applet: AppletConBottone2.html.
Un JApplet con un disegno e un bottone: Movimento1.java. Visiona l’applet: Movimento1.html. Il JApplet precedente lievemente modificato per ottenere un’animazione: Movimento2.java. Visiona l’applet: Movimento2.html. La stessa animazione completata con un bottone che la fa partire e la ferma (utilizzo del metodo stop() del JApplet): Movimento3.java. Visiona l’applet: Movimento3.html.
Esempi di Layout: tre applet che utilizzano BorderLayout, GridLayout e FlowLayout: primo esempio: EsempioLayout1.java. Visiona applet: EsempioLayout1.html. Secondo esempio:EsempioLayout2.java. Visiona applet: EsempioLayout2.html. Terzo esempio: EsempioLayout3.java. Visiona applet: EsempioLayout3.html.
Un ultimo esempio: un parallelepipedo che ruota: AppletSolido.html. Le classi utilizzate per ottenere l’applet: Parallelepipedo.java; SpazioToPiano.java; AppletSolido.java.
Ulteriore collezione di esempi di JApplet (lezioni 21-24)
- Un primo esempio di JApplet che disegna un quadrato (il disegno viene effettuato in una classe esterna): la classe esterna: DisegnoQuadrato.java e il JApplet che realizza il disegno: JAppletDisegno.java. Visiona l’applet: JAppletDisegno.html.
- Lo stesso esempio rifatto con l’utilizzo di una classe interna: JAppletDisegno2.java. Visiona l’applet: JAppletDisegno2.html.
- Sempre lo stesso applet, ma con l’utilizzo di una classe interna anonima per la costruzione del disegno: JAppletDisegno3.java. Visiona l’applet: JAppletDisegno3.html.
- Un JApplet che disegna un poligono (utilizzo di oggetti Graphics2D): JAppletPoligono.java. Visiona l’applet: JAppletPoligono.html.
- Un JApplet che è sensibile alle azioni del mouse (Scrive un messaggio che viene modificato quando il puntatore del mouse entra o esce dal pannello):
- Versione 1: JAppletMouse.java. Visiona l’applet: JAppletMouse.html.
- Versione 2: JAppletMouse2.java. Visiona l’applet: JAppletMouse2.html. (In questo caso viene costruita una nuova classe interna per la gestione degli eventi).
- Versone 3: JAppletMouse3.java. Visiona l’applet: JAppletMouse3.html. (In questo caso e’ la stessa classe dell’applet che implementa l’interfaccia MouseListener – Utilizzo del parametro implicito this).
- Un JApplet che disegna un cerchio che cambia colore ogni volta che viene cliccato il tasto sinistro del mouse: CerchioColorato.java. Visiona l’applet: CerchioColorato.html.
- Un JApplet che e’ sensibile al movimento del mouse (usa l’interfaccia MouseMotionListener). Ad ogni movimento del mouse il colore dell’ellisse disegnata viene modificato: EllisseColorata.java. Visiona l’applet: EllisseColorata.html.
- Un esempio di un JApplet che disegna un quadrato che può essere spostato con il mouse: QuadratoFluttuante.java. Visiona l’applet: QuadratoFluttuante.html.
- Un JApplet con un bottone e un campo di testo che scrive un numero. Ogni volta che viene premuto il bottone il numero nel campo di testo viene incrementato di 1: BottoneContatore.java. Visiona l’applet: BottoneContatore.html.
- Un JApplet simile al precedente, solo che l’incremento viene fatto automaticamente, senza l’intervento del bottone, ma con l’utilizzo di un oggetto della classe Timer: ContatoreAutomatico.java. Visiona l’applet: ContatoreAutomatico.html.
- Un JApplet come il precedente, ma con l’aggiunta di un bottone che avvia o ferma l’animazione: ContatoreAutomatico2.java. Visiona l’applet: ContatoreAutomatico2.html.
- Un’animazione che mostra un rettangolo che si muove oscillando avanti e indietro per la finestra: JAppletAnimazione.java. Visiona l’applet: JAppletAnimazione.html.