ISTITUTO SUPERIORE STATALE “Pitagora” DIPARTIMENTO DI INFORMATICA ED APPLICAZIONI PROGRAMMA DI INFORMATICA Classe: IV Inf. A Docenti: prof. Alessandro CITARELLA – prof. Andrea QUINTALE Anno scolastico: 2013/2014 Modulo n°1: Dal linguaggio C al C++ Unità Didattica 1: La programmazione ad oggetti in C++ Obiettivi specifici: • Formalizzare oggetti del mondo reale in oggetti del dominio applicativo. • Conoscere e saper applicare le proprietà fondamentali della programmazione ad oggetti. Contenuti teorici: Gli oggetti del mondo reale. Un esempio di dominio applicativo. Caratteristiche e definizione di classe in C++. Attributi e metodi. Overload dei metodi. Costruttori e distruttori. Specificatori di visibilità. Attributi e metodi statici. Unità Didattica 2: Ciclo di vita degli oggetti e gestione della memoria. Obiettivi specifici: • Saper utilizzare il modello di gestione della memoria in C++ Contenuti: Richiamo degli argomenti relativi ai puntatori nel linguaggio C affrontati in terza. Puntatori e reference. L’algebra dei puntatori. Puntatori e passaggio dei parametri. Puntatori e array. Puntatori e stringhe. Puntatori a strutture. Gli argomenti della funzione main(). Lo stack e l’heap. L’allocazione e la deallocazione dinamica della memoria. La pila - un primo esempio di struttura dati astratta con l’allocazione dinamica. L’allocazione dinamica di oggetti in memoria. L’operatore new. Accesso a variabili e funzioni membro. Puntatori e oggetti. Assegnazione di oggetti di una stessa classe. Puntatori a oggetti e passaggio di oggetti come parametri. Passaggio per valore. Passaggio per indirizzo tramite puntatore. L’operatore delete. Il puntatore all’oggetto corrente this. Classi nello stesso file o in file separati. Unità Didattica 3: Progettazione software in C++. Obiettivi specifici: • Costruzione del dominio applicativo. Contenuti pratici: Esempi di progettazione e costruzione di un dominio applicativo: Il lettore virtuale di DVD; Una semplice chat. Le schede CRC e diagrammi UML delle classi. Tipologie di associazioni tra classi. Generalizzazione delle classi. La gestione dinamica degli array in C++. La classe polilinea. Modulo n°2: Estendere i linguaggi: ADT - Tipi di dato astratti. Unità Didattica 1: Strutture dati notevoli implementate in C++ Obiettivi specifici: • Conoscere le principali strutture dati esistenti. Saper riconoscere ed implementare le operazioni definite sulle strutture dati. • Saper scegliere la struttura dati più adatta alla soluzione di un problema. Contenuti teorici: Insiemi dinamici. Puntatori. Operazioni sugli insiemi. Strutture dati lineari: la Pila, la Coda, la Lista Concatenata. Strutture dati non lineari: il Grafo, l’Albero. Contenuti pratici: Implementazione dei tipi astratti nella programmazione a oggetti. Vettori statici e vettori dinamici. Le collezioni. La lista concatenata. La Pila. La Coda. La Coda Circolare. I Grafi. Gli Alberi. • Modulo n°3: Dal linguaggio C++ al Java Unità Didattica 1: La programmazione ad oggetti in Java Obiettivi specifici: • Imparare un nuovo linguaggio di programmazione. • Conoscere e saper applicare le proprietà fondamentali della programmazione ad oggetti. Contenuti: Tipi di dato astratto e principio di information hiding. Classi e oggetti, attributi e metodi nei diagrammi UML. Caratteristiche, storia e applicazioni del linguaggio Java. Compilazione ed esecuzione di programmi Java: memoria heap e garbage-collector. ECLIPSE, l’ambiente di sviluppo IDE per le applicazioni Java. Struttura di un programma Java e fondamenti del linguaggio (package, classi, membri di una classe, membri statici, costruttori). La struttura base di una classe e il metodo main. Convenzioni di codifica del linguaggio Java. Tipi di dato primitivi e classi wrapper. Stringhe e codifica Unicode. La documentazione automatica dei programmi con Javadoc. Gli array in java. Esempi di classi: Libro, Mensola, Scaffale. Oggetti e riferimenti: implementazione e uso del costruttore di copia. Array come parametri e valori di ritorno dei metodi di una classe. Eccezioni predefinite non controllate. Definizione e generazione delle eccezioni. Gestione dell’Input/Output predefinito in Java. Gestione dell’Input/Output da file di testo. Serializzazione e persistenza degli oggetti su file. Tabelle e indirizzamento hash. Unità Didattica 2: Ereditarietà e Polimorfismo. Obiettivi specifici: • Conoscere e saper applicare le proprietà fondamentali della programmazione ad oggetti Contenuti: Concetti e definizioni. Classi derivate. Overriding e Overloading dei metodi. Gerarchie di classi. Up-Casting e Down-Casting di oggetti. La classe Object e l’overriding del metodo clone(). Classi astratte e metodi astratti. Interfacce. Polimorfismo e binding dinamico. Run-Time Type Identification (RTTY) e operatore instanceof. Esempi di gerarchie di classi: Merci in vendita in un supermercato. Gerarchie di eccezioni e loro gestione. Esempio: L’architettura software di un sito web che commercializza libri, cd audio e film in DVD. Tipi parametrici e classi generiche in linguaggio Java. I contenitori del linguaggio Java: “le collezioni”. Unità Didattica 3: Introduzione alle Graphic User Interface (GUI) in Java Obiettivi specifici: • Saper realizzare applicazioni visuali. Contenuti: Esempio di classe Calcolatrice. La libreria AWT:componenti fondamentali e gestione degli eventi. Contenitori (Finestre e Pannelli). Componenti (Etichette, Caselle di testo, Bottoni). Disposizione dei componenti grafici (FlowLayout, BorderLayout, GridLayout). La gestione degli eventi. Il modello a delegazione. Le aree di disegno. Il pattern architetturale Model-ViewControl e la separazione tra logica di business e GUI. Esempio di applicazione visuale: una calcolatrice. Strumenti Utilizzati • Libri di testo - Corso di Informatica Volume 2 - Formichi e Meini - Editore Zanichelli - Strutture dati e programmazione a oggetti in C/C++ - Volume 2B – Carucci, Giuliani, Bigatti. Editore SEI/Apogeo (fornite agli alunni dispense digitali da pag. 54 a 163) - Il linguaggio C++ - Gallo, Salerno – Editore Minerva Italica - (fornite agli alunni dispense digitali da pag. 93 a 112 / da pag. 139 a pag 155) • Laboratorio di informatica Pozzuoli, lì 30.05.2014 Gli alunni ________________________ ________________________ I Docenti ________________________ ________________________