Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Era esattamente qui che volevo portarti,
Per questo, te l'ho chiesto apposta
Sebbene entrambi incapsulano metodi è da notare questi fattori importantissimi.
Interfaccia:
L'interfaccia non può avere contenere eventi o delegati.
Ma può ereditare una o più interfacce.
I Metodi contenuti vanno esplicitamente dichiarati nella classe che eredita l'interfaccia.
Classe astratta:
Può contenere eventi e delegati ma non può ereditare più di una classe.
i metodi astratti possono anche non essere implementati nella classe che eredita la classe astratta.
Possibilità di specificare le implementazioni predefinite dei metodi.
Aggiunta di controllo invariante alle funzioni.
Avere un po 'più di controllo su come vengono chiamati i metodi "interfaccia"
Capacità di fornire un comportamento correlato.
Ho implementato anche la conversione delle temperature, manca ancora il controllo input sui valori minimi e massimi.
Non voglio proseguire perché il mio codice anche se in C#, è procedurale e non somiglia per niente ad un programma oop in C#.
Vorrei che Mikelius utilizzasse il mio approcio (valido) Matrici->indici, che corrispondono con l'indice del ComboBoxInT.SelectedIndex, e l'indice del TabControl.SelectedIndex, ma usando il suo modo di programmare, che vorrei apprendere.
Non mi sono scordato di te, ma sto cercando di capire come potere fare, Ti spiego, con il mio metodo, io ho scritto il programma utilizzando un tipo generico, quindi non ho bisogno di vari indici tranne quello di ComboBoxInT.SelectedIndex che andrà ad instanziare la classe con il tipo adeguato. tutto il resto è uguale per ogni misura. La classe l'ho chiamata IPhysics, poi ad ogni selezione una volta varrà Temperature, una volta Pressure e cosi via. Con il tuo metodo, non c'è più la necessità di avere una classe generica, perchè al variare dell'indice dovrei instanziare e utilizzare tipi diversi. Credo che sia ugualmente fattibile, ma credo si perderebbero i vantaggi del tuo e del mio metodo. (il tuo approccio è validissimo, sotto certi aspetti è migliore, l'unica pecca è il dover modificare la GUI se volessi cambiare o aggiungere delle misure, con il mio scrivo forse 10volte il tuo codice, ma almeno non tocco la GUI e posso modificare solo la dll  
Chiaro.
Mi sono scaricato la tua nuova versione, e l'ho studiata un po', capisco quello che fai, ma poi se cerco di programmare come te, mi perdo.
Il mio primo programma serio l'ho scritto 40 anni fa (era un programma di contabilità), sono passato per il basic, pascal, fortran, assembler e assembly, quando è uscito VB6, l'ho adottato e non ho cambiato più fino a 2 anni fa.
Edit.
Questo per dire che fai bene a perseguire una disciplina "corretta", cambiare non è semplice.
Ultima modifica effettuata da Carlo il 05/05/2018 alle 16:10
Dopo aver letto che vorresti rendere il programma espandibile, mi è venuto in mente che un utilizzatore di questo programma, potrebbe avere l'esigenza di convertire altre scale o altre unità.
Mi è sembrato corretto dare all'utente la possibilità di personalizzare e/o aggiungere nuove unità.
Ho inserito un tastino [+] per aggiungere nuove unità di misura e un tastino [edit] per modificare le scale.
Ad esclusione delle temperature l'utente può cambiare tutto, e/o aggiungere tutte le unità di misura che vuole.
Ad ogni [+] si crea una nuova unità composta da 8 scale, con valori nulli, modificabili con [edit].
L'esempio (per ora) non prevede controlli su quanto inserito, e non salva per un utilizzo futuro.
Dopo aver letto che vorresti rendere il programma espandibile, mi è venuto in mente che un utilizzatore di questo programma, potrebbe avere l'esigenza di convertire altre scale o altre unità.
Mi è sembrato corretto dare all'utente la possibilità di personalizzare e/o aggiungere nuove unità.
Ho inserito un tastino [+] per aggiungere nuove unità di misura e un tastino [edit] per modificare le scale.
Ad esclusione delle temperature l'utente può cambiare tutto, e/o aggiungere tutte le unità di misura che vuole.
Ad ogni [+] si crea una nuova unità composta da 8 scale, con valori nulli, modificabili con [edit].
L'esempio (per ora) non prevede controlli su quanto inserito, e non salva per un utilizzo futuro.
Vedi se ti piace come idea.
l'idea è buona, sto studiando le classi astratte per implementarla come classe padre (ma ho un problemino con membri/proprietà virtual/stati/abstract ecc ecc ), questo però rende difficile aggiungere esternamente altre scale, (per salvare le modifiche si potrebbe creare un file di supporto da dove estrapolare le info per le varie unità di misura (json o XML che sarebbe meglio) non credo sia fattibile modificare direttamente la dll. Onestamente non avevo pensato alla necessità di inserire nuove grandezze di misura, perchè avevo intenzione di inserirle tutte (o per lo meno la spero XD).
Ti faccio una domanda, a livello di programma:
Secondo te, imporre solo 8 unità di misura è giusto? ad esempio le temperature sono 8, ma comunemente vengono usate solo 3, per questo avevo strutturato il programma con 8. ma se ad esempio prendiamo la lunghezza, 8 possono essere anche poche (se dobbiamo includere unità anglosassoni e astronomiche ad esempio). Se strutturassimo il pannello delle conversioni in modo tale da contenerne di più? (al limite con una barra laterale per scorrere l'elenco)
P.s. Se vuoi, inserisci il programma come beta nel progetto, senza problemi, inserisci tranquillamente le tue versioni.
Postato originariamente da Mikelius: Ti faccio una domanda, a livello di programma:
Secondo te, imporre solo 8 unità di misura è giusto? ad esempio le temperature sono 8, ma comunemente vengono usate solo 3, per questo avevo strutturato il programma con 8. ma se ad esempio prendiamo la lunghezza, 8 possono essere anche poche (se dobbiamo includere unità anglosassoni e astronomiche ad esempio). Se strutturassimo il pannello delle conversioni in modo tale da contenerne di più? (al limite con una barra laterale per scorrere l'elenco)
Avevo pensato a questo problema, per questo la personalizzazione è importante, non si può prevedere cosa vuole l'utente.
1) le unità di misura inseribili devono essere infinite.
2) le scale per ogni unità di misura vanno bene solo 8, perchè se si ha l'esigenza di averne di più, basta inserire due o più Unità.
Es. Distanze1, Distanze2, Distanze3
In Distanze1 ci saranno le scale normali Km, m, piedi, braccia ecc.
In Distanze2 ci saranno le scale astronomiche parsec, UA, anno luce, Km ecc.
In Distanze3 ci saranno le scale micrometriche m, nm, pm, angstrom, femtometro ecc.
Il programma che ho postato, già fa una cosa di questo genere, manca il salvataggio, ma non è un problema salvare un testo o XML.
Ora lo scrivo in C#, poi lo posto.
Naturalmente, lo posto per l'idea, non per l'eleganza della scrittura del codice, che purtroppo sarà sempre procedurale.
Ultima modifica effettuata da Carlo il 09/05/2018 alle 18:20
In allegato il programma in C#.
Ho ampliato quello che avevo già scritto, manca ancora la validazione degli input.
P.s. testato poco, è per vedere in pratica l'idea, che ho descritto sopra.
Nuova versione in C# (la collocazione dei nuovi buttons è un po' casuale).
Ho implementato il salvataggio, non ho usato niente di preconfezionato, salvo 3 file .txt, nella cartella dell'applicazione, uno per ogni matrice di controllo.
Manca ancora la validazione degli input, la scelta del nome del file (per creare + convertitori personalizzati).
Magari si potrebbero aggiungere dei tastini tipo: [Conv UK], [Conv USA], [Scientifico], [Meccanica], [Astronomia], ecc, e tutto gestibile dall'utente.
Manca un tastino [Reset]
Manca anche un po' di uso per scovare i bug.
1) se si carica un files con N Unità, poi si aggiungono altre unità, e si ricarica il vecchio file che ha meno unità, senza prima salvare, si ha un errore.
E altre cose che mi direte voi.