IT
EN
FR
عربي
Informazioni
Catalogo Corsi
Servizi per le aziende
Progetti di Formazione
Cerca
Menu secondario
Area dell'Ingegneria
Nessun elemento selezionato
Algoritmi e programmazione avanzata (vecchio programma)
Prof. Maurizio Lenzerini
(Università "La Sapienza" di Roma (Roma - Italy))
Prof. Giuseppe De Giacomo
(Università "La Sapienza" di Roma (Roma - Italy))
Lingua contenuti:
Inglese
Descrizione del modulo
Il corso approfondisce metodi e strumenti dell'ingegneria del software. I temi centrali sono: il ciclo di vita del software, con particolare riguardo alle fasi di specifica dei requisiti e di progettazione, il paradigma ad oggetti la notazione UML e il linguaggio Java.
Prerequisiti
Si richiede la conoscenza dei fondamenti della programmazione e di un linguaggio di programmazione orientato agli oggetti, tipicamente Java.
Scopi
L'obiettivo del corso è lo studio e l'approfondimento degli aspetti fondamentali relativi alla progettazione del software: le qualità del software, il concetto di modulo e la modularizzazione, la distinzione tra analisi (concettualizzazione), progetto e realizzazione, la nozione di specifica. Gli argomenti vengono trattati utilizzando la notazione di UML (Unified Modeling Language) per la fase di analisi, e il linguaggio Java per la fase di progetto e realizzazione. Alla fine del corso lo studente dovrebbe avere acquisito tecniche e metodi per affrontare problemi di progettazione dei programmi secondo una metodologia basata sulla distinzione tra concettualizzazione, progetto e realizzazione, sulla modularizzazione e sulla orientazione agli oggetti.
Contenuti
Il ciclo di vita del software
Le qualità del software
Qualità esterne
Qualità interne
La modularizzazione
Modularizzazione del software
Principi di modularizzazione
Introduzione all'analisi e al linguaggio UML
Introduzione al linguaggio UML
Il diagramma delle classi e degli oggetti
Le associazioni in UML
Istanze di associazioni: link
Più associazioni tra due classi
Nomi di associazioni
Ruolo delle associazioni
Proprietà di associazioni
Associazioni n-arie
Vincoli di molteplicità
La generalizzazione
Generalizzazioni disgiunte
Generalizzazioni complete
Ereditarietà multipla
Differenza tra due is-a e una generalizzazione
Metodologia di analisi
Il diagramma degli use case
Il diagramma degli stati e delle transizioni
Introduzione a java come linguaggio orientato agli oggetti
Testi
Lucidi del corso
Esercitazioni
Gli esercizi consisteranno in applicazioni semplificate dei concetti studiati nel corso.
Titolare dell'insegnamento
Nessun Docente attualmente disponibile per questo corso
Docente Video
Prof.
Maurizio Lenzerini
- Università "La Sapienza" di Roma (Roma - Italy)
Prof.
Giuseppe De Giacomo
- Università "La Sapienza" di Roma (Roma - Italy)
Elenco delle lezioni
Lezione n. 1: Introduzione alla progettazione del software
Visualizza argomenti della lezione
Maurizio Lenzerini
Programma del corso
Il contesto organizzativo dello sviluppo del software
Esercizio 1
Classificazione
Esercizio 2
Classificazione (II)
Ciclo di vita del software
Lezione n. 2: Le qualita' del software
Visualizza argomenti della lezione
Maurizio Lenzerini
Introduzione ai fattori di qualita'
Esercizio 3
Qualità esterne
correttezza
Affidabilità
Robustezza
Usabilità
Estendibilità
Riusabilità
Interoperabilità
Qualità interne
Efficienza
Strutturazione e Modularita'
Comprensibilità
Verificabilità
Manutenibilità e Portabilità
Esercizio 4
Lezione n. 3: La modularizzazione
Visualizza argomenti della lezione
Maurizio Lenzerini
Modularizzazione del software
Modulo
Modularizzazione
Componenti di un modulo
Principi di modularizzazione
I 4 dogmi della modularizzazione
Esempi negativi
Esempi positivi
Esempio di cattiva modularizzazione
Esempio di buona modularizzazione
Effetti di una buona modularizzazione
Approccio orientato agli oggetti
Funzioni od Oggetti?
Principi di base
Fattori di qualita' influenzati dall'approccio OO
Lezione n. 4: Introduzione all'analisi e al linguaggio UML
Visualizza argomenti della lezione
Maurizio Lenzerini
Cosa e' l'analisi
Uso di UML nella nostra metodologia
Il diagramma delle classi e degli oggetti
Oggetti in UML
Classi UML
Rapporto tra classi e istanze
Attributi in UML
Importanza dell'identificatore di oggetto
Esercizio
Obiettivo
Schema concettuale
Modelli e metodi per l'analisi
Introduzione al linguaggio UML
Diagrammi
Lezione n. 5: Le associazioni in UML
Visualizza argomenti della lezione
Maurizio Lenzerini
Osservazioni sulle classi
Relazioni in matematica
Le associazioni
Definizione di associazione
Esempi
Istanze di associazioni: link
Piu' associazioni tra due classi
Esempio
Esercizio
Nomi di associazioni
Ruolo delle associazioni
Lezione n. 6: Proprieta' di associazioni
Visualizza argomenti della lezione
Maurizio Lenzerini
Attributi di associazioni
Esempio
Notazione
Esercizio 1
Associazioni n-arie
Esempio
Associazioni n-arie con attributi
Differenza tra classi e associazioni
Vincoli di molteplicità
Molteplicità delle associazioni
Esempio
Notazioni
Esempi di molteplicità
Esercizio 2
Esercizio 3
Molteplicità di attributi
Esempio
Attributi multivalore nelle istanze
Introduzione alla generalizzazione
Lezione n. 7: La generalizzazione
Visualizza argomenti della lezione
Maurizio Lenzerini
La generalizzazione in UML
Esempio di generalizzazione semplice in UML
Ereditarietà in UML
Esempio-Ereditarità in UML : istanze
Esempio - Ereditarieta' sulle associazioni
Ereditarieta' sulle molteplicita'
Esercizio: individuare gli errori
Generalizzazione in UML con piu' sottoclassi
Tipi di generalizzazione
Generalizzazioni disgiunte
Generalizzazioni complete
Ereditarieta' multipla
Differenza tra due is-a e una generalizzazione
Lezione n. 8: Metodologia di analisi
Visualizza argomenti della lezione
Maurizio Lenzerini
Specializzazione
Esempio
Le operazioni di classe
Esempio
Formato
Osservazioni sulle operazioni
Esercizio 1
Commenti in UML
Aspetti metodologici
Tabella riassuntiva
Passi metodologici
Controllo di qualita' sul diagramma delle classi
Dicotomia tra classe e attributi
Scelta tra attributi e classi
Esempio
Lezione n. 9: Altri diagrammi in UML
Visualizza argomenti della lezione
Maurizio Lenzerini
Aspetti metodologici (continuazione)
Dicotomia tra classi e associazioni
Scelta tra classi e associazione
Esempio
Verifiche sulla generalizzazione
Il diagramma degli use case
Use case
Use case: Attori
Componenti di un diagramma degli use case
Associazione
Incluzione
Estensione
Generalizzazione
Esempio
Lezione n. 10: Il diagramma degli stati e delle transizioni
Visualizza argomenti della lezione
Maurizio Lenzerini
Il diagramma degli stati e delle transizioni
Stati e transizioni
Esempio
Esempio 2
Attività
Esempio
Stato composto
Esempio
Esercizio
La specifica di classi e use case
Specifica di una classe
Specifica di un Use Case
Specifica di una operazione
Esempio
Esempio 2
Lezione n. 11: Introduzione a java come linguaggio orientato agli oggetti. Lezione 1
Visualizza argomenti della lezione
Giuseppe De Giacomo
Introduzione a Java
Paradigmi di programmazione
Java
Java virtuale Machine
Un programma Java
Compilazione ed esecuzione di programmi
Preparazione del Testo del Programma
Compilazione del Programma
Eseguire un programma
Anatomia di un (semplice) programma Java
Fattoriale .java
Elementi di sintassi
Tipi predefiniti
main
System.out.print
Operatore di concatenazione tra stringhe
Lezione n. 12: Introduzione a java come linguaggio orientato agli oggetti. Lezione 2
Visualizza argomenti della lezione
Giuseppe De Giacomo
Definizioni di classi Java
Elementi di una classe Java
Esempio
Osservazioni: campi
Osservazioni: modificatori d'accesso
Uso di Java
Uso della classe definita
Esempio di cliente della classe persona
Riferimenti e oggetti
Allocazione statica e dinamica
Esempio
Assegnazione tra riferimenti
Assegnazione tra tipi predefiniti
Deallocazione degli oggetti
Esempio
Lezione n. 13: Introduzione a java come linguaggio orientato agli oggetti. Lezione 3
Visualizza argomenti della lezione
Giuseppe De Giacomo
public e private
Esempio
Impatto metadologico
Overloading di funzioni
Esempio
Costruttori
Cos'è un costruttore
Esempio
Invocazione del costruttore
Esempio
Analizziamo la costruzione di un oggetto
Inizializzazioni implicite dei campi di una classe
Overloading di costruttori
Esempio di utilizzo
Costruttore standard
Lezione n. 14: Introduzione a java come linguaggio orientato agli oggetti. Lezione 4
Visualizza argomenti della lezione
Giuseppe De Giacomo
Esercizi di realizzazioni di classi e clienti
Esercizio (classe Automobile)
Funzioni static
Esercizio (cliente)
Riferimento implicito this
Lezione n. 15: Introduzione a java come linguaggio orientato agli oggetti. Lezione 5
Visualizza argomenti della lezione
Giuseppe De Giacomo
Package
Esempio
Import
Esempio
Sottopackage
Esempi
Package e direttori
Livelli di accesso: classi
File sorgente e classi
Livelli di accesso: campi
Regole di visibilità
Esempio
Osservazioni su informazioni hiding
Osservazioni sui package
Lezione n. 16: Introduzione a java come linguaggio orientato agli oggetti. Lezione 6
Giuseppe De Giacomo
Lezione n. 17: Introduzione a java come linguaggio orientato agli oggetti. Lezione 7
Giuseppe De Giacomo
Lezione n. 18: Introduzione a java come linguaggio orientato agli oggetti. Lezione 8
Giuseppe De Giacomo
Lezione n. 19: Introduzione a java come linguaggio orientato agli oggetti. Lezione 9
Giuseppe De Giacomo
Lezione n. 20: Introduzione a java come linguaggio orientato agli oggetti. Lezione 10
Giuseppe De Giacomo