Programmazione Orientata agli Oggetti

Documenti analoghi
Programmazione ad Oggetti

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Fondamenti di informatica. Introduzione al corso di Fondamenti di informatica I e II (informatici) Anno Accademico

Basi di dati I

Corso di Laurea Ingegneria Informatica

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

FONDAMENTI DI INFORMATICA II

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011. Benvenuti al Corso!

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA

Fondamenti di Informatica (lettere A-I) A

Metodi Avanzati di Programmazione (II Anno) a.a. 2011/2012 Docente: Annalisa Appice Dipartimento di Informatica Università degli Studi Bari Aldo Moro

Corso di Laurea Ingegneria Informatica

Fondamenti di Informatica T-1

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Introduzione. Fondamenti di Informatica 1. Dispensa 1 Gennaio Contenuti. Alfonso Miola. K Corso di Fondamenti di Informatica 1

Algoritmi e Strutture Dati

Corso Programmazione Java Standard

algoritmi e strutture di dati

Sistemi Operativi corso A, a.a

Linguaggi. Corso di Laurea in Ingegneria delle Telecomunicazioni A.A

INGEGNERIA DEL SOFTWARE

Sistemi Distribuiti Anno accademico 2009/10

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Elementi di Informatica

Università di Padova Facoltà di Ingegneria Laurea triennale Corsi della classe 9 Ingegneria dell Informazione

MANAGEMENT DELLA QUALITA CONTROLLO STATISTICO DELLA QUALITA ORDINAMENTO 509. Prof. Maria Francesca Renzi Prof. Paola Vicard

Organizzazione del corso

Grafica ed interfacce per la comunicazione. Scienze della Comunicazione A.A.2013/14

Corso di Fondamenti di Informatica e Laboratorio T-AB

Informazioni sul corso e sull esame

FONDAMENTI DI RETI DI TELECOMUNICAZIONI

Fondamenti di Informatica T1"

Corso di RETI DI COMUNICAZIONE E INTERNET Modulo 1

Elementi di Informatica e Programmazione

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3

Fondamenti di Informatica A.A Studenti

Fondamenti di Informatica

Fondamenti di Informatica

Laurea Magistrale in Ingegneria Informatica - I anno

Fondamenti di Informatica

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

RISULTATI DEL TEST D INGRESSO ai corsi di laurea in Ingegneria Test CISIA in presenza (TIP) - a.a. 2016/2017

Introduzione alla Programmazione per il Web

Fondamenti di Informatica modulo B

Java il Corso Fondamentale

CALCOLATORI ELETTRONICI

FACOLTA DI LINGUE E LETTERATURE STRANIERE

FONDAMENTI DI INTELLIGENZA ARTIFICIALE-M

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

Indice. Prefazione. 3 Oggetti e Java 53

Università degli Studi di Messina Dipartimento di Matematica e Informatica

Biologia della Cellula e dei Tessuti - A

Fondamenti di Informatica

CONTABILITÀ E BILANCIO

Il corso si propone di delineare le caratteristiche dell attività bancaria ed i principi di gestione delle banche.

Dipartimento di Sociologia e ricerca sociale

CORSO DI LAUREA TRIENNALE IN INFORMATICA (CLASSE L-31 - SCIENZE E TECNOLOGIE INFORMATICHE) MANIFESTO DEGLI STUDI PER L'A. A.

Fondamenti di Informatica II Corso (HA-ZZ) Introduzione al corso

Ingegneria del Software II

Transcript:

Programmazione Orientata agli Oggetti a.a. 2012-2013 Presentazione del corso

Informazioni generali Docente: Paolo Merialdo merialdo@dia.uniroma3.it http://merialdo.dia.uniroma3.it Sito del corso: https://sites.google.com/site/roma3poo 2

Il corso CFU: 6 (a meno di debiti formativi) Obiettivi Il corso mira ad esporre principi, tecniche e metodologie per la programmazione orientata agli oggetti Prerequisiti Fondamenti di Informatica. In particolare è richiesto che lo studente: abbia confidenza con i costrutti della programmazione procedurale (variabili, strutture di controllo, sottoprogrammi, paramentri, array) e con i concetti di base della programmazione ad oggetti (classi e oggetti) sappia scrivere algoritmi non banali e codificarli in Java sappia compilare, eseguire e valutare la correttezza di programmi Java Superato il corso, lo studente sarà in grado di: apprezzare e valutare la qualità del codice realizzare applicazioni OO di complessità non banale partecipare alla realizzazione di applicazioni OO di media complessità 3

