OOP vs programmazione procedurale - pagina 34

 
Andrei:

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.

 
Andrei:
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.

 
George Merts:

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.

Se avete mai scritto un algoritmo di calcolo leggermente complesso, avrete notato che ci sono sempre un sacco di variabili, che hanno bisogno di essere elaborate più volte in posti diversi e di 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....
 
George Merts:

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...
 
Andrei:
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.

 
George Merts:
Andrei è ancora più clinico di Peter o Sansanych, stai perdendo il tuo tempo
 
Andrei:
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!

 
Ihor Herasko:

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...

 
Maxim Kuznetsov:

una cosa del genere dimostra che sei stato tu che, purtroppo, non hai scritto quasi nulla :-(

un tale casino nel sistema!

Se solo tu potessi essere meno emotivo e riflessivo e più specifico nella tua discussione, non varresti molto. :)
 
Andrei:
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.