Università degli Studi di Udine
|
|
- Angelica Marchesi
- 7 anni fa
- Visualizzazioni
Transcript
1 Università degli Studi di Udine Facoltà di Scienze Matematiche Fisiche e Naturali a.a. 2004/2005 Laboratorio di Progettazione ed Analisi di Software Orientato agli Oggetti Gianluca Demartini 70152
2 Indice 1 Introduzione Il sistema Electronic Journal Casi d uso Patterns generate architectures Il progetto di EJ Diagramma delle classi Diagrammi di sequenza Diagrammi degli oggetti Conclusioni Bibliografia
3 1 Introduzione In questa relazione verrà descritta l idea di un nuovo sistema di pubblicazione di articoli scientifici [1] ed in seguito verrà presentato, utilizzando le tecniche descritte in [2], un progetto orientato agli oggetti di una possibile implementazione del sistema descritto, utilizzando i Design patterns descritti in [3] e le indicazioni presenti in [4]. 2 Il sistema Electronic Journal Questo nuovo sistema si propone di sostituire il metodo attualmente utilizzato per la pubblicazione degli articoli scientifici noto con il nome di Peer review. In questo nuovo sistema, denominato Electronic Journal, ogni articolo è immediatamente pubblicato dopo il suo invio, senza un processo di revisione. Ogni articolo ha un certo punteggio (dato dalla sua accuratezza, comprensibilità, grado di innovazione, ecc.) che inizialmente vale zero e che viene dinamicamente aggiornato in base ai giudizi dei suoi lettori. Una persona che si iscrive al giornale è un lettore, uno scrittore o entrambe le cose, e possiede anch esso un proprio punteggio (se il sottoscrittore è sia un lettore che uno scrittore avrà due diversi punteggi). Ogni entità con un punteggio (autori, lettori, articoli) ha anche un valore che indica quanto è saldo ed affidabile il suo punteggio (ovvero quanto il suo punteggio è soggetto a cambiamenti repentini nel tempo). Per ulteriori informazioni, e per meglio comprendere quanto segue, si veda [1]. 2.1 Casi d uso Per meglio comprendere il funzionamento del sistema EJ, presentiamo un diagramma di caso d uso. 3
4 E possibile notare l attore generico User, che rappresenta un utente del sistema, che può effettuare le normali operazioni di log in e log off dal sistema. Un utente può essere di tipo Reader, il quale può giudicare un Paper attraverso l espressione di un voto, o di tipo Author che può pubblicare un Paper in modo che venga letto. 3 Patterns generate architectures In [2] viene descritto una metodologia per presentare un progetto orientato agli oggetti in modo tale da far capire a chi lo legge non soltanto il come deve funzionare il sistema progettato, ma anche il perché sono state intraprese certe scelte dai progettisti. A questo scopo viene richiesto ai progettisti di utilizzare una struttura per descrivere le motivazioni che hanno portato alla scelta di utilizzare un certo design pattern [3]. La struttura da utilizzare per descrivere la scelta di un pattern è la seguente: Pattern usato Precondizioni: Operazioni che è necessario svolgere prima di applicare il pattern, ad esempio l elenco dei pattern che bisogna utilizzare prima di questo. Serve per dare una sequenza corretta all applicazione dei pattern al progetto. Problema: Breve descrizione del problema a cui si vuole applicare il pattern. Serve per far capire al lettore se il pattern è applicabile in questa situazione. Vincoli: Descrizione dei conflitti presenti per decidere che azioni intraprendere per risolvere il problema. Soluzione: Spesso accompagnata da un diagramma che mostra la trasformazione di un sistema che non soddisfa il pattern in uno che lo soddisfa. Al termine della descrizione si otterrà così l intero progetto finale, ed il lettore avrà avuto modo di capire come il sistema deve funzionare ed il perché il sistema è stato progettato in quel modo. 4 Il progetto di EJ Mostriamo ora, riguardo al sistema Electronic Journal precedentemente descritto, come ottenere il diagramma delle classi utilizzando le indicazioni fornite in [2]. Mostriamo inoltre i diagrammi di sequenza ed i diagrammi degli oggetti. 4.1 Diagramma delle classi Le principali entità del sistema sono i lettori, gli autori (che possono essere anche lettori), gli articoli, ed i giudizi che i lettori danno agli articoli letti. Avremo quindi un diagramma iniziale di questo tipo. 4
5 In questo diagramma possiamo notare la classe System che rappresenta il sistema che si sta modellando. Contiene un attributo name che rappresenta il nome del singolo sistema. Contiene poi dei metodi utili alla creazione ed autenticazione degli utenti (di vari tipi) del sistema. La classe Person modella l entità utente del sistema e quindi contiene i suoi dati anagrafici ed i relativi metodi per modificare ed accedere a questi dati. Le sottoclassi di Person ereditano i suoi attributi ed i suoi metodi. Nelle varie classi, per leggibilità, non sono stati indicati tutti i metodi getters e setters, che possono essere facilmente ricavati in base ai nomi degli attributi delle classi. Le classi Reader ed Author modellano i due diversi tipi di utenti che il sistema può avere, quindi, oltre agli attributi di anagrafica comuni per tutti i tipi di utenti, queste classi avranno gli attributi relativi ai punteggi dell utente all interno del sistema e i metodi che corrispondono alle azioni che un lettore od un autore possono effettuare all interno del sistema (e quindi votare o pubblicare un articolo rispettivamente). L eredità è di tipo overlapped in quanto un sottoscrittore della rivista può essere sia un lettore che un autore, e quindi dovrà avere dei punteggi diversi per i due casi. E altresì presente la classe Paper che rappresenta gli articoli pubblicati e letti dagli utenti. Questa classe contiene solamente le informazioni relative all articolo (quindi titolo, testo, ) e quelle relative ai punteggi dati dai lettori ad un dato articolo. 5
6 Infine è presente la classe Judgment che rappresenta tutte le votazioni che vengono espresse durante la vita del sistema da parte dei lettori nei confronti degli articoli presenti. La classe Judgment non è essenziale per il funzionamento del sistema, ma è preferibile mantenere traccia di tutti i giudizi espressi nel tempo dai lettori. E comunque richiesto un certo grado di elasticità nel sistema in modo da permettere un eventuale facile modifica delle formule utilizzate per il calcolo dei punteggi delle varie entità. A questo scopo introduciamo il pattern Bridge. Pattern Bridge Precondizioni: Avere una rappresentazione astratta dei componenti del sistema. Si vuole separare l astrazione dalla sua implementazione concreta per far si che le due parti possano variare indipendentemente. Problema: Si desidera che le formule per il calcolo dei punteggi (score, steadiness, ) possano essere facilmente modificabili nel tempo. E necessario quindi che la parte del sistema che le implementa sia separata dalla parte che descrive le entità (lettori, autori, giudizi, ) astratte del sistema. Vincoli: - Soluzione: Costruiamo una classe astratta Implementation con più sottoclassi concrete che rappresentano le varie possibili implementazioni concrete delle formule utilizzate dal sistema per il calcolo dei punteggi delle entità. Leghiamo la classe Implementation con la classe System e aggiungiamo a System un attributo impl che farà da riferimento all implementazione utilizzata. Otteniamo quindi il seguente diagramma: 6
7 Abbiamo indicato con il colore blu le modifiche rispetto al precedente diagramma delle classi (nuove classi e nuovi metodi ed attributi in classi già presenti precedentemente). 7
8 A questo punto si presenta la necessità che la classe System abbia un unica istanza durante la vita del sistema. Pattern Singleton Precondizioni: La classe System deve essere collegata all implementazione delle formule per il calcolo dei punteggi. Problema: Non è desiderabile che la classe System abbia più istanze in quanto il progetto descrive un singolo sistema di giornale elettronico con i propri lettori, autori ed articoli e non una serie di sistemi diversi tra loro. Vincoli: Se si vogliono realizzare sistemi diversi con lettori, autori ed articoli in comune, è possibile aver bisogno di una classe System con diverse istanze concrete. Se invece si vuole descrivere un unico sistema di giornale elettronico con i propri lettori, autori ed articoli è necessario che la classe System abbia un unica istanza. Soluzione: La classe System avrà un attributo in più di nome instance e di tipo System, ed un metodo getinstance() che restituirà un oggetto di tipo System. 8
9 9
10 Infine si vuole che, ogni volta che un lettore legge e valuta un articolo, vengano aggiornati i punteggi dell articolo, dei suoi autori, del lettore e dei precedenti lettori di quell articolo. Pattern Observer Precondizioni: - Problema: Il sistema deve provvedere ad aggiornare i punteggi delle varie entità ogni qualvolta un lettore legge e valuta un articolo. Sarà quindi necessario modificare i valori degli attributi score, steadiness, ecc. nelle varie istanze degli oggetti Reader, Author e Paper. Vincoli: Se si inserisce il pattern Observer sarà necessario tenere traccia di tutti i lettori che nel tempo hanno letto un certo articolo (vista la presenza della classe Judgment è possibile sfruttare quella). Come vantaggio però, con il pattern Observer gli oggetti sono responsabili solamente del loro proprio stato interno, ed i cambiamenti di stato di un oggetto vengono riflessi su di un altro oggetto senza che questo sia fortemente legato al primo. Se non si utilizza il pattern Observer sarà necessario avere una procedura che esegue tutte le chiamate necessarie alla modifica dei punteggi delle varie entità. Soluzione: Vengono aggiunti alla classe Paper i metodi registerreader(), registerauthor(), removereader(), removeauthor(), notifyreader(), notifyauthor(), ed alle classi Reader ed Author un metodo update(). 10
11 11
12 Le classi Observer, ReaderSubject e AuthorSubject sono classi astratte che contengono i metodi del pattern Observer e quindid ne indicano l utilizzo all interno del progetto. I metodi registraauthor() e registrareader() provvederanno a mantenere traccia delle associazioni tra articoli e lettori e tra articoli ed autori mediante l utilizzo del database. In questo modo è anche facilmente gestibile il caso di un articolo con più di un autore, in quanto sarà possibile notificare un numero maggiore di uno di autori in caso di lettura di un loro articolo nello stesso modo in cui è possibile notificare un numero maggiore di uno di precedenti lettori di quell articolo. A questo punto aggiungiamo i colori alle classi del diagramma secondo le indicazioni di [4]: Le classi principali sono Reader, Author e Paper in quanto rappresentano gli attori del sistema, le entità più importanti. Per questo motivo il loro colore è il giallo. La classe System è di colore verde in quanto è una classe di infrastruttura che serve a contenere i metodi di autenticazione utenti e non ha un ruolo primario nel funzionamento del sistema. La classe Person è verde in quanto contiene solamente le informazioni comuni per tutti i tipi di utenti ed è quindi soltanto un anagrafica utenti e quindi una classe secondaria. Le classi Observer, ReaderSubject e AuthorSubject sono classi astratte, relative al pattern Observer, i cui metodi verranno implementati nelle relative sottoclassi, e, non avendo un ruolo attivo nel funzionamento del sistema, anche il loro colore è verde. La classe Judgment è di colore blu in quanto la sua presenza, non essenziale per il funzionamento del sistema, serve solamente a contenere tutti i giudizi espressi dai lettori e quindi è una classe di descrizione che contiene aggregati di dati semplici. La classe Implementation, invece, è di colore arancio in quanto è un punto di estensione del sistema. Da questa classe astratta è possibile definire delle sottoclassi che definiscono diversi funzionamenti del sistema attraverso la determinazione delle formule utilizzate da esso. Le sottoclassi di Implementation sono di colore verde in quanto contengono solamente la definizione dei metodi utilizzati dagli attori principali del sistema (gialli) e può quindi essere vista come una classe di infrastruttura. 12
13 13
14 4.2 Diagrammi di sequenza Descriviamo le situazioni di Pubblicazione di un articolo da parte di un autore e di Lettura e giudizio di un articolo da parte di un lettore. Pubblicazione di un articolo da parte di un autore In sequenza, un utente, attraverso l interfaccia grafica del sistema, farà si che venga chiamato il metodo submit() della classe Author, il quale provvederà a creare una nuova istanza della classe Paper. Dopo queste operazioni, l autore provvederà a registrarsi presso l istanza di Paper in modo da ricevere la notifica di quando i punteggi dell articolo cambieranno (Observer). 14
15 Lettura e giudizio di un articolo da parte di un lettore Dopo che il lettore r1 ha votato attraverso il metodo vota(), chiamato dall interfaccia grafica attraverso un comando dell utente, verrà generata una nuova istanza della classe Judgment in modo da poter tener traccia di tutti i voti espressi dai lettori nel tempo. A questo punto r1 provvederà a chiamare i metodi della classe Implementation (che polimorficamente chiamerà i metodi concreti di una delle sottoclassi) che servono a modificare i punteggi dell articolo p1 che il lettore r1 ha letto. Questi metodi modificheranno i valori dei punteggi di p1 ed in seguito chiameranno i metodi di notifica di p1, i quali provvederanno ad informare l autore ed i precedenti lettori di p1 che i loro punteggi sono cambiati. (Observer) Ora sia a1 (che è l autore di p1) che r2 (che è un precedente lettore di p1) provvederanno a chiamare i metodi dell implementazione che servono ad aggiornare i propri punteggi. Infine il lettore r1 chiamerà anch esso i metodi dell implementazione che servono ad aggiornare i propri punteggi e provvederà a registrarsi presso p1 in modo tale da essere notificato successivamente tutte le volte che un altro lettore leggerà l articolo. Può sembrare che gli attori del sistema (lettori, autori, articoli) chiamino direttamente i metodi della classe Implementation pur non avendo associazioni dirette con essa nel diagramma delle classi. La Legge di Demeter dice che, per un metodo m di un oggetto x, il destinatario dei messaggi deve essere x, un argomento di m, un oggetto riferito da un attributo di x, un oggetto creato da m oppure un oggetto riferito da una variabile globale. In questo caso, la legge è rispettata in quanto le informazioni riguardo l implementazione usata, e quindi i metodi concreti che vengono chiamati, sono presenti nella classe System che ha un unica istanza nel corso della vita del sistema. Questa istanza può essere vista come una variabile globale visibile in ogni momento in tutte le classi. Per questo motivo tutti gli attori del sistema (lettori, 15
16 autori, articoli) potranno chiamare facilmente i metodi dell implementazione attraverso l istanza di System. Ad esempio in questo modo: System.getIstance().impl.paper_score(0.2); Reader ed Author dovrebbero quindi essere associati alla classe System, ma questa associazione è stata lasciata alla classe Person che è padre di entrambe. 4.3 Diagrammi degli oggetti Mostriamo ora un esempio, con i vari passi successivi nel tempo, di un possibile funzionamento del sistema progettato, con dei diagrammi degli oggetti, che presentano delle concrete istanze degli oggetti utilizzati nel progetto, con i relativi valori degli attributi. Come prima cosa un autore a1 provvederà a pubblicare un certo articolo p1 attraverso il metodo submit() della classe Author. Indichiamo in rosso l azione svolta in questo istante di tempo. A questo punto supponiamo che un lettore r1 legga e giudichi p1 con un voto pari a 0.8 (in una scala da 0 a 1) utilizzando il metodo vote() della classe Reader. In verde indichiamo le istanze che subiscono una variazione dei valori degli attributi. In questo caso vengono modificati i valori di score e di steadiness di p1 e di a1 in base al giudizio espresso da r1. Successivamente verranno modificati, di conseguenza, i punteggi di r1. Essendo il 16
17 primo voto espresso riguardo a p1, lo score di r1 diverrà 1 in quanto si considera il suo giudizio senza errori. I voti del lettore r1 sono stati aggiornati in seguito al voto da lui espresso che, essendo il primo, si rivela corretto. Ora supponiamo che un altro lettore r2 legga e giudichi p1 con un voto pari a 0.2 (in una scala da 0 a 1) utilizzando il metodo vote() della classe Reader. Ora vengono modificati, analogamente a prima, i valori di score e di steadiness di p1 e di a1 in base al giudizio espresso da r2. Infine sarà necessario aggiornare i punteggi di r1 in qualità di lettore precedente dell articolo p1 e di r2 in qualità di lettore attuale dell articolo p1. 17
18 I punteggi di r1 e di r2 sono stati modificati secondo le formule. A questo punto ci fermiamo con l esempio elencando alcune possibili situazioni che si potrebbero verificare a questo punto. Potrebbe succedere che un terzo lettore r3 giudichi p1, oppure che a1 pubblichi un altro articolo che poi i vari lettori potrebbero giudicare. Oppure un nuovo autore potrebbe comparire e pubblicare dei nuovi articoli che r1 ed r2 potrebbero leggere e giudicare. 18
19 5 Conclusioni In questa relazione è stata dapprima descritta l idea di un nuovo sistema di pubblicazione di articoli scientifici, presentato in [1], in seguito è stato presentato, utilizzando le tecniche descritte in [2], un progetto orientato agli oggetti per una possibile implementazione del sistema utilizzando i Design patterns descritti in [3] e le indicazioni descritte in [4]. Il progetto è stato sviluppato ragionando in termini di software orientato agli oggetti generico, senza riferirsi ad un particolare linguaggio di programmazione. Ad esempio certi linguaggi potrebbero non permettere l eredità di tipo sovrapposto che è stata utilizzata tra la classe Person e le classi Reader e Author. Un successivo sviluppo di questo progetto dovrebbe essere l integrazione del sistema con un datatabase e le relazioni che intercorrono tra i due. Il database servirà a contenere le informazioni rilevanti per il sistema (riguardo a lettori, autori ed articoli), le informazioni riguardo a tutti i giudizi espressi nel corso della vita del sistema e tutti i legami articoli/autori e articoli/lettori al fine del corretto funzionamento del pattern Observer utilizzato nel progetto. Un ulteriore sviluppo di questo progetto potrebbe essere l utilizzo di agenti al fine di meglio comprendere il funzionamento del sistema e di scoprire che comportamenti vengono premiati e quali vengono penalizzati. 19
20 Bibliografia [1] S. Mizzaro. Quality Control in Scholarly Publishing: A New Proposal, Journal of the American Society for Information Science and Technology, 54(11): , [2] K. Beck e R. Johnson, Patterns generate architectures. ECOOP 94, LNCS 821, Conference Proceedings (pp ), Berlin, Heidelberg: Springer-Verlag. [3] E. Gamma, R. Helm, R. Johnson e J. Vlissides, Design Patterns Elements of reusable Objectoriented software Addison Wesley, [4] C. Pescio, UML: Manuale di stile, Eptacom,
DIAGRAMMI DEI PACKAGE
ESERCITAZIONE ERRORI COMUNI REV. DI PROGETTAZIONE INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 UML Versione di UML?
DettagliModulo 16. Introduzione ai Design Patterns. Tutte le case assolvono alla medesima funzione: offrire uno spazio abitativo
Modulo 16 Introduzione ai Design Patterns Partiamo da un analogia Obiettivo: costruire una casa. Tutte le case sono simili, ma non uguali, cioè: Tutte le case assolvono alla medesima funzione: offrire
DettagliIntroduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0
Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 10 a cura del prof Francesco Tappi Il paradigma orientato agli oggetti implica lo sviluppo di unità di programmazione attive, chiamate
DettagliCorso di Informatica
Corso di Informatica Modulo T1 C1 Incapsulamento e tecniche OOP 1 Prerequisiti Tecnica elementare della programmazione Principi di programmazione OOP Metodologie di progettazione software 2 1 Introduzione
DettagliProgettazione Object-Oriented
Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia
DettagliLe classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
DettagliCatia Trubiani. Laboratorio di Ingegneria del Software a.a
Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM) - Università degli Studi
DettagliOO design pattern. Design pattern: motivazioni
Design pattern: motivazioni OO design pattern La progettazione OO è complessa Progettare sw OO riusabile ed evitare (o, almeno, limitare) la riprogettazione è ancor più complesso I progettisti esperti
DettagliMicrosoft Visio 2002 UML Sergio Colosio
Microsoft Visio 2002 UML Sergio Colosio Casi d uso Prima di definire un caso d uso è necessario definire cosa s intende per scenario. Uno scenario è una sequenza di passi che descrivono l interazione tra
DettagliDiagramma delle classi
Diagramma delle classi Questo diagramma (mostrato nella pagina successiva) costruito utilizzando lo standard UML mostra le relazioni che ci sono fra le varie classi della nostra applicazione, mostrando
DettagliUse Case Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a
Università degli Studi dell Aquila Laboratorio di Ingegneria del Software a.a. 2013-2014 Catia Trubiani Dipartimento di Ingegneria e Scienze dell'informazione e Matematica (DISIM)- Università degli Studi
DettagliDesign Patterns. Introduzione 2. Introduzione 3
Design Patterns Introduzione Design patterns: factory, singleton, adapter, composite, decorator, observer Introduzione I Design Patterns sono stati applicati per la prima volta nell architettura Per costruire
DettagliOggetti. La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto.
Classi e oggetti Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming), prende il nome dall elemento su cui si basa, l oggetto. OOP Vantaggi facilità di lettura e di comprensione
DettagliCorso di Ingegneria del Software. Casi d uso
Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it 1. 2. 2.1 Il linguaggio dei casi d uso 2.2 Esempi 3. Bibliografia Sommario 1. 2. 2.1 Il linguaggio dei casi d uso
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
DettagliSi consideri il caso di studio 2, Grande distribuzione, e in particolare la modifica dei prezzi.
Corso di Ingegneria del software - Quinto Appello, 20 luglio 2009 C, Montangero, L. Semini Dipartimento di Informatica, Università di Pisa a.a. 2008/09 La prova si svolge a libri chiusi (non è permessa
DettagliINFORMATICA OOP Relazioni tra classi Roberta Gerboni
2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi
DettagliPoiché è necessario che le selezioni si aggiornino automaticamente, occorre che queste siano notificate di ogni cambiamento pattern observer! Altro?
Processo di Sviluppo Design Requisiti del cliente Analisi del Dominio Analisi dei Rischi (Parziale) Analisi dei Requisiti Casi d uso Scenari Diagramma statico delle classi Design Ingegneria del Software
DettagliCorso di Informatica
Corso di Informatica Modulo T1 A1 Gli oggetti reali 1 Prerequisiti Corso programmazione base Compito di una funzione Strutture di controllo 2 1 Introduzione Il mondo reale è popolato di oggetti, ciascuno
DettagliUML come abbozzo. Introduzione all UML. UML come linguaggio x programmi. UML come progetto dettagliato
Introduzione all UML UML come abbozzo UML - Unified Modeling Language E una famiglia di notazioni grafiche per la modellazione visuale del software Modellazione: rappresentazione di elementi che corrispondono
DettagliTesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola Sicurezza e Permission in Android
Tesina esame Programmazione di Sistemi Mobile realizzata da Roberto Giuliani matricola 633688 Sicurezza e Permission in Android La sicurezza al giorno d oggi è uno degli aspetti più importanti dell informatica!
DettagliIterator pattern - Step 0
Design Pattern Riferimenti Gamma, Helm, Johnson & Vlissides (1994). Design Patterns (the Gang of Four book). Addison-Wesley. ISBN 0-201-63361-2 Steven J. Metsker. Design pattern in Java. Manuale pratico.
DettagliIl PROCESSO UNIFICATO
Corsi di laurea triennale in Ingegneria Informatica Corso di Ingegneria del software Il PROCESSO UNIFICATO Modellazione ed Implementazione di un Sistema Software per la gestione informatizzata di un ristorante
DettagliVincenzo Gervasi, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa
Vincenzo Gervasi, Laura Semini Ingegneria del Software Dipartimento di Informatica Università di Pisa È un classificatore di cui si vede la struttura interna, data in termini di parti, porti e connettori
DettagliModel-View- Controller
Model-View- Controller A. FERRARI MVC Il Model-View-Controller è un pattern architetturale molto diffuso nello sviluppo di sistemi software, in particolare nell'ambito della programmazione orientata agli
DettagliStrutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.
Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli
DettagliIngegneria del Software
Ingegneria del Software Analisi Object Oriented ed Elementi di Programmazione OO Origini Le metodologie ad oggi nascono negli anni 70 ma si affermano solo nelgi anni 80 grazie alla nascita dei linguaggi
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Analisi e Progettazione OO Origini Le metodologie ad oggetti nascono negli anni 70 ma si affermano solo negli anni 80 grazie alla nascita dei linguaggi di programmazione ad oggetti
DettagliLaboratorio di Sistemi Software Progetto Pattern Generator Specifica iniziale
TITLE Laboratorio di Sistemi Software Progetto Pattern Generator Specifica iniziale Luca Padovani (A-L) Riccardo Solmi (M-Z) 1 Definizione del problema Pattern Generator Libreria Java per definire dei
DettagliProgrammazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
DettagliLa progettazione concettuale
PROGETTAZIONE La progettazione concettuale Sintesi tra la visione degli utenti e la visione dei progettisti. I progettisti devono essere certi di aver compreso esattamente e completamente le esigenze degli
DettagliCompito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 24 settembre 2015
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A. 2014-15 Prova di esame del 24 settembre 2015 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere
DettagliA. Ferrari sistemi informativi e sistemi informatici
sistemi informativi e sistemi informatici informatica sistema informativo e sistema informatico o sistema informativo o patrimonio di informazioni o generate o elaborate o e memorizzate dai processi o
DettagliSOMMARIO DESIGN PATTERN
INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2014 2015 rcardin@math.unipd.it 2 DESIGN PATTERN
DettagliPer capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via
Introduzione alle Classi / Oggetti Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto è un automobile, un computer, una casa, e così via Un oggetto può essere definito elencando
DettagliArray. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere
DettagliDesign Principle. immagini da SOLID Motivational Posters, by Derick Bailey
Design Pattern Design Principle immagini da SOLID Motivational Posters, by Derick Bailey Single Responsibility Principle Single Responsibility Principle A class should have only one reason to change. Open
DettagliDATABASE - MODELLO E-R ENTITÀ E RELAZIONI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL 2, HOEPLI. Informatica
DATABASE - MODELLO E-R ENTITÀ E RELAZIONI TRATTO DA CAMAGNI-NIKOLASSY, CORSO DI INFORMATICA, VOL 2, HOEPLI Informatica Introduzione L astrazione permette di creare dei modelli su cui vengono costruite
DettagliMicrosoft Access. Nozioni di base. Contatti: Dott.ssa Silvia Bonfanti
Microsoft Access Nozioni di base Contatti: Dott.ssa Silvia Bonfanti silvia.bonfanti@unibg.it Introduzione In questa lezione vedremo lo strumento Microsoft Access ed impareremo come realizzare con esso
DettagliUML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13
UML Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2012/13 1 Che cosa è UML? UML (Unified Modeling Language) è un linguaggio grafico per: specificare
DettagliIngegneria del Software L-A
Ingegneria del Software L-A Corso di Laurea Triennale in Ingegneria Informatica III anno A.A. 2009/2010 Docente: Giuseppe Bellavia Collaboratore: Gabriele Zannoni Premessa Una domanda fondamentale Che
Dettaglioggetti, permettono di ridurre i costi di sviluppo, poiché cercano di riusare insiemi di classi e di produrre sistemi più facili da evolvere.
Lo sviluppo di sistemi orientati agli oggetti mira a descrivere un software nelle sue diverse fasi (analisi, progettazione, codifica) in termini di classi. Tali sistemi sono documentati focalizzando sulle
DettagliIntroduzione alla programmazione Object Oriented. Luca Lista
Introduzione alla programmazione Object Oriented Luca Lista Concetti base del software OO Classi e oggetti Incapsulamento Relazione di ereditarietà Polimorfismo Cos è un Oggetto? Definizione da vocabolario:
DettagliLaboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring
TITLE Laboratorio di Progettazione di Sistemi Software UML per Design Patterns e Refactoring Valentina Presutti (A-L) Riccardo Solmi (M-Z) 1 Indice degli argomenti Introduzione alla notazione UML I diagrammi
DettagliDesign Patterns. fonti: [Gamma95] e [Pianciamore03] Autori: Giacomo Gabrielli, Manuel Comparetti
Design Patterns fonti: [Gamma95] e [Pianciamore03] Autori: Giacomo Gabrielli, Manuel Comparetti 1 Definizione Ogni pattern descrive un problema che si presenta frequentemente nel nostro ambiente, e quindi
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 9 Alberto Ceselli ceselli@dti.unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 01 Aprile 2008 ADT param. in C ADT param.
DettagliEsami. Ingegneria del Software. Obiettivi del corso. Sir Tony Hoare s suggestion. There are two ways of constructing a software design.
Ingegneria del Software Materiale, link utili, avvisi http://www.dmi.unict.it/~tramonta/se Libri consigliati Sommerville. Software Engineering, 6th ed. Addison-Wesley Pressman. Principi di Ingegneria del
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliUnità A2. Progettazione concettuale. Obiettivi. Astrazione. Astrazione per aggregazione
Obiettivi Unità A2 Progettazione concettuale Imparare ad astrarre i dati per definire entità. Saper distinguere tra astrazione per classificazione, per aggregazione e per generalizzazione. Saper distinguere
Dettagli[POSA] Pattern-Oriented Software Architecture A System of Patterns
Luca Cabibbo Architetture Software Dispensa AS 11 ottobre 2008 1 -Fonti [SSA] Chapter 11, Using Styles and Patterns [GoF] Design Patterns Elementi per il riuso di software a oggetti [POSA] Pattern-Oriented
DettagliFasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo Sviluppo di programmi Per la costruzione di un programma
DettagliJava: Definire Classi e Creare Oggetti
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica lezione del 21 marzo 2014 Introduzione Programmare con gli Oggetti Un programma Java è costituito
DettagliProgrammazione = decomposizione basata su astrazioni
Programmazione = decomposizione basata su astrazioni 1 Decomposizione in moduli necessaria quando si devono sviluppare programmi abbastanza grandi decomporre il problema in sotto-problemi i moduli che
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Incapsulamento Polimorfismo e overloading Esercizi svolti Esercizi proposti Paradigma OO Nella programmazione tradizionale,
Dettagli18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Dettagli17 - Classi parzialmente definite: Classi Astratte e Interfacce
17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
DettagliPiano dei Test e Collaudo del software Titolo Documento
Controllo delle copie Il presente documento, se non preceduto dalla pagina di controllo identificata con il numero della copia, il destinatario, la data e la firma autografa del Responsabile della Documentazione,
DettagliSOMMARIO DESIGN PATTERN INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE. Introduzione. Cos è un design pattern. Cos è un design pattern
INTRODUZIONE AI DESIGN PATTERN INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica, A.A. 2011 2012 2 rcardin@math.unipd.it DESIGN PATTERN
DettagliClassi Astratte vs Classi vs Interfacce
Classi Astratte vs Classi vs Interfacce A cura del docente Giuliano Pellegrini Parisi - 2009 Una abstract class o classe astratta rappresenta la piattaforma di base, le fondamenta da cui iniziare a costruire
DettagliProgrammazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Dettagli5. Modalità operative per creare maschere personalizzate
5. Modalità operative per creare maschere personalizzate Costruendo le maschere con la procedura guidata, non sempre il risultato soddisfa le esigenze dell utente e spesso si deve modificare la struttura
DettagliIngegneria del Software 2014
Ingegneria del Software 2014 Materiale, link utili, avvisi http://www.dmi.unict.it/~tramonta/se Forum http://forum.informatica.unict.it leggere gli avvisi partecipare alle discussioni fare domande E. Tramontana
Dettagli«fornire un'interfaccia per la creazione di famiglie di oggetti correlati o dipendenti senza specificare quali siano le loro classi concrete» (GoF)
Introduzione Abstract Factory è creazionale e basato su oggetti ovvero, la creazione degli oggetti è delegata alle istanze di apposite classi Scopo: «fornire un'interfaccia per la creazione di famiglie
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO
DettagliProgrammazione è gestione di eventi
FUNZIONI Ed Eventi Programmazione è gestione di eventi Evento 1 (tasto premuto) Evento 2 (mouse) Evento 3 (cambio frame) Oggetto Evento 4 (fine di un brano audio) Azioni per evento 1 1. Azione 1 2. Azione
DettagliOO - Introduzione. Oggetti. OO - Panoramica. Progettazione orientata agli oggetti
OO - Introduzione Progettazione orientata agli oggetti Introduzione alle tecniche orientate agli oggetti Modelli ad oggetti Oggetti, classi, associazioni, aggregazione Il compito del programmatore: collegare
DettagliDichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
DettagliI database. Introduzione alla teoria delle basi di dati
I database Introduzione alla teoria delle basi di dati 1 Cosa sono e a cosa servono i Database Un database (o base di dati) e' una raccolta organizzata di dati correlati. Il principale scopo di un database
DettagliScelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if
Scelte Costrutto condizionale Scelte, blocchi Fino ad ora il corpo dei metodi che abbiamo scritto aveva solo un modo di essere eseguito: in sequenza dalla prima istruzione all ultima In applicazioni non
DettagliIngegneria del Software 16. Progettazione dettaglio. Dipartimento di Informatica Università di Pisa A.A. 2014/15
Ingegneria del Software 16. Progettazione dettaglio Dipartimento di Informatica Università di Pisa A.A. 2014/15 classificatore strutturato È un classificatore di cui si vede la struttura interna, data
DettagliSISTEMI INFORMATIVI E DATABASE
SISTEMI INFORMATIVI E DATABASE SISTEMA INFORMATIVO AZIENDALE (S.I.) In una realtà aziendale si distingue: DATO elemento di conoscenza privo di qualsiasi elaborazione; insieme di simboli e caratteri. (274,
DettagliCorso di Laurea Specialistica in Ingegneria Informatica. Corso di Ingegneria del Software A. A Introduzione ad UML E.
Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Introduzione ad UML E. TINELLI UML È un linguaggio (e notazione) universale per rappresentare qualunque
DettagliNON ABBIAMO ANCORA CORRETTO LE PROVETTE!!!
NON ABBIAMO ANCORA CORRETTO LE PROVETTE!!! OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/
DettagliFondamenti d Informatica: linguaggi formali. Barbara Re, Phd
Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di
DettagliLa classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
DettagliProgettazione ad Oggetti (OOD) e Pattern di progetto. Corso di Ingegneria del Software Anno Accademico 2012/2013
Progettazione ad Oggetti (OOD) e Pattern di progetto Corso di Ingegneria del Software Anno Accademico 2012/2013 1 Progettazione ad oggetti (OOD) L OOA identifica e definisce le classi e gli oggetti che
DettagliProgettazione orientata agli oggetti e UML
Operatore Giuridico d Impresa Informatica Giuridica A.A 2003/2004 II Semestre Progettazione orientata agli oggetti e UML prof. Monica Palmirani Origini storiche Il paradigma orientato agli oggetti è una
DettagliUna metodologia per la specifica di software a componenti
Luca Cabibbo Architettura dei Sistemi Software Una metodologia per la specifica di software a componenti dispensa asw475 marzo 2019 How best to read this book. Start at page 1 and keep going. When you
DettagliUML I diagrammi implementativi
Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - UML I diagrammi implementativi E. TINELLI I diagrammi implementativi In UML 2.x esistono 3 tipi di
DettagliIntroduzione ai casi d uso
Introduzione ai casi d uso versione 16 marzo 2009 http://www.analisi-disegno.com Introduzione ai casi d uso Pag. 1 Obiettivo di questa introduzione fornire elementi di base sui casi d uso fornire indicazioni
DettagliEsercizi design patterns. Angelo Di Iorio,
Esercizi design patterns Angelo Di Iorio, diiorio@cs.unibo.it Esercizio 1 Una parete, che contiene porte e finestre, deve essere dipinta con una vernice. Ogni barattolo contiene una data quantità di vernice,
DettagliCorso di Ingegneria del Software. Modelli di produzione del software
Corso di Ingegneria del Software a.a. 2009/2010 Mario Vacca mario.vacca1@istruzione.it 1. Concetti di base Sommario 2. 2.1 Modello a cascata 2.2 Modelli incrementali 2.3 Modelli evolutivi 2.4 Modelli agili
DettagliProgrammazione ad Oggetti
Programmazione ad Oggetti Informazioni generali Docente Giacomo Cabri Come contattarmi Via email (consigliato) giacomo.cabri@unimore.it Telefono 059/2058320 Ricevimento Lunedì dalle 15 alle 17 presso Matematica,
DettagliAgent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica.
Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Excel Michele Tomaiuolo Excel Excel è sicuramente il programma più
DettagliProva di esame del 19 giugno 2017
Prova di esame del 19 giugno 2017 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
DettagliSOMMARIO. DIAGRAMMI DEI CASI D USO INGEGNERIA DEL SOFTWARE Università degli Studi di Padova. Cosa sono gli Use Case. Specifica Use Case
SOMMARIO INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2017 2018 Use Case: Inclusione Use Case: Estensione Use Case: Generalizzazione
DettagliCompito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 19 luglio 2014
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A. 2013-14 Prova di esame del 19 luglio 2014 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un
DettagliCardinalità degli attributi
Cardinalità degli attributi Descrive il numero minimo e massimo di valori dell attributo associati ad ogni occorrenza di entità o relazione. Di solito la cardinalità è (1,1) e viene omessa. A volte il
Dettagliperror: individuare l errore quando una system call restituisce -1
perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente
DettagliUnità 3. Modello Relazionale
Unità 3 Modello Relazionale Modello Logico Modelli logico che deriva da concetti Matematici Permette di descrivere in modo corretto ed efficiente tutte le informazioni contenute nel modello E/R Meno astrato
DettagliRiuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili
Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne
DettagliIl paradigma Object Oriented. Iolanda Salinari
Il paradigma Object Oriented Iolanda Salinari gli oggetti un oggetto è un elemento o concetto del mondo reale che può essere identificato in modo univoco: un cliente, un articolo, un impiegato ogni oggetto
DettagliProgettazione Concettuale. Raccolta e analisi dei requisiti
Progettazione Concettuale Raccolta e analisi dei requisiti Il prodotto è uno schema E-R in grado di descrivere le specifiche sui dati relative ad una applicazione. Il reperimento dei requisiti è un'attività
DettagliStrutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
Dettagli