Principi e schemi di progettazione object oriented (design pattern elementari)
|
|
|
- Domenica Fabbri
- 10 anni fa
- Visualizzazioni
Transcript
1 Principi e schemi di progettazione object oriented (design pattern elementari) Prof. Paolo Ciancarini! Corso di Ingegneria del Software! CdL Informatica! Università di Bologna 1
2 Scopo della lezione Introduzione agli schemi progettuali La progettazione di oggetti e responsabilità GRASP: alcuni pattern elementari I principi SOLID Riferimento: C.Larman, Applying UML and Patterns, Chapter 17
3 Discussione Questa stanza ti sembra accogliente? Ci staresti volentieri? Perché? Luce Proporzioni Simmetria Mobilio altro
4 Esempio: da In camera da letto può essere utile disporre di una poltrona, magari nei pressi della finestra, per poter leggere Quando le dimensioni sono regolari, la soluzione più opportuna è quella di porre la poltrona in un angolo. Se la finestra è lontana bisogna prevedere la presenza di una lampada
5 Un pattern di architettura d interni Schema descrittivo di un design pattern Contesto situazione problematica di progetto Problema insieme di forze in gioco in tale contesto Soluzione forma o regola da applicare per risolvere tali forze Esempio punto luce forze Vogliamo star seduti e comodi in una stanza Saremo attirati dalla luce soluzioni In soggiorno, almeno una finestra dev essere un punto luce Se una poltrona è lontana da un punto luce occorre crearne uno
6 Christopher Alexander L architetto Alexander introdusse l idea di linguaggio di pattern nel libro The Timeless Way of Building Un linguaggio di pattern è un insieme di regole che costituisce un vocabolario di progetto in un certo ambito o dominio Esempio: In un altro libro, A Pattern Language, Alexander introduce un linguaggio speciale con sottolinguaggi per progettare città (per urbanisti) edifici (per architetti), e costruzioni in genere (per costruttori). Esempi: Schemi per città Rotatorie, casette a schiera, quartieri per vita notturna Schemi per edifici Tetti giardino, luce solare in interno, alcove Schemi costruttivi Cemento armato, colonne, ecc.
7 Design patterns in architettura Un pattern è una soluzione ricorrente ad un problema standard, in un contesto A pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Perché rilevanti per il software?
8 Schemi per vestiti Jim Coplein, ingegnere del software: I like to relate this definition to dress patterns I could tell you how to make a dress by specifying the route of a scissors through a piece of cloth in terms of angles and lengths of cut. Or, I could give you a pattern. Reading the specification, you would have no idea what was being built or if you had built the right thing when you were finished. The pattern foreshadows the product: it is the rule for making the thing, but it is also, in many respects, the thing itself.
9 Cos è un Design Pattern? Descrizione di un problema frequente e nucleo delle sue possibili soluzioni Una soluzione di un tipico problema di progettazione
10 Cos è un design pattern Ogni pattern descrive un problema che compare di continuo nel nostro ambito, e quindi descrive il nucleo di una soluzione a tale problema, in modo che si possa usare tale soluzione un milione di volte, senza mai farlo allo stesso modo (C. Alexander e altri, A Pattern Language: Towns/Buildings/ Construction, Oxford University Press, New York, 1977)
11 Design pattern nel software Un pattern descrive un problema che capita spesso, assieme ad una soluzione consigliata e comprovata del problema Ogni pattern si presenta come descrizione di relazioni tra classi o tra oggetti per risolvere un problema progettuale in uno specifico contesto Esempio: adapter, un pattern che permette l interazione tra oggetti con interfaccia incompatibile
12 Adapter
13 Anti pattern Oltre ai pattern utili esistono anche gli antipattern, che descrivono situazioni ricorrenti e soluzioni notoriamente dannose Esempio: Interface bloat, che consiste nel rendere un interfaccia così potente da renderla impossibile da implementare (o usare!)
14 Interface bloat lostechies.com/jimmybogard/2008/03/20/controller-bloat/
15 Interface bloat
16 Discussione Che cos è un tipico problema di progettazione sw?
17 Come si progetta il software? Tutti conosciamo Strutture dati Algoritmi Classi Quando si descrive un progetto, le strutture dati, le classi e gli algoritmi formano il vocabolario progettuale Esistono però livelli più alti di design
18 Schemi progettuali Come usa i pattern chi progetta edifici o macchine? Le discipline più mature hanno manuali che descrivono soluzioni a problemi noti. Esempio: Manuale Colombo Chi progetta una Ferrari non inizia dalle leggi della fisica: si riusano schemi che hanno funzionato in passato, e poi si impara dall esperienza Perché chi progetta software dovrebbe usare i pattern (e i linguaggi di pattern)? E costoso progettare da zero I pattern promuovono il riuso di soluzioni note I linguaggi di pattern abilitano l idea di architetture software, cioè strutture riusabili di componenti
19 Motivazioni I pattern permettono di sfruttare l esperienza collettiva dei progettisti esperti Catturano esperienze reali e ripetute di sviluppo di sistemi sw, e promuovono buone prassi progettuali Ogni pattern riguarda un problema specifico e ricorrente che capita spesso quando si implementa un sistema software I pattern si possono combinare per costruire architetture software con proprietà specifiche
20 Definizioni Alexander: Un pattern è una soluzione ricorrente ad un problema standard, in un contesto Larman: Un pattern è la descrizione di un problema; il pattern ha un nome; la soluzione si può applicare in nuovi contesti. Il pattern consiglia come applicare la soluzione in circostanze diverse e considera le forze in gioco e i compromessi Queste definizioni in cosa si somigliano? Ed in cosa differiscono?
21 I nomi dei pattern sono importanti! Gli schemi progettuali del software hanno nomi suggestivi: Observer, Singleton, Strategy Perché i nomi sono importanti? Supportano il chunking ovvero fissano il concetto nella nostra memoria e ci aiutano a capirlo Facilitano la comunicazione tra progettisti Star and Plume Quilt
22 Richiamo: schede CRC Una scheda CRC (Class Responsibility Collaboration) è uno strumento di design Basato sull idea di responsabilità Class Collaborators Professor Responsibilities teaches assigns tasks does exams grades Assistant Technician
23 Problema: Design by responsibility Vogliamo assegnare una responsabilità ad una classe A B C Quale classe sarà responsabile? Evitare dipendenze inutili Massimizzare coesione e minimizzare accoppiamento Aumentare la possibilità di riuso Minimizzare la necessità di manutenzione Aumentare la comprensibilità del progetto etc. 23
24 GRASP Nome scelto per sottolineare l importanza di afferrare (grasping) i principi fondamentali della progettazione corretta orientata agli oggetti Acronimo per General Responsibility Assignment Software Patterns Descrivono i principi base di progettazione oo mediante le responsabilità Espressi come pattern Inventati da C. Larman Craig Larman
25 GRASP General Responsibility Assignment Software Patterns Expert Creator Low Coupling High Cohesion Controller Polymorphism Pure Fabrication Indirection Protected variations (Law of Demeter) 25
26 Pattern: Information Expert Problema: Nella progettazione qual è il principio da seguire per assegnare una responsabilità ad una classe? Soluzione: Si assegni la responsabilità alla classe che ha l informazione necessaria per assumersi tale responsabilità 26
27 Un dominio: Nextgen POS (da Larman fig. 9.17) records-sale-of Ledger 1 1 Product Catalog 1 1 used-by contains 1..* Product Description describes Sales LineItem contained-in 1 paid-by Sale 1 1..* 1 CashPayment * logs 0..1 accounts-for * Store 1 1 houses captured-on Register 1 is-for 1 Customer stocks Item * 1..* works-on 1 1 * Cashier
28 Information Expert: esempio Quale classe dovrebbe calcolare la somma totale di uno scontrino in un applicazione POS? 28
29 Information Expert: esempio Occorrono tutte le istanze SalesLineItem ed i sottototali Sale li conosce, solo lei li conosce, dunque Sale è la classe esperta date time Sale gettotal() 29
30 Information Expert: esempio I sottototali sono necessari per ciascun elemento (quantità per prezzo) Applicando di nuovo Information Expert, osserviamo che SalesLineItem conosce la quantità ed ha l associazione con ProductSpecification utile per conoscere il prezzo time Sale gettotal() t = gettotal :Sale 1 *:st = getsubtotal lineitems[i]: SalesLineItem SaleLineItem quantity 1.1: p= getprice :ProductDescription getsubotal() ProductDescription Description Price itemid Nuovo metodo getprice() 30
31 Expert : esempio Dunque ecco le responsabilità assegnate alle tre classi Classe Responsabilità Sale SalesLineItem ProductSpecification conosce il totale della vendita conosce il subtotale di linea conosce il prezzo del prodotto 31
32 Pro e contro di Information Expert Conserva l incaspulamento Promuove il disaccoppiamento Promuove la coesione Ma può complicare troppo una classe 32
33 Pattern: Creator Problema: Chi dovrebbe creare un istanza di A? Soluzione: Si assegni alla classe B la responsabilità di creare un istanza della classe A se è vera una o più tra queste condizioni: B contiene o aggrega oggetti A (in una collezione) B registra oggetti A B usa oggetti A B ha i dati per inizializzare oggetti A
34 Chi crea i quadrati (square)? Figure 17.3, page 283
35 Il pattern Create permette di disegnare questa sequenza Figure 17.4, page 283
36 Il pattern Create permette di disegnare questo diagramma di classi Figure 17.5, page 283 Board è in relazione di composizione con Square Cioè, Board contiene una collezione di 40 Squares
37 Creator : esempio Chi è responsabile per creare oggetti SalesLineItem? Cercate una classe che aggrega oggetti SalesLineItem 37
38 Creator: esempio Creator pattern suggerisce come responsabile la classe Sale. Un diagramma di sequenza che mostra la creazione: makelineitem(quantity) :Sale Sale 1: create(quantity) New method :SalesLineItem date time makelineitem() total() 38
39 Discussione di Creator Creare oggetti è una responsabilità molto comune Un oggetto diventa creatore quando una o più tra queste situazioni sono verificate: È un Aggregatore che aggrega più Parti È un Contenitore che contiene Contenuti È un Recorder registra È in grado di passare i dati di inizializzazione
40 Controindicazioni Il pattern Creation può complicare il progetto: Può peggiorare le prestazioni È inadatto quando occorre creare condizionatamente istanze da una famiglia di classi simili In questi casi si possono usare altri pattern Più avanti parleremo di Factory e di altri
41 Disaccoppiamento Nome: Low Coupling (disaccoppiamento) Problema: Come ridurre le conseguenze delle modifiche ed incoraggiare il riuso? Soluzione: Assegnare la responsabilità in modo che l accoppiamento (dipendenze tra le classi) rimanga basso
42 Perché questo diagramma viola Low Coupling? Perché è meglio lasciare la responsabilità getsquare in Board?
43 Benefici e controindicazioni Comprensibilità: le classi sono più semplici da capire da sole Manutenibilità: le classi non sono influenzate da modifiche ad altri componenti Riusabilità: più facile usare le classi in sistemi diversi Ma: Meglio lasciare accoppiate classi stabili (in librerie o se classi molto usate e ben testate)
44 Pattern: Controller Nome: Controller Problema: a chi si assegna la responsabilità di gestire gli eventi esterni che entrano in una interfaccia utente? Soluzione: la responsabilità di ricevere o gestire un evento di un sistema si può assegnare: Mediante un rappresentante del sistema (façade pattern, non ancora visto) Usando uno scenario in cui capita l evento e definendo un controllore di sessione
45 La gestione di eventi d interfaccia utente
46 Controller : esempio In uno scenario di caso d uso Buy Items ci sono i seguenti eventi da gestire: enteritem() endsale() makepayment() Chi ha la responsabilità di enteritem()? 46
47 Controller : esempio Ci sono quattro possibilità di scelta La scelta sarà influenzata da fattori quali coesione e accoppiamento 47
48 Buona soluzione: presentazione disaccoppiata dal dominio Object Store UPC Quantity Total Tendered Balance presses button Enter Item End Sale Make Payment Cashier onenteritem() Presentation Layer (Command Object) :POSTCommand system event message 1: enteritem(upc, qty) controller Domain Layer :POST 1.1: makelineitem(upc, qty) :Sale 48
49 Cattiva soluzione: presentation layer accoppiato al domain layer Object Store UPC Quantity Total Tendered Balance presses button Enter Item End Sale Make Payment Cashier Presentation Layer (Command object) onenteritem() :POSTCommand It is undesirable for a presentation layer objects such as a Java applet to get involved in deciding how to handle domain processes. Business logic is embedded in the presentation layer, which is not useful. Domain Layer 1: makelineitem(upc, qty) :Sale POSTApplet should not send this message. 49
50 Controller: pro e contro L uso di un oggetto controller separa la gestione di eventi esterni da quella degli eventi interni ad un sistema Esempio: usare un controller per gestire gli eventi da mouse separatamente dagli eventi sulle entità puntate Attenzione: se si assegnano troppe responsabilità gli oggetti controller diverranno fortemente accoppiati e poco coesi 50
51 Chi è il controller di playgame? Figure 17.9, p. 288 Quale classe rappresenta il sistema o un caso d uso rilevante?
52 Pattern: Coesione La coesione misura la correlazione delle responsabilità di una classe Nome: High Cohesion Problema: come si disegnano classi coese e maneggevoli? Soluzione: assegnare le responsabilità in modo da favorire la coesione
53 Perchè il disegno a destra è più coeso? Delegazione di responsabilità e coordinamento
54 Benefici e controindicazioni Comprensibilità, riusabilità Complementa il disaccoppiamento perché suggerisce di non aumentare le responsabilità (o il codice) in una sola classe il che semplifica la manutenzione Ma: Talvolta è desiderabile un oggetto server meno coeso, se deve offrire interfaccia per molte operazioni, perché oggetti remoti e relative comunicazioni lo renderebbero inefficiente
55 Ancora su Expert Nome completo: Information Expert Problema: Come si assegnano le responsabilità? Soluzione: darle alla classe che ha l informazione necessaria per gestire la responsabilità Es.: Board sa come arrivare a Square
56 Benefici e controindicazioni Promuove l incaspulamento Le classi usano proprie informazioni per effettuare il proprio compito Promuove classi coese e leggere Ma: Information Expert può contraddire i pattern Low Coupling e/o High Cohesion I sottosistemi grandi si progettano meglio decomponendoli, ovvero la logica di business va in un componente, la UI in un altro, il DB in un altro, ecc.
57 Pattern: Polimorfismo Problema: come gestire responsabilità alternative basate sul tipo Soluzione: quando le alternative (o i comportamenti) variano col tipo (classe) assegna la responsabilità ai tipi per il quale il comportamento varia, usando operazioni polimorfe
58 Pattern: Pure Fabrication Problema: quando usando Information Expert si violano Cohesion e/o Coupling, come assegnare le responsabilità? Soluzione: introdurre una classe artificiosa (di convenienza) altamente coesa e poco accoppiata
59 Pattern: Indirection Problema: dove assegnare una responsabilità, evitando l accoppiamento diretto? Come disaccoppiare? Soluzione: Assegna la responsabilità ad un oggetto intermediario, che dunque crea una indirezione tra gli altri componenti
60 Indirection: esempio
61 Pattern: Protected Variations Problema: come progettare un oggetto le cui responsabilità non sono ancora fissate, senza che ci sia un impatto indesiderato su altri oggetti? Soluzione: identifica i punti in cui sono prevedibili variazioni, e crea attorno ad essi un interfaccia stabile Nota: è uno dei pattern più importanti nella progettazione software, generalizza la Legge di Demetra
62 Principio: Legge di Demetra La Legge di Demetra (o Non parlare agli sconosciuti ) è un principio di progettazione che suggerisce di disaccoppiare le classi: - Ciascuna classe deve avere la minima informazione necessaria sulle altre classi (incluse le sue classi componenti) - Ogni classe parla solo con le classi amiche (non parla con le classi sconosciute )
63 Caratteristiche di un buon pattern Risolve un problema Descrive una relazione La soluzione non è ovvia Il concetto è comprovato (cioè esiste consenso sul problema e sulla soluzione) E utile e possibilmente elegante Segue principi generali di progettazione
64 I principi SOLID Single responsibility: ogni classe dovrebbe avere una sola responsabilità (alta coesione) Open-closed: una classe dovrebbe essere aperta all estensione, ma chiusa alle modifiche Liskov substitution: ogni superclasse dovrebbe essere rimpiazzabile da una sua sottoclasse, senza modificare il significato del programma Interface segregation: meglio tante interfacce, una per ciascun cliente, che un unica interfaccia buona per tutti Dependency inversion: meglio dipendere dalle astrazioni che dalle concretizzazioni
65
66 Il principio di sostituzione di Liskov-1 { } void DrawShape(const Shape& s) if (typeid(s) == typeid(square)) DrawSquare(static_cast<Square&>(s)); else if (typeid(s) == typeid(circle)) DrawCircle(static_cast<Circle&>(s)); Questa funzione va cambiata ogni volta che si aggiunge una sottoclasse di Shape (violando il principio Open-Closed)
67 Il principio di sostituzione di Liskov - 2 Rettangolo Quadrato class Rectangle { public: void SetWidth(double w) {itswidth=w;} void SetHeight(double h) {itsheight=w;} double GetHeight() const {return itsheight;} double GetWidth() const {return itswidth;} private: double itswidth; }; double itsheight; Quadrato eredita i due lati (spreco di memoria) e le due funzioni separate che lavorano con tali lati (pericolo di inconsistenze)
68 Inversione delle dipendenze-1 Architettura procedurale
69 Inversione delle dipendenze-2 Classi di alto livello Interfaccia astratta Interfaccia astratta Interfaccia astratta Dettagli implementazione Dettagli implementazione Dettagli implementazione Architettura orientata agli oggetti
70 Segregazione delle interfacce Server senza interfacce segregate: la modifica di una può impattare le altre Server con interfacce segregate
71 Sommario L assegnazione di responsabilità è importante nella fase iniziale del design I pattern GRASP sono coppie problema/soluzione utili per assegnare le responsabilità all inizio della progettazione Abbiamo visto cinque pattern GRASP: Creator, Information Expert, Controller, Low Coupling e High Cohesion Esistono altri quattro pattern GRASP, cercateli da soli L assegnazione di responsabilità dovrebbe seguire i principi SOLID e la legge di Demetra
72 Domande di autotest Cos è un design pattern? Cos è la progettazione guidata dalle responsabilità? Quali sono i pattern GRASP? Cosa suggerisce il pattern Expert? Cosa suggerisce il pattern Controller? Cosa dicono i principi SOLID?
73 Riferimenti Larman, Applying UML and patterns (cap 17), Pearson en.wikipedia.org/wiki/anti-pattern
74 Siti utili butunclebob.com/articles.unclebob.principlesofood tomdalling.com/blog/software-design
75 Pubblicazioni di ricerca PLOP: Conference on Pattern Languages of Programs ECOOP: European Conference on Object Oriented Programming
76 Domande?
design patterns e GRASP
design patterns e GRASP 1 design patterns una coppia / particolarmente importante a cui viene dato un nome vengono espressi in un formato molto rigido, ad es. nome descrizione sintetica della descrizione
Design Pattern. Ingegneria del Software parte II. Andrea Bei
Design Pattern Ingegneria del Software parte II Andrea Bei Progettazione a oggetti (OOD) Progettare a oggetti una funzionalità espressa da un requisito ( use case, SSD, ) significa Identificare gli oggetti,
Ingegneria del Software. Introduzione ai pattern
Ingegneria del Software Introduzione ai pattern 1 Definizione di pattern [dal [dal vocabolario vocabolario Garzanti] Garzanti] Alcuni esempi: Pattern architetturale Pattern di circuito stampato Pattern
Progettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli [email protected] 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
Object Oriented Software Design
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Object Oriented Software Design Corso di Tecniche di Programmazione Laurea in Ingegneria Informatica (Canale di Ingegneria
!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9
!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se
Concetti di base di ingegneria del software
Concetti di base di ingegneria del software [Dalle dispense del corso «Ingegneria del software» del prof. A. Furfaro (UNICAL)] Principali qualità del software Correttezza Affidabilità Robustezza Efficienza
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
Programmazione a Oggetti Modulo B
Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione
Considera tutti i requisiti funzionali (use cases) NON deve necessariamente modellare i requisiti non funzionali
Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - Progettazione OO E. TINELLI Punto di Partenza Il modello di analisi E una rappresentazione minima del
I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.
UML e i Casi d USO I casi d uso specificano una sequenza di azioni che producono un risultato visibile agli attori del sistema. Essi nascono per fornire descrizioni delle capacità del sistema. I casi d
Database. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Design Pattern: Storia Parte b versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
Object Oriented Programming
OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in
Responsibility Driven Design
Responsibility Driven Design Laboratorio di Ingegneria del Software Andrea Bei Progettazione a oggetti (OOD) Progettare a oggetti una funzionalità espressa da un requisito ( use case, SSD, ) significa
Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi
Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Ingegneria del Software La fase di Analisi Giulio Destri Ing. del software: Analisi - 1 Scopo del modulo Definire
Progettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
Generazione Automatica di Asserzioni da Modelli di Specifica
UNIVERSITÀ DEGLI STUDI DI MILANO BICOCCA FACOLTÀ DI SCIENZE MATEMATICHE FISICHE E NATURALI Corso di Laurea Magistrale in Informatica Generazione Automatica di Asserzioni da Modelli di Specifica Relatore:
Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi
Indice generale OOA Analisi Orientata agli Oggetti Introduzione Analisi Metodi d' analisi Analisi funzionale Analisi del flusso dei dati Analisi delle informazioni Analisi Orientata agli Oggetti (OOA)
L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo
Design Pattern L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo sviluppo dei programmi, il loro mantenimento,
Organizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
Alcuni Design Pattern in Java
Marco Faella Alcuni Design Pattern in Java basato su Progettazione del Software e Design Pattern in Java, di Cay Horstmann Pattern ITERATOR Contesto: 1) Un oggetto (aggregato) contiene altri oggetti (elementi)
7. Architetture Software
7. Architetture Software progettare la struttura Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 7. Architetture Software 1 / 20 Scopo della fase di design
Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.
Testo Esercizio Si consideri la realizzazione di un semplice programma grafico per il disegno di figure geometriche in due dimensioni. Si analizzino i requisiti e se ne rappresentino i risultati in UML
Design patterns in Java
tesi di laurea Anno Accademico 2012/13 relatore Ch.mo prof. Porfirio Tramontana candidato Luciano Amitrano Matr. 534/2042 Progettare SW a oggetti è difficoltoso I progettisti devono cercare di far coesistere
Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione
4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:
3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di
UML Component and Deployment diagram
UML Component and Deployment diagram Ing. Orazio Tomarchio [email protected] Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania I diagrammi UML Classificazione
Lezione 2. Il modello entità relazione
Lezione 2 Il modello entità relazione Pag.1 Introduzione alla progettazione delle basi di dati 1. Analisi dei requisiti Quali sono le entità e le relazioni dell organizzazione? Quali informazioni su queste
Identificare le classi in un sistema
3.7 (Caso di studio facoltativo) Pensare a oggetti: identificare le classi nella specifica del problema Cominciamo ad affrontare la progettazione del simulatore di ascensore introdotto nel capitolo. Iniziamo
Strumenti di modellazione. Gabriella Trucco
Strumenti di modellazione Gabriella Trucco Linguaggio di modellazione Linguaggio formale che può essere utilizzato per descrivere (modellare) un sistema Il concetto trova applicazione soprattutto nell
Sequence Diagram e Collaboration Diagram
Sequence Diagram e Collaboration Diagram Ing. Orazio Tomarchio [email protected] Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Sommario Interaction
DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali
DESIGN PATTERN CREAZIONALI DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova Dipartimento di Matematica Corso di Laurea in Informatica, A.A. 2013 2014 [email protected]
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema
Pagina: 1 e-travel ING SW Progetto di Ingegneria del Software e-travel Requisiti Utente Specifiche Funzionali del Sistema e Pagina: 2 di 9 Indice dei contenuti 1 INTRODUZIONE... 3 1.1 SCOPO DEL DOCUMENTO...
Questo capitolo esemplifica la progettazione di oggetti responsabilità e collaborazioni applicazione dei pattern GRASP applicazione di UML
Luca Cabibbo Analisi e Progettazione del Software Esempi di progettazione a oggetti con i pattern GRASP Capitolo 18 marzo 2013 Ogni cosa dovrebbe essere fatta nel modo più semplice possibile, ma non più
Modellazione dei dati in UML
Corso di Basi di Dati e Sistemi Informativi Modellazione dei dati in UML Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Introduzione UML (Unified Modeling Language):
IL MIO PRIMO SITO: NEWS
Pagina 1 IL MIO PRIMO SITO: NEWS Sommario IL MIO PRIMO SITO: NEWS...1 Introduzione...2 I Contenitori...2 Creo un Contenitore...3 I Tracciati...4 Creo le Notizie...6 Inserisco il Testo...6 Inserisco un
UML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
Programmi e Oggetti Software
Corso di Laurea Ingegneria Civile Elementi di Informatica Programmi e Oggetti Software Settembre 2006 Programmi e Oggetti Software 1 Contenuti Cosa è un programma Cosa significa programmare Il punto di
Corso di Amministrazione di Reti A.A. 2002/2003
Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm
Capitolo 13. Interrogare una base di dati
Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per
Fasi 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 41 Sviluppo di programmi Per la costruzione di un programma
Descrizione di un algoritmo
Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica
object oriented analysis
object oriented analysis 1 attività di analisi l obiettivo dell analisi è raggiungere la piena comprensione del dominio di interesse lo strumento è la descrizione di un modello di dominio mediante un opportuno
Corso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
Tecnologie dei Linguaggi di Programmazione
Tecnologie dei Linguaggi di Programmazione a.a. 2013/2014 [email protected] http://www.di.univaq.it/romina.eramo/tlp Goal Object Oriented Programming (OOP) Conoscere il paradigma di programmazione
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: Introduzione versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
Soluzione dell esercizio del 12 Febbraio 2004
Soluzione dell esercizio del 12/2/2004 1 Soluzione dell esercizio del 12 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. 2. Modello concettuale
progettare buone gerarchie
progettare buone gerarchie 1 generalizzazione permette di definire dettagli del modello a vari livelli di astrazione 2 generalizzazione le istanze delle classi più specifiche sono istanze anche delle classi
Ricerca Operativa e Logistica
Ricerca Operativa e Logistica Dott. F.Carrabs e Dott.ssa M.Gentili A.A. 2011/2012 Lezione 10: Variabili e vincoli logici Variabili logiche Spesso nei problemi reali che dobbiamo affrontare ci sono dei
Database. Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014
Database Appunti di Amaranto Oronzo e Giancane Diego Lezione dell Ing. Lucia Vaira 24/04/2014 Cos'è un database? È una struttura di dati composta da tabelle a loro volta composte da campi. Caratteristiche
Programmazione a Oggetti Lezione 10. Ereditarieta
Programmazione a Oggetti Lezione 10 Ereditarieta Sommario Come definire sottoclassi Costruttori Abstract Classes Final Ereditarietà: promemoria Strumento tipico dell OOP per riusare il codice e creare
Dalla progettazione concettuale alla modellazione di dominio
Luca Cabibbo A P S Analisi e Progettazione del Software Dalla progettazione concettuale alla modellazione di dominio Capitolo 91 marzo 2015 Se qualcuno vi avvicinasse in un vicolo buio dicendo psst, vuoi
Progettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)
BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D
BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software BDX 3D Editor è un programma che permette di navigare ed editare texture in un qualsiasi modello 3D.E compatibile con i software in grado di esportare
Programmazione A.A. 2002-03. Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII)
Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti: Lavorare con gli oggetti ( Lezione XXVII) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università
Lezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
Dispensa di database Access
Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di
Project Cycle Management La programmazione della fase di progettazione esecutiva. La condivisione dell idea progettuale.
Project Cycle Management La programmazione della fase di progettazione esecutiva. La condivisione dell idea progettuale. Il presente materiale didattico costituisce parte integrante del percorso formativo
Tale attività non è descritta in questa dispensa
Fondamenti di informatica Oggetti e Java ottobre 2014 1 Nota preliminare L installazione e l uso di Eclipse richiede di aver preliminarmente installato Java SE SDK Tale attività non è descritta in questa
Una metodologia per la specifica di software basato su componenti
Luca Cabibbo Architetture Software Una metodologia per la specifica di software basato su componenti Dispensa ASW 445 ottobre 2014 La mappa non è il territorio. Douglas R. King 1 -Fonti [UML Components],
Guida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
Parola chiave extends
Il Linguaggio Java Ereditarietà Ereditarietà L'ereditarietà permette di creare nuove classi sulla base di classi esistenti In particolare, permette di riusare il codice (metodi e campi); aggiungere nuovi
sito web sito Internet
Siti Web Cos è un sito web Un sito web o sito Internet è un insieme di pagine web correlate, ovvero una struttura ipertestuale di documenti che risiede, tramite hosting, su un web server e accessibile
1. BASI DI DATI: GENERALITÀ
1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente
La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)
La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema
Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci
Corso di Laurea Magistrale in Ingegneria per l Ambiente e il Territorio A.A. 2014-2015 Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci Strutture di dati: DB e DBMS DATO E INFORMAZIONE Dato: insieme
Testo Esercizio. Un modello è ragionevole quando contiene queste tre caratteristiche.
Testo Esercizio Un negozio di musica vende anche libri e riviste musicali. Si intende automatizzare l intero processo, dall approvvigionamento alla vendita. Si analizzino i requisiti e se ne rappresentino
Introduzione alla teoria dei database relazionali. Come progettare un database
Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare
Modulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA
Prof. Pagani Corrado ESERCITAZIONI DIAGRAMMI DELLE CLASSI UML E JAVA ES 02 - ORGANIZER Voglio un gestionale (organizer) che permetta a ciascun dipendente della mia azienda di inserire le attività che svolgono
Alessandra Raffaetà. Basi di Dati
Lezione 2 S.I.T. PER LA VALUTAZIONE E GESTIONE DEL TERRITORIO Corso di Laurea Magistrale in Scienze Ambientali Alessandra Raffaetà Dipartimento di Informatica Università Ca Foscari Venezia Basi di Dati
Strutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore
Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter
Elementi di UML (7): Diagrammi dei componenti e di deployment
Elementi di UML (7): Diagrammi dei componenti e di deployment Università degli Studi di Bologna Facoltà di Scienze MM. FF. NN. Corso di Laurea in Scienze di Internet Anno Accademico 2004-2005 Laboratorio
Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007
Basi di dati Concetti introduttivi Ultima modifica: 26/02/2007 ESEMPIO INSEGNAMENTI Fisica, Analisi, Informatica Aule Docenti Entità Relazioni Interrogazioni St udent i Database 2 Tabella (I) STUDENTE
Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
BIEMMEPI RE-IMPARA A SCRIVERE. E presenta PLATE, un programma semplice ed intuitivo per l incisione di targhe.
BIEMMEPI RE-IMPARA A SCRIVERE. E presenta PLATE, un programma semplice ed intuitivo per l incisione di targhe. E proprio vero che gli esami non finiscono mai. Anche coloro che credono di aver maturato
Appunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
Esercizi design patterns. Angelo Di Iorio,
Esercizi design patterns Angelo Di Iorio, [email protected] Esercizio 1 Una parete, che contiene porte e finestre, deve essere dipinta con una vernice. Ogni barattolo contiene una data quantità di vernice,
Dove metti il divano?
Dove metti il divano? Indicazioni per l insegnante Obiettivi didattici le preposizioni a, da e di + articolo le espressioni di luogo Svolgimento Obiettivo dell attività-gioco proposta è quello di far utilizzare
Automazione Industriale 4- Ingegneria del Software
Automation Robotics and System CONTROL Università degli Studi di Modena e Reggio Emilia Automazione Industriale 4- Ingegneria del Software Cesare Fantuzzi ([email protected]) Ingegneria Meccatronica
G iochi con le carte 1
Giochi con le carte 1 PREPARAZIONE E DESCRIZIONE DELLE CARTE L insegnante prepara su fogli A3 e distribuisce agli allievi le fotocopie dei tre diversi tipi di carte. Invita poi ciascun allievo a piegare
Introduzione alla Programmazione Orientata agli Oggetti. Classi, Oggetti e Messaggi
Introduzione alla Programmazione Orientata agli Oggetti Classi, Oggetti e Messaggi Agenda 1. La metodologia di progettazione ad oggetti Concetti fondamentali: oggetti, classi, messaggi 2. I concetti fondamentali
RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI
RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI Diagramma di flusso L algoritmo può essere rappresentato in vari modi, grafici o testuali. Uno dei metodi grafici più usati e conosciuti è il cosiddetto diagramma
Traccia di soluzione dell esercizio del 25/1/2005
Traccia di soluzione dell esercizio del 25/1/2005 1 Casi d uso I casi d uso sono in Figura 1. Ci sono solo due attori: il Capo officina e il generico Meccanico. Figura 1: Diagramma dei casi d uso. 2 Modello
Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda
Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda Premessa Con l analisi di sensitività il perito valutatore elabora un range di valori invece di un dato
CORSO DI PROGRAMMAZIONE JAVA
CORSO DI PROGRAMMAZIONE JAVA Corso di Programmazione Java Standard Edition ( MODULO A) OBIETTIVI ll corso ha come obiettivo quello di introdurre la programmazione a oggetti (OOP) e di fornire solide basi
SCENARIO. Personas. 2010 ALICE Lucchin / BENITO Condemi de Felice. All rights reserved.
SCENARIO Personas SCENARIO È una delle tecniche che aiuta il designer a far emergere le esigente dell utente e il contesto d uso. Gli scenari hanno un ambientazione, attori (personas) con degli obiettivi,
Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività
Prerequisiti Mon Ami 000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività L opzione Centri di costo è disponibile per le versioni Contabilità o Azienda Pro. Introduzione
10. Design Patterns. Andrea Polini. Ingegneria del Software Corso di Laurea in Informatica. (Ingegneria del Software) 10. Design Patterns 1 / 36
10. Design Patterns Andrea Polini Ingegneria del Software Corso di Laurea in Informatica (Ingegneria del Software) 10. Design Patterns 1 / 36 Problemi Ci focalizziamo nelle problematiche riguardanti la
Corso di Informatica
Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio
