Neo1986 (Ex-Member)
Pro
Messaggi: 97
Iscritto: 21/06/2010
|
Postato originariamente da HeDo:
Postato originariamente da Neo1986:
visto che abbiamo fatto 30 facciamo 31, nel caso volessi usare una classe per ogni comando, come potrei fare nel thread di lettura per fargli "scorrere" tutte le classi (quindi ogni comando)? |
l'oop non si spiega in un post
l'idea base sarebbe quella di creare una classe astratta command dalla quale tutti i comandi discendono. E un commandforger che dai dati di ingresso restituisce un'istanza della classe che rappresenta quel comando.
Nella classe base metti dei comandi per serializzare/deserializzare il comando in modo da poterli chiamare direttamente sui dati.
E' un argomento non banale in cui intervengono molti aspetti della programmazione OOP, ti consiglio un buon libro |
Ti ringrazio per la dritta ma purtroppo visto che è per lavoro e non ho a disposizione 6 mesi di tempo per leggermi un libro continuo sulla mia strada.
Grazie ancora |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Neo1986:
Ti ringrazio per la dritta ma purtroppo visto che è per lavoro e non ho a disposizione 6 mesi di tempo per leggermi un libro continuo sulla mia strada.
Grazie ancora |
eh guarda ti capisco, spesso il lavoro impone delle tempistiche che non contemplano l'approfondimento delle tematiche coinvolte
ti consiglio cmq di prendere un testo sull'OOP, magari per il prossimo progetto
considera che l'approcio OOP una volta compreso e implementato è quello che offre la maggior flessibilità e pulizia del codice, hai solo da guadagnarci
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Postato originariamente da HeDo:
intervento inutile in quanto fin qui c'eravamo arrivati...
|
mi è sfuggita una regola? Da quando HeDo stabilisce che un intervento ha significato?
Fammi il piacere di non commentare più in questo modo, sei molto irritante.
Non vedo chi ti creda di essere per poter emettere giudizi a priori su cose scritte da altri.
Con questo non intendo proseguire oltre. Arrivederci. |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Forse vuoi qualcosa del genere:
Codice sorgente - presumibilmente VB.NET |
Class GestoreSensore Private Shared _Comandi As List(Of ElencoParametri) Public Shared ReadOnly Property Comandi() As List(Of ElencoParametri) Get Return _Comandi End Get End Property Shared Sub New() 'inizializza tutti i comandi End Sub Public Sub New() 'inizializza altre risorse End Sub 'Altri membri End Class
|
Se utilizzi il GestoreSensore per gestire tutte le azioni possibili, quando ne inizializzi uno la prima volta viene eseguito il costruttore Shared, che inizializza tutti i comandi notevoli (che devi scrivere a mano). Essi saranno accessibili nella lista Comandi. Potrai scrivere dei metodi di questo tipo:
Codice sorgente - presumibilmente VB.NET |
Public Sub Esegui(ByVal Cmd As ElencoParametri) '... End Sub 'Usate nel programma principale: Dim S As New GestoreSensore S.Esegui(GestoreSensore.Comandi(0))
|
Utilizzare una classe per ogni comando, secondo me, è scorretto. L'uso che ne fai è di semplice memorizzazione, mentre una classe rappresenta un'entità attiva, dotata di metodi che fanno qualcosa o fanno fare qualcosa. Per i tuoi scopi è decisamente meglio una struttura. |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Il Totem:
Utilizzare una classe per ogni comando, secondo me, è scorretto. L'uso che ne fai è di semplice memorizzazione, mentre una classe rappresenta un'entità attiva, dotata di metodi che fanno qualcosa o fanno fare qualcosa. Per i tuoi scopi è decisamente meglio una struttura. |
beh un comando può avere dei parametri e magari doverli manipolare in qualche modo, quindi credo che una classe offrà più elasticità rispetto ad una struttura, almeno sul fronte ereditarietà
@lorenzo: sono solo io che quando non posso aggiungere altro a quello che è già stato detto non posto? |
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da HeDo:
beh un comando può avere dei parametri e magari doverli manipolare in qualche modo, quindi credo che una classe offrà più elasticità rispetto ad una struttura, almeno sul fronte ereditarietà
@lorenzo: sono solo io che quando non posso aggiungere altro a quello che è già stato detto non posto? |
Il fatto è proprio questo: non c'è bisogno di ereditarietà. Infatti la diversità e il comportamento di ciascun comando è dato dal valore dei campi della struttura e non dal tipo di dato che li contiene. E' solo il nome del comando (quindi una stringa) che ne modifica la funzione. |
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Postato originariamente da Il Totem:
Il fatto è proprio questo: non c'è bisogno di ereditarietà. Infatti la diversità e il comportamento di ciascun comando è dato dal valore dei campi della struttura e non dal tipo di dato che li contiene. E' solo il nome del comando (quindi una stringa) che ne modifica la funzione. |
è un approcio diverso, dipende dalla complessità del protocollo e dai comandi, cmq ognuno è libero di scegliere l'approcio che preferisce |
|