Carico di lavoro 6 CFU = 6*25 h= 150 h 39h di lezioni frontali 1 h verifiche (vedi dopo) 110 ore di lavoro individuale

Strumenti Linguaggio di programmazione: Java Implementa in maniera chiara e lineare i principi della POO E molto popolare e diffuso (anche nel contesto industriale) Strumenti di sviluppo Eclipse, un IDE professionale, molto usato anche in ambito industriale 5

Contenuti Richiami: Classi e oggetti Riferimenti e tipi primitivi, costruttori, metodi, parametri, information hiding, overloading Qualità del codice Documentazione Accoppiamento e coesione Testing Polimorfismo ed Estensione Interfacce Supertipi e sottotipi, polimorfismo, upcasting, downcasting Estenzione: concetti base Collezioni e Generics Generics, List, Set, Map, utilità Riuso del codice Estensione: approfondimenti Classi astratte Stream, Gestione delle eccezioni, riflessione, annotazioni 6

Impostazione didattica Programmazione Orientata agli Oggetti programmazione "in the large" manutenzione e riuso Questi aspetti si comprendono solo con una esperienza su un progetto di medie dimensioni in continua evoluzione Si propone pertanto uno studio di caso, che evolve durante tutto il corso 7

Lo studio di caso: un gioco di ruolo 8 Classi e Oggetti DiaDia Attrezzo Partita Qualità del codice Polimorfismo Collezioni DiaDia Attrezzo Partita Labirinto Riuso del codice Ereditarietà e composizione Gioco DiaDia Magica Magica Vai Vai Guarda Guarda LettoreComandi Giocatore Giocatore Attrezzo Attrezzo Raccogli Raccogli Posa Posa Personaggio* Personaggio Mago Mago Matto Matto Stream, Eccezioni Gioco DiaDia Partita Partita Vai Vai Guarda Guarda Parser Giocatore Giocatore Gioco DiaDia Magica Magica Vai Vai Guarda Guarda LettoreComandi Giocatore Giocatore Attrezzo Attrezzo Raccogli Raccogli Posa Posa Personaggio* Personaggio Mago Mago Matto Matto LettoreLabirinto LabirintoNonValidoException GUI Gioco DiaDia Vai Vai Guarda Guarda LettoreComandi Giocatore Giocatore Attrezzo Attrezzo Raccogli Raccogli Posa Posa Gioco DiaDia Magica Magica Vai Vai Guarda Guarda LettoreComandi Giocatore Giocatore Attrezzo Attrezzo Raccogli Raccogli Posa Posa Personaggio* Personaggio Mago Mago Matto Matto LettoreLabirinto LabirintoNonValidoException SimpleGUI

Impostazione didattica Alla fine del corso lo studente dovrebbe essere in grado di affrontare un progetto più ampio Allo studente è richiesto di studiare e programmare con continuità durante tutto il corso 9

Materiale didattico Lucidi, codice, esercizi codice a cura del docente (disponibili sul sito web del corso) Libri: Un testo da usare come manuale Java di riferimento può essere utile (ma non è indispensabile). Ad esempio: Ken Arnold, James Gosling, David Holmes "Il linguaggio Java: Manuale Ufficiale (IV Edizione)" - Addison Wesley E' il manuale "ufficiale" del linguaggio. Cay Horstmann "Concetti di informatica e fondamenti di Java" APOGEO Un testo con una forte caratterizzazione didattica Cay Horstmann, Gary Cornell "Core Java2 Vol I: Fondamenti (VII ed. Italiana)" Prentice Hall "Core Java2 Vol II: Tecniche avanzate (VII ed. Italiana)" Prentice Hall Testi molto tecnici e approfonditi (coprono anche molti concetti non affrontati nel corso; gli argomenti del corso sono distribuiti su entrambi i volumi) Ma in rete c'e' moltissima documentazione e la stessa documentazione di JDK può essere sufficiente 10

Preparazione all'esame Preparazione Durante il corso saranno proposti esercizi da svolgere autonomamente, utili per verificare la preparazione ai fini dell esame Due tipologie di esercizi: Verifiche: micro-programmi Java (max 3 classi) mirano a valutare la comprensione di aspetti tecnici puntuali Progetti: ristrutturazioni di piccoli progetti mirano a sviluppare capacità metodologiche Per alcuni esercizi viene proposta una soluzione in aula Talvolta il testo d'esame è basato sui progetti proposti a lezione Per completare la preparazione è utile svolgere tutti i compiti d'esame degli ultimi due anni scrivendo non solo la soluzione, ma anche il codice per verificarne la correttezza ma una preparazione effettuata solo sui testi di esame non è efficace 11

