Riflessioni semi serie su programmazione e dintorni.

2008/06/26

No feedback???

Ciao a tutti,
questo blog mi sembra un po' un deserto, aspettavo feedback, ma sembra
che si facciano desiderare. Se si ritiene che Dummy of the week non sia
utile, almeno fatelo sapere!

Fab

2008/06/23

Back to the future

Ciao,
come da ultimo incontro posto una serie di temi che potrebbero essere trattati
fra due settimane, aspetto commenti per sapere quale potrà interessare:
- Prototype: c++ java e la reflection
- Agile: cosa significa e... l'abbiamo mai usata?
- CORBA: memory management nei sistemi distribuiti
- Template: c++ to the infinity and beyond
- STL: magie algoritmiche sui contenitori
- Unit Testing: uno sconosciuto al lavoro (System Testing)
- Makefile: quando il codice non è tutto
- OpenGL: disegnare il mondo
- wxWidgets: aprire il codice alle finestre

Ok,
aspetto di sapere cosa trattare (visto che mi vorrei riposare ;-)

2008/06/18

Composite & Visitor ovvero: come i pattern si legano al memory management

Eccoci alla seconda puntata del nostro blog preferito,
il tema che tratteremo nei prossimi giorni è decisamente sfidante
e pretenzioso Composite & Visitor.

La GOF classificò i pattern in famiglie:
- creational
- behavioral
- structural

Composite è un pattern della famiglia structural.
Lo scopo del composite è gestire in maniera organica alberi di oggetti
(ricorda un po' un frattale).





La grande flessibilità di un Composite ne limita l'estensione nel comportamento.

I principi di incapsulamento, propri della programmazione Object Oriented, consigliano di mantenere le interfacce degli oggetti contenute, pochi metodi strettamente collegati al comportamento dell'oggetto da trattare.

Un Composite prevede di raggruppare il più possibile, questo implicherebbe interfacce della classe padre "ingombranti".





Il Visitor ci può venir in aiuto, scopo del visitor è quello di dare comportamento ad oggetti.
Visitor appartiene alla famiglia dei pattern behavioral.
Gli oggetti possono essere tra loro scorrelati, basta che nella loro interfaccia siano capaci
di accettare un "visitatore" ;-)
PS: vedi anche Iterator.


Come in tutte le scelte progettuali ci sono vantaggi e svantaggi:

Composite offre un interfaccia unica per gerarchie di oggetti complessi, ne semplifica la creazione di nuovi, ma è limitante per quel che riguarda l'estensione dell'interfaccia;

Visitor offre la possibilità di aggiungere comportamento, ma non è flessibile per aggiungere nuovi oggetti;

quindi, beh scegliete voi ;-)










Ma come diceva una nota canzone di Ivan Graziani: "tutto questo cosa c'entra con il..."
memory management.

Finora non abbiamo parlato delle strutture dati per contenere gli alberi di oggetti, né
di STL.
STL è un fantastico acronimo per Standard Template Library.
STL è una libreria che sfrutta una feature molto potente del c++: i template.
I template sono un argomento che merita un post a sé, ma tanto per far venire un po' di acquolina cominciamo a trattarne almeno uno: auto_ptr.

auto_ptr è uno strumento estremamente utile per avere un memory management semplice
ed efficiente, il problema è che non può essere usato nelle altre strutture STL, che tipicamente sono utilizzate nei Composite ;-)

A proposito del codice lo potete trovare qui.

Cheers

2008/06/13

Singleton: definizione, implementazione e varianti.

Ciao,
eccoci alla prima raccolta di info derivanti dal primo seminario il cui titolo era:
Singleton: definizione, implementazione e varianti.

Il Singleton è un pattern di programmazione molto noto per avere all'interno del proprio codice un'instanza unica di oggetto.

La versione più celebre è quella presentata nel libro "Desing Pattern" della fantomatica
Gang of Four (Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides).

Ecco qua il codice mostrato durante il seminario: the code.

Un utile riferimento si può trovare qui.

All'interno del progetto Cardamom uno degli impieghi del Singleton si puo' trovare nella classe Logger del CSCI Foundation.

Welcome Dummy of The Week

Ciao a tutti,
benvenuti in questo "contenitore" per riflessioni semi serie sulla programmazione e dintorni.

L'idea di questo blog nasce dalla volontà di raccogliere in forma organica i seminari che sono tenuti per approfondire i temi di: linguaggi di programmazione, pattern ed architettura software.

Ringrazio da subito tutti quelli che vorranno fattivamente contribuire al suo successo.

Fab