Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
ConvertitoreMisure - Classe Misure!
Forum - ConvertitoreMisure - Classe Misure! - Pagina 2

Pagine: [ 1 2 3 4 5 6 7 8 ] Precedente | Prossimo
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 22:56
Martedì, 03/04/2018
Testo quotato

Postato originariamente da Mikelius:
Se da questa discussione esce fuori che i moduli sono un'alternativa migliore e più funzionale allo scopo, sarò il primo a migrarci.



I moduli sono una cosa antica, sono dei semplici contenitori di Dichiarazioni, Sub e Function, visibili a tutti i form, le classi sono più avanzate, questo è sicuro.
E' che fino a questo momento, non sono mai riuscito ad apprezzarle, mi sembra, e sbaglio sicuramente, che sono state implementate più per l'estetica che per la funzionalità.
Mi sto documentando, ma trovo sempre: fai così e così, senza il perché.
Un programmatore è una persona logica, non gli puoi dire fai così, perché si fa così e basta.


in programmazione tutto è permesso
PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 7:11
Mercoledì, 04/04/2018
Ciao Carlo, tutti i linguaggi moderni adottano la OOP di cui le classi sono gli elementi base. La OOP dovrebbe dare dei vantaggi "ereditarietà polimorfismo e incapsulamento" programmare ad oggetti significa scrivere più codice e in piccoli progetti sembra non dare nessun vantaggio, molti autodidatti, compreso io, non sanno esattamente in cosa consistono questi vantaggi :), il fatto che la programmazione procedurale è stata "abbandonata" esiste solo perché esistono linguaggi non recenti che ne fanno uso "esempio il C", ma tutti i nuovi linguaggi l'adottano.
Il problema non si pone a chi si accinge oggi ad imparare a programmare, perché il linguaggio che sceglierà sarà quasi sicuramente ad oggetti, siamo solo noi che siamo partiti con linguaggi procedurali e ci ritroviamo con qualcosa di diverso, e solo a noi ci vengono dei dubbi, NON DOVREMMO AVERLI.
Ci siamo adattati a passare a computer con interfaccia testuale a computer con GUI, a programmare in basic e poi passare a VisualBasic, a usare il telefono a gettone e poi lo smartphone.
Il fatto che se vogliamo usare strumenti moderni ci dobbiamo adattare senza fare confronti, non esiste il confronto perché non esiste alternativa, vuoi usare uno strumento contemporaneo ? è solo OOP. vuoi usare un linguaggio in disuso, procedurale.
Non è questione di migliore o peggiore perché se poi riesci ad ottenere il risultato voluto l'obbiettivo lo raggiungi, è proprio essere contemporanei e confrontarsi con le persone che vivono questi tempi, o rimanere attaccati a un epoca passata.
Faccio un esempio, la cassetta VHS faceva il suo lavoro ma oggi si usano i DVD, non è proprio esatto perché per essere moderni oggi si usano i Bluray, possiamo continuare a usare i vhs "ma rimaniamo un po isolati nel nostro mondo", o con poco sforzo ci adattiamo alle nuove tecnologie. :D

PM Quote
Avatar
torn24 (Normal User)
Pro


Messaggi: 156
Iscritto: 04/01/2008

Segnala al moderatore
Postato alle 7:55
Mercoledì, 04/04/2018
Mikelius forse un idea sarebbe creare una classe convertitore con metodi statici, da poter essere inserita  e usata in più progetti.
Un po come la classe Math del .Net.

PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 12:04
Mercoledì, 04/04/2018
Testo quotato

Postato originariamente da torn24:

Mikelius forse un idea sarebbe creare una classe convertitore con metodi statici, da poter essere inserita  e usata in più progetti.
Un po come la classe Math del .Net.


Non mi costa nulla inserirne uno, ma conviene?
dovrebbe essere del tipo (più complicata):
Codice sorgente - presumibilmente C#

  1. public static double Conversion(string scalaIniziale, string scalaFinale, double valueIniziale)



