The document discusses the SOLID principles of object-oriented design, which are a set of five design guidelines for developing flexible and maintainable software. It describes each principle - Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion - and provides examples of how to apply each principle through class design. It also discusses related concepts like dependency injection, the service locator pattern, and inversion of control. The goal of SOLID is to build software that is understandable, flexible and maintainable over time.
This presentation talks about creational design patterns. In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. In particular in the slides are described the following patterns:
- Singleton
- Builder
- Abstract Factory
Design patterns are presented using examples in Java, Scala and Javascript.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
The document discusses the SOLID principles of object-oriented design, which are a set of five design guidelines for developing flexible and maintainable software. It describes each principle - Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, and Dependency Inversion - and provides examples of how to apply each principle through class design. It also discusses related concepts like dependency injection, the service locator pattern, and inversion of control. The goal of SOLID is to build software that is understandable, flexible and maintainable over time.
This presentation talks about creational design patterns. In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. In particular in the slides are described the following patterns:
- Singleton
- Builder
- Abstract Factory
Design patterns are presented using examples in Java, Scala and Javascript.
The presentation is took from the Software Engineering course I run in the bachelor-level informatics curriculum at the University of Padova.
Relazione sul progetto di realizzazione di un algoritmo di localizzazione (mediante trilaterazione) attraverso l'utilizzo del controllore cRIO e del software LabVIEW.
Relazione sul progetto di realizzazione di un algoritmo di localizzazione (mediante trilaterazione) attraverso l'utilizzo del controllore cRIO e del software LabVIEW.
Generazione di diagrammi ArchiMate da modelli ontologici di EA e meta modello...Matteo Busanelli
Come usare modelli ontologici di Enterprise Architecture per le banche integrati fra loro dal Framework ABI Lab per generare in maniera automatica viste ArchiMate.
Plugin Archi AOI.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
Il web service e i sistemi embedded - Tesi - cap2pma77
Nel capitolo secondo capitolo della tesi " SVILUPPO E IMPLEMENTAZIONE SU MICROCONTROLLORE DI UN’APPLICAZIONE WEB SERVER PER IL CONTROLLO DI UN SISTEMA EMBEDDED"sono presentati diversi prodotti commerciali impieganti Web Service , in modo particolare dispositivi di tipo embedded. Viene discusso, inoltre, su come le tecnologie Web entrino nel mondo industriale e della domotica e si pone l’attenzione sui fattori che impediscono il pieno sviluppo in questi ambiti. Infine vengono proposti diversi articoli che affrontano tematiche simili a quelle della tesi.
Quando, come e perché utilizzare PowerMock. Vengono analizzati i legami tra design delle applicazioni e strumenti di test. Sono presenti esempi di codice semplice ma verosimile con i rispettivi test.
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!DotNetCampus
Vedremo come impiegare SignalR al massimo per realizzare una infrastruttura che serva a semplificare la creazione di HubHost da poter usare sia in modo tradizionale sia à-la WCF Service da sfruttare anche al di fuori dell'ambiente web per la comunicazione tra processi, approfondendo inoltre anche i meccanismi della Pipeline dell ErrorHandling per implementare Listener e Logger. Aggireremo inoltre una limitazione dell HubClient creandone una versione strong-typed completamente event-based.
Relazione sul progetto di realizzazione di un algoritmo di localizzazione (mediante trilaterazione) attraverso l'utilizzo del controllore cRIO e del software LabVIEW.
Relazione sul progetto di realizzazione di un algoritmo di localizzazione (mediante trilaterazione) attraverso l'utilizzo del controllore cRIO e del software LabVIEW.
Generazione di diagrammi ArchiMate da modelli ontologici di EA e meta modello...Matteo Busanelli
Come usare modelli ontologici di Enterprise Architecture per le banche integrati fra loro dal Framework ABI Lab per generare in maniera automatica viste ArchiMate.
Plugin Archi AOI.
Con queste “14 misere” slide ho cercato d’introdurre Liferay e come iniziare con il piede giusto per affrontare lo sviluppo di applicazioni ai voi che siete proprio “novelli”. Spero di essere riuscito con questo primo episodio a suscitare la vostra curiosità e interesse.
Il web service e i sistemi embedded - Tesi - cap2pma77
Nel capitolo secondo capitolo della tesi " SVILUPPO E IMPLEMENTAZIONE SU MICROCONTROLLORE DI UN’APPLICAZIONE WEB SERVER PER IL CONTROLLO DI UN SISTEMA EMBEDDED"sono presentati diversi prodotti commerciali impieganti Web Service , in modo particolare dispositivi di tipo embedded. Viene discusso, inoltre, su come le tecnologie Web entrino nel mondo industriale e della domotica e si pone l’attenzione sui fattori che impediscono il pieno sviluppo in questi ambiti. Infine vengono proposti diversi articoli che affrontano tematiche simili a quelle della tesi.
Quando, come e perché utilizzare PowerMock. Vengono analizzati i legami tra design delle applicazioni e strumenti di test. Sono presenti esempi di codice semplice ma verosimile con i rispettivi test.
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!DotNetCampus
Vedremo come impiegare SignalR al massimo per realizzare una infrastruttura che serva a semplificare la creazione di HubHost da poter usare sia in modo tradizionale sia à-la WCF Service da sfruttare anche al di fuori dell'ambiente web per la comunicazione tra processi, approfondendo inoltre anche i meccanismi della Pipeline dell ErrorHandling per implementare Listener e Logger. Aggireremo inoltre una limitazione dell HubClient creandone una versione strong-typed completamente event-based.
Applicazioni del TAL e dell'Information retrieval nel settore giuridicoMarco Bianchi
Presentazione fatta a ForumPA 2009 che tratta due sperimentazione sul tema dell'Information retrieval nel contesto giuridico, condotte presso il Laboratorio di sperimentazione di tecnologie e applicazioni dell'Ufficio divisionale Tecnologie innovative del CNIPA.
3. Problema introduttivo n.1
• Si deve realizzare un’applicazione con GUI in grado di
lavorare su piattaforme diverse (es. MS-Windows, MacOS,
ecc).
• Il look and feel delle GUI dipende dalla piattaforma.
• Si crea una classe astratta per ogni oggetto grafico (text
field, list box, ecc.) a poi si scrivono le relative sottoclassi
concrete per ogni piattaforma considerata.
• Per rendere robusta l’applicazione bisogna assicurarsi che
tutti gli oggetti creati siano quelli progettati per funzionare
sulla piattaforma che si sta utilizzando
Come ottenere questa garanzia?
Come ottenere questa garanzia?
Ingegneria del Software - A.A. 2003/2004
4. Problema introduttivo n.2
• Si deve realizzare un programma che permette di eseguire in
remoto procedure di diagnostica sui computer prodotti dalla Stellar
Microsystem
• La Stellar ha progettato due famiglie
di computer che si distinguono per le
diverse architetture hardware, con
componenti solo funzionalmente
simili:
– Chip CPU di Enginola
– Chip in tecnologia RISC
chiamati ember, superember
e ultraember
• Il programma di diagnostica deve poter
istanziare il set di componenti giusto a
seconda del tipo di computer da analizzare
Ingegneria del Software - A.A. 2003/2004
8. Il pattern Abstract Factory (1/8)
• Nome Abstract Factory [GoF95], conosciuto anche con il
nome di Kit Pattern o Toolkit Pattern
• Synopsis Presenta un interfaccia per la creazione di
famiglie di prodotti, in modo tale che il cliente
non abbia conoscenza delle loro classi concrete.
Questo consente:
- di assicurarsi che il client crei soltanto prodotti
vincolati fra di loro
- l’utilizzo di diverse famiglie di prodotti da parte
dello stesso client.
• Context Cfr. esempio introduttivo
Ingegneria del Software - A.A. 2003/2004
9. Il pattern Abstract Factory (2/8)
• Forces - Un sistema che lavora con molti prodotti diversi
dovrebbe funzionare indipendentemente dallo
specifico prodotto Definizione interfacce
per ogni prodotto
- E’ desiderabile poter configurare il sistema per
lavorare con l’insieme di prodotti appartenenti
ad una stessa famiglia Definizione Factory
- Non si vuole legare il client ad una factory
specifica, cioè ad una particolare famiglia di
prodotti Definizione Abstract Factory
Ingegneria del Software - A.A. 2003/2004
10. Il pattern Abstract Factory (3/8)
Da Context…
… a Solution
• Solution –
Gli “attori” del
pattern sono:
– Client
– AbstractFactory
– ConcreteFactoryX
– WidgetY
– ProductXWidgetY
Ingegneria del Software - A.A. 2003/2004
11. Il pattern Abstract Factory (4/8)
• Consequences
- E’ facile aggiungere nuove famiglie di prodotti
- L’AbstractFactory assicura la creazione e l’utilizzo
di una famiglia consistente di oggetti
- Può risultare molto impegnativo aggiungere nuovi
widget o modificare uno già esistente
Ingegneria del Software - A.A. 2003/2004
12. Il pattern Abstract Factory (5/8)
• Implementation
- E’ raccomandabile implementare la classe AbstractFactory
come classe astratta e il metodo getFactory come metodo
statico
- Se il client deve lavorare con una famiglia di prodotti per
volta si può usare una variabile statica per settare la factory
concreta da usare
- Cfr. voce implementation del pattern Factory Method
• Java API usage
- La classe java.awt.Toolkit è una abstract factory usata per
creare oggetti che interagiscono correttamente con i diversi
sistemi nativi di GUI
Ingegneria del Software - A.A. 2003/2004
13. Il pattern Abstract Factory (6/8)
• Code example
public class Client
Client {
public void doIt () {
ArchitectureToolkit af;
af = ArchitectureToolkit.getFactory(ArchitectureToolkit.EMBER);
CPU cpu = af.createCPU();
//...
}
}
Ingegneria del Software - A.A. 2003/2004
14. Il pattern Abstract Factory (7/8)
public abstract class ArchitectureToolkit
ArchitectureToolkit {
public final static int ENGINOLA = 900;
public final static int EMBER = 901;
// ...
static final ArchitectureToolkit getFactory(int architecture) {
switch (architecture) {
case ENGINOLA:
return new EnginolaToolkit();
case EMBER:
return new EmberToolkit();
// ...
}
}
public abstract CPU createCPU() ;
public abstract MMU createMMU() ;
}
Ingegneria del Software - A.A. 2003/2004
15. Il pattern Abstract Factory (8/8)
• Related Patterns
Factory Method, Singleton
Ingegneria del Software - A.A. 2003/2004