<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/"
 xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
>

<channel rdf:about="http://www.siforge.org/articles/forum/../../articles/2004/01/19-essence_pattern.html">
<title>[SIForge.org] Configurazione Programmativa: concetti di design </title>
<link>http://www.siforge.org/articles/forum/../../articles/2004/01/19-essence_pattern.html</link>
<description>Commenti all'articolo "Configurazione Programmativa: concetti di design "</description>
<dc:language>it</dc:language>
<dc:publisher>redazione@siforge.org</dc:publisher>
<dc:creator>redazione@siforge.org</dc:creator>
<syn:updatePeriod>hourly</syn:updatePeriod>
<syn:updateFrequency>1</syn:updateFrequency>
<syn:updateBase>1901-01-01</syn:updateBase>
<items>
 <rdf:Seq>
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#69907503" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#87173480" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#71267852" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#89226045" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#33544594" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#14389310" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#11650028" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#02735187" />
  <rdf:li rdf:resource="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#64112943" />
 </rdf:Seq>
</items>
<image rdf:resource="http://www.siforge.org/images/skin/default/sidebar/icon32.gif" />
<textinput rdf:resource="http://www.siforge.org/articles/search/" />
</channel>

<image rdf:about="http://www.siforge.org/images/skin/default/sidebar/icon32.gif">
<title>SIForge.org</title>
<url>http://www.siforge.org/images/skin/default/sidebar/icon32.gif</url>
<link>http://www.siforge.org/</link>
</image>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#69907503">
<title>yag (17 gen 2005, 10:41:53)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#69907503</link>
<description>Titolo :
Modificare Factory Method parametrico:

Allora ho un implementazione da manuale del factory method parametrico,
ora mi servirebbe un consiglio su come fare per estenderlo e fare in modo :
che il client possa passare / ricevere una classe fra alla classe prodotto 

Sto tentando varie strade ma questa volta non riesco ad uscirne fuori...

</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#87173480">
<title>yag (22 nov 2004, 15:18:20)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#87173480</link>
<description>grazie comunque ... :) 

in generale mi sono trovato costretto ad usare un enumerativo 
poterlo utilizzare il client e conoscere lo stato...</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#71267852">
<title>Stefano Fago (22 nov 2004, 10:31:07)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#71267852</link>
<description>Mi spiace sinceramente del tipo di risposta che fornisci...Ho cercato solo di aiutarti...Sono stato molto concreto se leggi bene...Non penso che ti apettassi la stesura di un programma...Comunque sei vuoi ancora pi&#249; concretezza vai su un classico &lt;a href='http://www.tutok.sk/fastgl/download/books/Thinking%20in%20Patterns%20with%20Java.pdf.'>http://www.tutok.sk/fastgl/download/books/Thinking%20in%20Patterns%20with%20Java.pdf.&lt;/a> (Pensa in Pattern di Eckel)...Se poi non ti ritrovi ai conti...Scrivi un articolo sulla tua problematica, come l'hai risolta, cosa non ti piace di quello che hai fatto ed aprire cos&#236; una discussione meno vaga e pi&#249; costruttiva...senza pseudo codice o, a questo punto, fumosit&#224; di design...Mi sembra una proposta onesta...Buon Lavoro
</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#89226045">
<title>yag (19 nov 2004, 17:21:55)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#89226045</link>
<description>Pi&#249; o meno conosco gi&#249; le problematica di cui mi hai parlato 
solo mi servivano risposte pi&#249; concrete (a questo punto)

forse il mement mi pu&#242; dare una mano.. ora vedo...</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#33544594">
<title>Stefano Fago (17 nov 2004, 09:15:50)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#33544594</link>
<description>La problematica che proponi ha differenti risposte...Assestiamo per&#242; le differenze...Lo State Pattern ti permette di &quot;cristallizzare&quot; i possibili stati di un oggetto in differenti &quot;oggetti di stato&quot;...Esempio: un auto &#232; accesa, accesa ma ferma, spenta; avremo l'oggetto CAR e gli oggetti RunningState, RunningButNotMovingState, StoppedState! L'elaborazione sull'elemento target a questo punto si traduce in sequenze di passaggio di stato, quindi, il passaggio tra un oggetto stato ad un altro!...Riprendendo l'esempio: RunningButNotMovingState--&gt;RunningState--&gt;RunningButNotMovingState--&gt;StoppedState!...LA conoscenza degli internals di un oggetto senza violarne l'incapsulamento(E' QUESTA LA VERA SFIDA!!!) &#232; gestita dal pattern MEMENTO (http://www.mokabyte.it/1999/04/AT_Memento.html) e sue variazioni...E' possibile semplificarsi la vita con il pattern OBSERVER, &quot;se le condizioni lo permettono&quot;: stiamo parlando di ricondursi ad un sistema ad eventi per cui l'evento porta con se alcune info dello stato dell'osservabile agli osservanti!...A volte lo stato deve anche essere reversibile e quindi, se lo stato stesso &#232; risultato di un'azione, si gioca con il pattern COMMAND!...Come vedi ci sono tanti modi di approcciare, ma come la solito: CERCA DI CAPIRE PRIMA IL PROBLEMA, POI MODELLALO ED INFINE PATTERNIZZA!!!! Buon Lavoro!</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#14389310">
<title>yag (13 nov 2004, 15:12:27)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#14389310</link>
<description>ciao tornato :)