Esame L'esame si compone di due prove, e per superarlo è necessario prendere la sufficienza in entrambe le prove (quindi chi non supera la prima prova non è ammesso alla seconda) Prima prova (peso: 5.5/31.5): 7 quiz a risposta chiusa Mirano a verificare la conoscenza di aspetti puntuali della programmazione orientata agli oggetti Valutazione: risposta esatta: punteggio positivo (+1) risposta errata: punteggio negativo (-0.5) risposta nulla: 0 2 Esercizi di programmazione corretti automaticamente Mirano a verificare la capacita di utilizzare librerie standard essenziali Valutazione: risposta esatta: punteggio positivo (+2) risposta errata o nulla: 0 Sufficienza: 5 punti Seconda prova (26/31.5): Esercizio di programmazione al calcolatore Di solito, si tratta di ristrutturare una piccola applicazione, al fine di migliorarla applicando correttamente i principi della POO Le linee secondo le quali la applicazione deve essere ristrutturata sono indicate nel testo L'obiettivo è quello di verificare se lo studente è in grado di comprendere e applicare i principi della POO 12

Esame I testi degli esercizi della seconda prova d'esame degli appelli passati sono disponibili sul sito Web del corso I quiz e gli esercizi proposti nella prima prova d'esame sono disponibili sul sistema di quiz raggiungibile dal sito Web del corso (cambiano solo i nomi delle variabili) e sono sempre gli stessi da diversi anni! 13

Ripeto 14

Ripeto I quiz e gli esercizi proposti nella prima prova d'esame sono disponibili sul sistema di quiz raggiungibile dal sito Web del corso (cambiano solo i nomi delle variabili) e sono sempre gli stessi da 15 diversi anni!

Percorso HQ (Homework & Quiz) A chi partecipa a questo percorso, durante il corso saranno proposti homework e quiz di verifica Homework: realizzazione di piccoli progetti svolti in gruppi di due persone e consegnati singolarmente nei tempi e nelle modalità indicati dal docente Tre prove di Quiz: svolti con le stesse modalità della prima prova d'esame (singolarmente, senza materiale, nel laboratorio CampusOne, in un tempo fissato, con il SISTEMA DI QUIZ) secondo un calendario stabilito dal docente (e comunicato per tempo agli studenti). Non sono ammesse assenze. Gli studenti che ottengono la sufficienza nelle tre prove di quiz non dovranno sostenere la prima prova di esame e il punteggio assegnato alla prima prova sarà pari al punteggio ottenuto complessivamente con i tre quiz +1 (bonus) Punteggio delle tre prove: (punteggio totale/punteggio max ottenibule) * 5.5

Filosofia del corso Un ingegnere edile progetta edifici Un ingegnere informatico? 17

Filosofia del corso per me non è importante che il codice "funzioni", perché io do per scontato che lo faccia. Le cose che mi interessano sono altre, in primissimo luogo la manutenibilità del codice a distanza di anni e da parte di persone diverse [un imprenditore IT] 18

Filosofia del corso Ingegnere edile: Guarda la casa che ho progettato. Sta in piedi! Ingegnere informatico: Guarda il programma che ho scritto. Funziona! 19

Sindrome del calcolatore Per comprendere la programmazione OO è indispensabile fare esperienza al calcolatore Questo inizialmente comporta sicuramente un investimento di tempo, ma è l'unico modo per ottenere risultati Può essere abbastanza semplice comprendere i singoli dettagli tecnici; la difficoltà consiste nel mettere insieme i concetti e nell'applicarli su vasta scala Solo svolgendo esercizi al calcolatore si può avere una verifica obiettiva della propria comprensione degli argomenti svolti Solo attraverso l'esercizio al calcolatore si può raggiungere un sufficiente livello di approfondimento L'esame è al calcolatore 20

Strumenti JDK (Standard Edition) Scaricare ed installare dal sito della SUN l'ultima versione Documentazione JDK Scaricare ed installare dal sito della SUN Strumenti di sviluppo Un IDE professionale: Eclipse Scaricare da http://www.eclipse.org Eclipse IDE for Java EE Developers (è la versione usata anche in sede di esame) 21

Strumenti Diamo per scontato che lo studente sappia: Usare il Sistema Operativo (variabili di ambiente incluse) Compilare ed eseguire programmi Java 22

Domande