Da consegnare su campus entro Domenica 6 Settembre alle ore 23:00

ISTITUTO TECNICO INDUSTRIALE STATALE
Guglielmo Marconi
Verona
Programma svolto di Informatica
Anno scolastico 2014-2015
Classe 4° Ai
Docenti:
Maurizio Benedetti, Antonio Losito
Totale ore … (…. teoria e … di laboratorio)
Testi e materiali utilizzati
Appunti personali
Materiale didattico di uso collegiale, disponibile
sulla rete LAN “Marconi”
Riferiementi a siti
Fotocopie di libri della biblioteca
Compiti per le vacanze
Da consegnare su campus entro Domenica 6 Settembre alle ore 23:00
Tempo stimato:
5 minuti al giorno x 90 giorni di vacanza = 450’ = 7 ore e 30 minuti in totale.
Ripassare tutti gli argomenti svolti, teorici e pratici, in modo da essere in grado di esporli con
sicurezza fin dal PRIMO giorno di scuola.
Approfondire un argomento a scelta e preparare una presentazione da proporre alla classe
Caricare su Campus
Progetto a scelta, non banale, che coinvolga almeno tre classi,
organizzato come al solito (vedere documento su Campus):
1. Testo del problema
2. Analisi e ipotesi aggiuntive
3. Diagramma delle classi con legenda (ricopiare, almeno in parte UML-Simboli e Significato)
4. Diagramma degli Oggetti
5. Algoritmi e metodi Java documentati secondo lo standard Javadoc
6. Creazione di un progetto con
• Definizione delle classi (in accordo con check list: opportunamente documentate e commentate)
• Definizione di una classe Main con metodo main () per istanziare alcuni
oggetti delle classi realizzare e serimentare i loro metodi principali
• Una applicazione (grafica o no) che usi le classi realizzate
Buone vacanze
H:\Programmi-Relazioni\2014-2015\INI4AiS.doc
1
Programmazione in Java
Ripasso generale degli argomenti svolti lo scorso anno
La struttura di un programma
Variabili e costanti
Espressioni e loro valutazione
Espressione condizionale (operatore ternario)
Gestione dell’input e dell’output con le classi JOptionPane, JFrame
Istruzioni: sequenza, selezione, iterazione
Sottoprogrammi e passaggio dei parametri (per valore, per riferimento)
Concetti di visibilità (scope) e periodo di vita di una variabile
Tipi strutturati
Vettori e matrici
La classe Math e i suoi metodi principali
La classe String e i suoi metodi principali
Tipi particolari di funzioni (metodi)
Funzioni sovraccariche (overloading)
Funzioni sovrapposte (overriding, concetto di polimorfismo)
La funzione toString( ), da [re]implementare in ogni classe realizzata
Programmazione Orientata agli Oggetti (OOP)
Classi e astrazione sui dati (approfondimento)
Classi e Oggetti
Proprietà (membri dato, variabili di istanza e variabili di classe)
Costruttori e metodi (membri funzione)
Incapsulazione (encapsulation) e information hiding
Ereditarietà (specializzazione)
Polimorfismo (e metodi in overriding, come toString( ))
Utilizzo di classi della libreria Java:
Math,
String: metodi classici e anche matches(<EspressioneRegolare>)
Random con i metodi nextInt( ), nextInt(int), nextDouble( )
La costruzione di classi con utilizzo dei “modificatori di accesso” private, protected, public
Membri dato (in genere private o protected)
Costruttori
di default (creato della macchina se il programmatore non ne fornisce uno)
senza parametri
con parametri e, con diversi prototipi/header (costruttori sovraccarichi, in overloading)
Membri funzione (metodi) di gestione (in genere public).
Passaggio dei parametri per riferimento degli argomenti che rappresentano oggetti
Il riferimento THIS per distinguere membri dato da parametri con lo stesso nome.
Ereditarietà
Derivazione tra classi.
Una classe base (superclasse) si specializza in una o più classi derivate
Una classe derivata estende una sola classe base (superclasse), ma può implementare più
interfacce.
Metodo super per richiamare costruttore della superclasse.
Polimorfismo
toString( ) e metodi con lo stesso prototipo (intestazione, header o signature/firma) presenti in
una gerarchia di classi).
H:\Programmi-Relazioni\2014-2015\INI4AiS.doc
2
Design Pattern
Concetto di Design Pattern
Model View Controller (Tutorial in inglese http://www.newthinktank.com/2013/02/mvc-java-tutorial/ )
Composite
Observable – Observer
Singleton (cenni)
Strutture dati astratte
Strutture dati astratte con utilizzo delle collezioni LinkedList e ArrayList:
Pila: sequenza con disciplina LIFO – Last In First Out
Coda: sequenza con disciplina FIFO – First In First Out
Cenni sugli Alberi binari, con riferimento all’implementazione TreeSet:
definizione, caratteristiche, utilizzo della struttura dati albero
visita con iteratore, che ottiene l’informazione ordinata, in accordo con
compareTo dell’interfaccia Comparable
Attraversamento di collezioni
Iteratore avanzato (for each o for enhanced)
Attraversamento con for e get(i)
Tecniche HASH
Etimologia, definizione ed esempi
Semplici funzioni hash per trasformare una chiave in un intero
(maggiore o uguale di zero nel caso debba essere utilizzato come indice di un vettore)
Il “contratto” tra i metodi equals e hashCode:
ob1.equals(ob2) → ob1.hashCode() == ob1.hashCode()
ma se ob1.hashCode() == ob1.hashCode() NON è detto che i due oggetti siano uguali
Primo utilizzo delle tecniche hash: la gestione della Symbol Table di un compilatore
Strutture di dati basate su tecniche Hash: HashSet, HashMap
Svantaggi delle strutture basate su hash: si perde l’eventuale ordinamento.
Unified Modeling Language (Standard o Java-like prodotto da NetBeans)
Simboli di UML e loro significato (vedere documento su Campus)
Aggregazione (e composizioni) di classi
Diagramma delle classi
Diagramma degli oggetti
Progettazione e documentazione di applicazioni in UML
Trasporto ferroviario di liquidi
Gestione Istituto
Cambia Soldi
Gestione Serbatoi
Osservatorio meteorologico (verifica scritto e pratico di venerdì 30/05/14)
H:\Programmi-Relazioni\2014-2015\INI4AiS.doc
3
Strutture di memorizzazione su memoria di massa
File e stream
Concetti di nome logico (nome interno), nome fisico (nome esterno)
Primitive del linguaggio Java per apertura, chiusura, lettura, scrittura, controllo di fine file
Algoritmo di visita (scorrimento) Java-like
File di testo
Lettura, scrittura
File di testo formattato (su più righe, con tab o altro carattere di separazione)
Elaborazioni:
riga per riga con readLine ( ) e
token per token con uso del metodo s.split( <EspressioneRegolare>)
File di oggetti
Classi che implementano l’interface Serializable
Scrittura e lettura con una sola operazione di oggetti che contengono altri oggetti
Laboratorio
Per ciascun argomento affrontato dal punto di vista teorico, sono state effettuate esercitazioni in
gruppi di lavoro utilizzando l’IDE (ambiente di sviluppo integrato) NetBeans.
Collezioni e attraversamento con iteratore avanzato for each
Eccezioni in Java (cenni)
Interfaccia GUI (JFrame)
Progettazione e implementazione di ADT (Abstract Data Type)
Istante, Razionale, Point2D
Esperienze
Trasporto Ferroviario Liquidi
Consorzio di Osservatori Meteorologici
Supermercato con casse e operazioni di cassa
File di testo
File formattati con tab
File di indirizzi, temperature, testo generico contenente interi
Mail merge di un file di indirizzi formattato e di un file di testo con marcatori
File binari (file di oggetti)
Memorizzazione su disco e lettura di oggetti (contenenti altri oggetti)
Verona, 03/06/2015
I rappresentanti di classe
Alessia Gobbetti
I Docenti
Piero Giaccone
H:\Programmi-Relazioni\2014-2015\INI4AiS.doc
Maurizio Benedetti
4
Antonio Losito