![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Questo è il punto - se si isola tutto da tutto, sarà molto più difficile trattare tale codice, per non parlare dell'impossibilità di eseguire adeguatamente il debug del codice quando è necessario conoscere i valori attuali di tutte le variabili necessarie...
Se scrivete una classe che usa l'interfaccia del processore commerciale - non dovreste conoscere le variabili correnti all'interno di questa interfaccia. Debug della parte REMOTE.
Se avete bisogno di fare il debug del processore commerciale stesso - di nuovo, dovreste fare il debug, e all'interno di questa classe non dovreste conoscere alcuna variabile, diciamo, del generatore di segnali di ingresso.
Questa è l'essenza dell'incapsulamento - in ogni luogo lavoriamo solo con quello che ci serve e non interferiamo con altri luoghi.
Non si tratta del basso livello, ma della logica di ciò che vi scorre e di ciò che si trasforma in ogni momento possibile, compresa la conoscenza di tutte le variabili interne... Senza capire tutta questa logica ridondante, il senso di usare questo codice per un non autore scompare completamente...
Ciao...
Ne capisci molto di come funziona Metatrader? Conosce qualcuna delle variabili di MT? Ma questo non vi impedisce di usarlo.
Questo è ciò che dovreste fare all'interno del vostro programma. Ci sono diversi blocchi - interagiscono usando interfacce predefinite e non interferiscono tra loro.
Se scrivete una classe che usa l'interfaccia del processore commerciale - non dovreste conoscere le variabili correnti all'interno di questa interfaccia. Debug della parte REMOTE.
Se avete bisogno di fare il debug del processore commerciale stesso - di nuovo, dovreste fare il debug, e all'interno di questa classe - non dovreste conoscere nessuna variabile, diciamo, del generatore di segnali di ingresso.
Questa è l'essenza dell'incapsulamento - in ogni luogo particolare lavoriamo solo con ciò di cui abbiamo bisogno e non interferiamo con altri luoghi.
Ciao...
Ne capisci molto di come funziona Metatrader? Conosce qualcuna delle variabili di MT? Ma questo non vi impedisce di usarlo.
Dovreste farlo all'interno del vostro programma. Ci sono un certo numero di blocchi - interagiscono usando interfacce predefinite, e non interferiscono tra loro.
Attenzione, non stiamo parlando di variabili interne di MT, stiamo parlando di variabili interne dell'oggetto che avete isolato, impedendo la possibilità di leggere i loro valori durante il debug e la scrittura del codice...
Se le variabili interne dell'oggetto sono necessarie altrove, non si tratta più di variabili interne dell'oggetto, bisogna pensare alla logica di costruzione di quell'oggetto (molto probabilmente per dividerlo di nuovo in oggetti più piccoli). Come ultima risorsa, se è veramente necessario e non c'è altro modo, un metodo Get ad accesso pubblico è fatto nell'interfaccia.
Se avete mai scritto un algoritmo di calcolo leggermente complesso, avrete visto che ci sono sempre un sacco di variabili, che è necessario gestire più volte in posti diversi e poter controllare i loro valori in diverse parti del programma in qualsiasi momento... Come si possa aggiungere a questa situazione l'incapsulamento di tutto il contenuto interno dell'oggetto dal mondo esterno non è chiaro....
una cosa del genere dimostra che sei stato tu che, purtroppo, non hai scritto quasi nulla :-(
Che confusione nel sistema!
Se le variabili oggetto interne sono necessarie altrove, non sono più variabili oggetto interne. Come ultima risorsa, se è veramente necessario e non c'è altro modo, un metodo Get accessibile pubblicamente è fatto nell'interfaccia.
Sì... non si può fare a meno di chiedersi cosa diavolo ci sia dentro :) L'idea è di avere un linguaggio di programmazione adeguato, per facilitare il debug e la scrittura del codice con gesti minimi, e qui abbiamo una situazione completamente opposta...
una cosa del genere dimostra che sei stato tu che, purtroppo, non hai scritto quasi nulla :-(
un tale casino nel sistema!
Se avete mai scritto un algoritmo di calcolo leggermente complesso, avrete notato che ci sono sempre molte variabili che devono essere elaborate più volte in posti diversi e dovete essere in grado di controllare i loro valori in diverse parti del programma in qualsiasi momento... Come si possa aggiungere a questa situazione l'incapsulamento di tutto il contenuto interno di un oggetto dal mondo esterno non è chiaro....
Salve.
Se un blocco richiede dati da un altro blocco - viene dichiarata un'interfaccia virtuale appropriata per fornire questa capacità. Qui, sopra, la funzionalità del processore commerciale - è richiesta in diverse parti del programma, nel generatore di ingressi, nel controllore di trailing e di uscita, nel controllore di stop trade. Ognuno di questi blocchi di programma - può fare riferimento all'oggetto Expert Advisor, e ottenere l'interfaccia del processore commerciale. Allo stesso tempo - nessuno ha accesso diretto a questo processore - solo attraverso un'interfaccia predefinita.
È lo stesso in altri posti - se alcuni dati sono richiesti - allora questo blocco deve fornire l'interfaccia appropriata.
Il punto è che qualsiasi punto del programma ha accesso solo alle variabili di cui ha bisogno, e non ha accesso a nessun'altra variabile.