vorrei sapere ne design patter state 

come potrebbe fare il client per conosce lo stato attuale ? 
dell'oggetto o eventualmetne di se stesso? </description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#11650028">
<title>yag (02 nov 2004, 18:43:24)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#11650028</link>
<description>grazie come sempre molto chiaro.
Non vorrei fare un dibattito molto lungo (anche se non nego mi farebbe piacere) 

forse dovrei approffondire il concetto di &quot;programmazione funzionale&quot;

</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#02735187">
<title>Giovanni Giorgi (02 nov 2004, 15:44:32)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#02735187</link>
<description>Ciao,
 in generale il ragionamento che hai fatto e' corretto.
Il contesto presentato rientra nell'annoso problema della programmazione funzionale che va sotto il nome di &quot;GESTIONE DEGLI ERRORI&quot;. 
Una delle soluzioni piu' classiche e' quella dell'ANSI C (vedi  la gestione degli errori di I/O, l'uso della varaibile &quot;errorno&quot; ecc).

La tua proposta e' buona pero' tipicamente si rischia di &quot;ingrassare&quot; il diagramma degli stati dell'oggetto con stati di errore, che spesso non hanno molto a che fare con il nocciolo del problema.
Cioe' a regime l'oggetto inizia a preoccuparsi troppo di tutti i possibili errori, e rischia di perdere di vista il suo lavoro (un po' come una persona apprensiva che invece di lavorare si preoccupa degli errori che POTREBBE fare lavorando... :).

Per evitarlo, e' stato introdotto il concetto di Eccezione, presente in linguaggi come Eiffel, C++, Java.

Per una trattazione esaustiva delle eccezioni rimando 
a &lt;a href='http://www.siforge.org/articles/2003/03/23-design-eccezioni-java-jdk14.html'>http://www.siforge.org/articles/2003/03/23-design-eccezioni-java-jdk14.html&lt;/a>
ed al libro di Stroustrup sul C++ 



</description>
</item>

<item rdf:about="http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#64112943">
<title>yag (30 ott 2004, 18:44:42)</title>
<link>http://www.siforge.org/articles/forum/index.cgi/show/t20040119__essence_pattern#64112943</link>
<description>Creare una sorta di pattern

Scopo:
------
Rendere il codice pi&#249; chiaro e pulito 

Applicabilit&#224;:
--------------
In quei casi in cui si una operazione (metodo) 
che chiama tante piccole operazioni (metodi) ,
se uno di questi fallisce, fallisce anche quello 
che le chiama, inoltre questo metodo pu&#242; essere 
fermato da un'evento generato nel metodo chiamato

Esempio classico:

da un metodo di una classe ne chiami n se una di queste fallisce oppure da una di queste viene 
generato un evento che deve far fallire il primo.


Es pseudo codice:

classe::metodo1() {
	if (!m1) esci  (ved *1.)
	if (!m2) esci  (ved *1.)
            
	se uno di questi fallisce 
	torna errore.
}


*1) implementazione di mX

if (utente preme ok) torna ok 
if (utente preme false) torna false
if (utente preme chiudi) chiudi (fa fallire il metodo  metodo1)

//nota:
se torno false al metodo chiamante non posso sapere se &#232; per un errore oppure per un'altro evento (Chiudi) che non sia un'errore .

Ho pensato questa soluzione.

la classe in questione &#232; una specie di 
Facade(rappresente la mia classe application) che fornisce dei 
servizi delegando le richieste ad altre classi.
Quello che ho pensato &#232;: 
dare alla classe (in questione) uno stato 
(es: di errore, di attesa, chiusura ecc.) ed in base 
al suo stato eseguire detterminate operazioni nel mio 
caso specifico m2 dovrebbe chiamare (sono gi&#224; in connessione) 
qualcosa tipo: classe-&gt;cambia_stato_in_chiudi , questo verra verificato dentro quella specie 
di loop e risolvo
il problema.
Chiudo altrimenti mi dilungo troppo.
1)
Secondo te &#232; corretto il concetto di stato ? (in fin dei conti una app. pu&#242; avere uno stato...) lo userai anche
in altri casi naturalmente 
2) 
uno stato che caratteristiche potrebbe avere (nome,catergoria, priorit&#224; ) altro ? 

Scusa ancora il disturbo grazie ancora.



</description>
</item>

<textinput rdf:about="http://www.siforge.org/articles/search/">
<title>Ricerca</title>
<description>Cerca negli articoli pubblicati</description>
<name>s_query</name>
<link>http://www.siforge.org/articles/search/</link>
</textinput>

</rdf:RDF>
