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