In più (ancora non è completa, per questo ho rilasciato solo beta) con un oggetto istanziato posso avere legato al valore della temperatura, la scala e il simbolo (tutte proprietà dell'oggetto creato).
Con un metodo statico non avrei solo il valore convertito?

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 23:31
Mercoledì, 04/04/2018
Ho una versione VB .NET che converte anche temperature, distanze, capacità, pressione, pesi e potenza.

non mi piace come gestisco le texts.

Il programma è come lo ha pensato Michelius, si sceglie la scala di input, si immette il valore e i risultati appaiono su 8 TextBox.

Ho usato un  TabControl con 6 TabPages, per poter scegliere l'unità di misura che si vuole convertire.
se si esclude il caso temperature, i calcoli per convertire le altre unità di misura sono sempre gli stessi, cambia solo il moltiplicatore.

Ma ho dovuto mettere lo stesso 6 routine distinte perchè non riesco a raggiungere le textbox che sono su sei panel con nomi distinti:
Codice sorgente - presumibilmente VB.NET

  1. Select Case Pannello
  2.  
  3.                 Case 1 ' distanze
  4.  
  5.                     If InputValido Then
  6.                         Riferimento = dTempIn / arrayValori(UnitaInConversione, Scelta)
  7.                         For Each TextBox In PanelloDistanze.Controls
  8.                             TextBox.text = Math.Round(Riferimento * arrayValori(UnitaInConversione, TextBox.tag), 3)
  9.                         Next
  10.                     Else
  11.                         For Each TextBox In PanelloDistanze.Controls
  12.                             TextBox.text = Nothing
  13.                         Next
  14.                         valueInput.BackColor = Color.Red
  15.                         labInfo.Text = Risposta
  16.                     End If
  17.  
  18.                 Case 2 ' Capacità
  19.  
  20.                     If InputValido Then
  21.                         Riferimento = dTempIn / arrayValori(UnitaInConversione, Scelta)
  22.                         For Each TextBox In PannelloCapacita.Controls
  23.                             TextBox.text = Math.Round(Riferimento * arrayValori(UnitaInConversione, TextBox.tag), 3)
  24.                         Next
  25.                     Else
  26.                         For Each TextBox In PannelloCapacita.Controls
  27.                             TextBox.text = Nothing
  28.                         Next
  29.                         valueInput.BackColor = Color.Red
  30.                         labInfo.Text = Risposta
  31.                     End If
  32.  
  33.                 Case 3 ' Pressione
  34.  
  35.                     If InputValido Then
  36.                         Riferimento = dTempIn / arrayValori(UnitaInConversione, Scelta)
  37.                         For Each TextBox In PannelloPressione.Controls
  38.                             TextBox.text = Math.Round(Riferimento * arrayValori(UnitaInConversione, TextBox.tag), 3)
  39.                         Next
  40.                     Else
  41.                         For Each TextBox In PannelloPressione.Controls
  42.                             TextBox.text = Nothing
  43.                         Next
  44.                         valueInput.BackColor = Color.Red
  45.                         labInfo.Text = Risposta
  46.                     End If
  47.  
  48.                 Case 4 ' Pesi
  49.  
  50.                     If InputValido Then
  51.                         Riferimento = dTempIn / arrayValori(UnitaInConversione, Scelta)
  52.                         For Each TextBox In PannelloPesi.Controls
  53.                             TextBox.text = Math.Round(Riferimento * arrayValori(UnitaInConversione, TextBox.tag), 3)
  54.                         Next
  55.                     Else
  56.                         For Each TextBox In PannelloPesi.Controls
  57.                             TextBox.text = Nothing
  58.                         Next
  59.                         valueInput.BackColor = Color.Red
  60.                         labInfo.Text = Risposta
  61.                     End If
  62.  
  63.                 Case 5 ' potenza
  64.  
  65.                     If InputValido Then
  66.                         Riferimento = dTempIn / arrayValori(UnitaInConversione, Scelta)
  67.                         For Each TextBox In PannelloPotenza.Controls
  68.                             TextBox.text = Math.Round(Riferimento * arrayValori(UnitaInConversione, TextBox.tag), 3)
  69.                         Next
  70.                     Else
  71.                         For Each TextBox In PannelloPotenza.Controls
  72.                             TextBox.text = Nothing
  73.                         Next
  74.                         valueInput.BackColor = Color.Red
  75.                         labInfo.Text = Risposta
  76.                     End If
  77.  
  78.             End Select
  79.         End If



il codice è inutilmente ripetuto solo perché ho i panel con nomi diversi:

For Each TextBox In PannelloDistanze.Controls
For Each TextBox In PannelloCapacita.Controls
For Each TextBox In PannelloPressione.Controls
For Each TextBox In PannelloPesi.Controls
For Each TextBox In PannelloPotenza.Controls

Se avessi un indice invece di un nome...

Non ho controllato l'esattezza di tutte le conversioni, ma a campione sembra ok.


Carlo ha allegato un file: Conversioni minimale.zip (148690 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Carlo il 18/05/2018 alle 19:16


in programmazione tutto è permesso
PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 8:48
Giovedì, 05/04/2018
Testo quotato

Postato originariamente da torn24:

Ciao Carlo, tutti i linguaggi moderni adottano la OOP di cui le classi sono gli elementi base. La OOP dovrebbe dare dei vantaggi "ereditarietà polimorfismo e incapsulamento" programmare ad oggetti significa scrivere più codice e in piccoli progetti sembra non dare nessun vantaggio, molti autodidatti, compreso io, non sanno esattamente in cosa consistono questi vantaggi :), il fatto che la programmazione procedurale è stata "abbandonata" esiste solo perché esistono linguaggi non recenti che ne fanno uso "esempio il C", ma tutti i nuovi linguaggi l'adottano.
Il problema non si pone a chi si accinge oggi ad imparare a programmare, perché il linguaggio che sceglierà sarà quasi sicuramente ad oggetti, siamo solo noi che siamo partiti con linguaggi procedurali e ci ritroviamo con qualcosa di diverso, e solo a noi ci vengono dei dubbi, NON DOVREMMO AVERLI.
Ci siamo adattati a passare a computer con interfaccia testuale a computer con GUI, a programmare in basic e poi passare a VisualBasic, a usare il telefono a gettone e poi lo smartphone.
Il fatto che se vogliamo usare strumenti moderni ci dobbiamo adattare senza fare confronti, non esiste il confronto perché non esiste alternativa, vuoi usare uno strumento contemporaneo ? è solo OOP. vuoi usare un linguaggio in disuso, procedurale.
Non è questione di migliore o peggiore perché se poi riesci ad ottenere il risultato voluto l'obbiettivo lo raggiungi, è proprio essere contemporanei e confrontarsi con le persone che vivono questi tempi, o rimanere attaccati a un epoca passata.
Faccio un esempio, la cassetta VHS faceva il suo lavoro ma oggi si usano i DVD, non è proprio esatto perché per essere moderni oggi si usano i Bluray, possiamo continuare a usare i vhs "ma rimaniamo un po isolati nel nostro mondo", o con poco sforzo ci adattiamo alle nuove tecnologie. :D



Grazie Torn24, me lo ripeto continuamente, e se deciderò di scrivere Visual Studio 4000, istanzierò, incapsulerò e classerò tutto, perché con la programmazione procedurale mi infilerei in un vicolo cieco.:asd::asd::asd:
Non voglio tornare indietro, ma penso che per un progetto di 2 pagine dove mi bastano 4 variabili globali per gestire tutto, non devo per forza creare una classe per proteggermi dal lupo che inconsapevolmente mi cambia un valore a mia insaputa.:asd::asd::asd:
A scopo didattico, sto programmando utilizzando anche OOP, per essere pronto alla prima occasione di utilizzare questo metodo, perché in un progetto corposo e soprattutto dove interagiscono più programmatori, ti ripara dai guai.


in programmazione tutto è permesso
PM Quote
Avatar
Mikelius (Member)
Expert


Messaggi: 525
Iscritto: 14/04/2017

Segnala al moderatore
Postato alle 10:07
Giovedì, 05/04/2018
Testo quotato

Postato originariamente da Carlo:
Non voglio tornare indietro, ma penso che per un progetto di 2 pagine dove mi bastano 4 variabili globali per gestire tutto, non devo per forza creare una classe per proteggermi dal lupo che inconsapevolmente mi cambia un valore a mia insaputa.:asd::asd::asd:



Mi spiego meglio perchè forse non si era capito.
Io mi sto affacciando alla programmazione in C#, ho creato questo progetto per mettere in pratica le conoscenza che sto acquisendo. Sicuramente molte delle cose che ho fatto sono superflue, ma ,sopratutto per me, è meglio capire bene nella pratica l'impostazione da dare con un programma semplice e che richiede relativamente poche conoscenze piuttosto che iniziare ad applicarle in programmi più complessi. Ecco il perchè delle classi qui, non perche siano obbligatorie, ma perchè se le strutturo male ora, posso correggermi in tempo. (ancora posso essere "plasmato") .

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 12:24
Giovedì, 05/04/2018
Testo quotato

Postato originariamente da Mikelius:
Mi spiego meglio perchè forse non si era capito.
Io mi sto affacciando alla programmazione in C#, ho creato questo progetto per mettere in pratica le conoscenza che sto acquisendo. Sicuramente molte delle cose che ho fatto sono superflue, ma ,sopratutto per me, è meglio capire bene nella pratica l'impostazione da dare con un programma semplice e che richiede relativamente poche conoscenze piuttosto che iniziare ad applicarle in programmi più complessi. Ecco il perchè delle classi qui, non perche siano obbligatorie, ma perchè se le strutturo male ora, posso correggermi in tempo. (ancora posso essere "plasmato") .


Testo quotato

Postato originariamente da Carlo:
Si capisce bene che l'approcio di Mikelius è didattico, per questo ho studiato quello che ha fatto con piacere.


Michelius, ti ho riportato la mia affermazione di Martedì, 03/04/2018 alle 13:44, per ribadire che ho già capito le tue motivazioni, e le condivido, non solo, ti ringrazio perché il tuo progetto mi ha fatto capire più di tutti i testi che ho letto.:k:

Ultima modifica effettuata da Carlo il 05/04/2018 alle 12:31


in programmazione tutto è permesso
PM Quote
Pagine: [ 1 2 3 4 5 6 7 8 ] Precedente | Prossimo