Discussione sull’articolo "MQL per "Duri di Comprendonio": Come Progettare e Costruire Classi di Oggetti" - pagina 5

 
joo:

Tuttavia, non vedo alcun vantaggio nell'utilizzo dell'OOP. ....

Quindi non ne avete bisogno per i vostri compiti.
 
DC2008:
Quindi non ne avete bisogno per la vostra applicazione.

O forse sì, ma non ne sono a conoscenza? :)

Aiutatemi a capirlo.

 
joo:

... Aiutatemi a capire questo.

Prova a riscrivere gli algoritmi genetici in stile oop. Stanno solo pregando di andarci.

Inoltre, sei troppo pigro per prendere il codice degli altri, ma non il tuo. Iniziate e avrete successo, e allo stesso tempo confrontate le prestazioni di entrambe le varianti. Secondo le mie statistiche approssimative, oop rallenta il lavoro dei programmi.

 
joo:

Tuttavia, non vedo alcun vantaggio nell'uso dell'OOP. Forse mi impedisce di capire che tipo di bestie sono queste "classi".

Quello che hai detto può essere formalizzato come funzioni separate. O non tutte? Non sto facendo lo schizzinoso, vi prego di capirmi bene: sto cercando di capire i principi dell'OOP.

Vorrei vedere su esempi concreti e semplici la differenza nella velocità di lavoro di codici adeguatamente formattati (con e senza OOP) e i vantaggi dell'OOP in termini di semplicità di organizzazione del progetto.

È strano sentire domande sull'OOP da uno sviluppatore con le tue competenze ;-). Stai scherzando. Naturalmente si può fare a meno dell'OOP e implementare tutto con le funzioni. Ma è semplicemente meno conveniente dal punto di vista umano - per lo sviluppo e la manutenzione. L'OOP non aumenta la velocità del programma stesso.

Se continuiamo lo stesso esempio con le classi di strategia, supponiamo che ci sia un frammento di codice che deve cercare le posizioni aperte in base alle loro strategie. Se lo implementiamo in funzioni, otterremo qualcosa di simile:

foreach Position in Positions[]
 if StrategyType(Position) == N1 TrailTypeN1(Position);
 else if StrategyType(Position) == N2 TrailTypeN2(Position);
 ...

E se utilizziamo l'OOP:

foreach Position in Positions[]
 Position.Trail;

Ci sono dei vantaggi: il record è compatto e chiaro, in caso di aggiunta di nuovi tipi di strategie questa parte del codice non dovrà essere modificata, non c'è bisogno di passare (potenzialmente molti) parametri o dichiarare al loro posto variabili globali, array, che possono essere inavvertitamente rovinati da altre sezioni di codice....

In generale, sembrano esserci molti libri su questo argomento. Oppure l'essenza della domanda è diversa?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
DC2008:

Provate a riscrivere gli algoritmi genetici in stile oop. Stanno solo implorando di andarci.

Dopo aver scritto l'articolo, l'amministrazione mi ha suggerito/chiesto di riscriverlo in stile OOP. Ho ammesso onestamente di non averne la minima idea. Mi è stato concesso il permesso di pubblicarlo così com'è.

Lo sto provando. Non funziona ancora. Quando lo rifarò, il codice con OOP e la documentazione saranno aggiunti all'articolo.

DC2008:

Iniziate e avrete successo, e allo stesso tempo confrontate le prestazioni di entrambe le varianti. Secondo le mie statistiche approssimative, l'OOP rallenta i programmi.

Bene, lei conferma la mia opinione che il codice con OOP è meno reattivo. Nella mia esperienza di collaborazione con sviluppatori che conoscono l'OOP, le prestazioni diminuiscono in modo significativo, fino a due volte (abbiamo confrontato il mio codice e quello del mio partner che eseguiva lo stesso compito).

marketeer:

È strano sentire domande sull'OOP da uno sviluppatore con le vostre competenze ;-). Stai scherzando.

Purtroppo non sto scherzando. Sì, sono diventato grande come un mammut. Ora sto cercando di liberarmi degli atavismi - lana.

marketeer:

Naturalmente, si può fare a meno dell'OOP e implementare tutto tramite funzioni. Ma è semplicemente meno conveniente dal punto di vista umano - per lo sviluppo e la manutenzione.

Sì, voglio "flessibilità". Ecco perché sono interessato.

marketeer:

..............

In generale, ci sono molti libri su questo argomento. O l'essenza della domanda è in un altro modo?

A quanto pare, non cogliere alcune sottigliezze. :(

Oh, bene. Supererò questo piccolo muro sulla mia strada. :)

 

Ma dai... stai scherzando?

Questa non è una guida "Dummies" per un nuovo programmatore che sta cercando di imparare l'OOP... è un mucchio di stupidaggini. Si taglia e si incolla un po' di codice da un'applicazione che è troppo oscura per essere utile a un programmatore nuovo o principiante.

 
Ho iniziato a fare ricerche sulle classi. Mi sono imbattuto in questo articolo. Sì, sì, ho bisogno di inserire un'interfaccia così semplice nel mio Expert Advisor. Ho voluto dare un'occhiata ai file dell'autore, ma non c'è nulla... :-( più precisamente nella cartella masterwindows-doc.zip, c'è un file di aiuto vuoto MasterWindows-Doc.chm Peccato! Forse tutto ciò che è menzionato in questo articolo è già obsoleto?
 
Aleksandr Brown:
Ho iniziato a fare ricerche sulle classi. Mi sono imbattuto in questo articolo. Sì, sì, ho bisogno di inserire un'interfaccia così semplice nel mio Expert Advisor. Ho voluto dare un'occhiata ai file dell'autore, ma non c'è nulla... :-( più precisamente nella cartella masterwindows-doc.zip, c'è un file di aiuto vuoto MasterWindows-Doc.chm Peccato! Forse tutto ciò che è menzionato in questo articolo è già obsoleto?

Controllato. Il file è a posto.

Lo incollo qui per sicurezza.

File:
 
Sergey Pavlov:

Controllato. Il file è a posto.

Lo inserisco qui per sicurezza.

Grazie mille per la sua considerazione. Ammetto di essere stato un po' stupido. Un paio di giorni fa ho installato un nuovo sistema operativo e i servizi di sicurezza hanno bloccato tutti i file scaricati da Internet. Più precisamente, i programmi con l'aiuto dei quali vengono aperti venivano avviati, ma il contenuto del file scaricato non veniva visualizzato. Ora è tutto a posto e anche il file allegato all'articolo si apre normalmente. Tutto molto bello e chiaro, grazie.
 
Quando provo a compilare MasterWindows, si lamenta "'CMasterWindowsEXE::Run' - cannot call protected member function ClassMasterWindows.mqh" alla riga "WinEXE.Run()". Potete dirmi come risolvere il problema?