OOP, modelli e macro in mql5, sottigliezze e usi - pagina 7

 
Ilya Malev:

Secondo me, non è poi così male. Non ci sono così tante interfacce di base in C#, secondo me (non sono un esperto di C#), che i loro metodi non possano essere ridotti a una superclasse di base, e poi ereditati da chiunque abbia bisogno di cosa

Cosa intendi per "ereditare chi ha bisogno di cosa"? Per ereditare non tutta la classe ma una parte di essa? ) Non conosco una tale funzione
 
Alexey Navoykov:
Cosa intendi per "ereditare ciò che ti serve"? Ereditare non l'intera classe ma una parte di essa? ) Non ho familiarità con tale funzionalità.

No, intendevo dire di definire molte funzioni virtuali e di sovraccaricarle nei successori, se necessario.

 
Ilya Malev:

No, intendevo dire di definire molte funzioni virtuali e di sovraccaricarle nei successori, se necessario.

È un caos totale e una mancanza di controllo. Le interfacce definiscono metodi astratti che devono essere implementati, non "per necessità". E con il vostro approccio, se dimenticate di sovraccaricare un metodo da qualche parte, il programma compilerà come se non fosse successo nulla, ma invece del metodo necessario sarà chiamato dummy.
 
Alexey Navoykov:
Le interfacce definiscono metodi astratti che devono essere implementati, non "per necessità". Questo assicura l'implementazione di questi metodi all'oggetto. E con il tuo approccio, se ti dimentichi di sovraccaricare un metodo da qualche parte, il programma verrà compilato come se non fosse successo nulla, ma verrà chiamato il programma invece del metodo necessario.

Non un vuoto, ma un'eccezione "non implementata". In C#, è dappertutto.

 
Alexey Navoykov:
... Se vi dimenticate di sovraccaricare un metodo da qualche parte, il programma verrà compilato come se non fosse successo nulla, ma invece del metodo richiesto ne verrà chiamato uno vuoto. È normale...

A proposito, è così che funziona in MQL ;(.

 
Ilya Malev:

Non un vuoto, ma un'eccezione "non implementata". Anche in C#, sembra che ci sia un po' di confusione.

Non è questo il punto, voi proponete di catturare i bug a runtime, mentre questi bug possono (e dovrebbero) essere catturati a tempo di compilazione.
 
Vasiliy Sokolov:

A proposito, è così che funziona in MQL ;(

Intendi la loro libreria standard? )
 
Alexey Navoykov:
Non è questo il punto: tu proponi di catturare i bug a runtime, mentre questi bug possono (e dovrebbero) essere catturati a tempo di compilazione.

Penso che sia meglio che costruire strutture come template <,,,,,,,> per le classi. Ti si romperà il cervello prima di finire di costruire un tale "sistema di classi".

 
Ilya Malev:

Penso che sia meglio che costruire strutture come template <,,,,,,,> per le classi. Ti si romperà il cervello prima di finire di costruire un tale "sistema di classi".

Preferisco scervellarmi con il compilatore, ma sarò sicuro che il mio programma funzioni correttamente e che venga chiamato un metodo funzionante piuttosto che qualcos'altro.
 
Alexey Navoykov:
Preferisco scervellarmi con il compilatore, ma sarò sicuro che il mio programma funzioni correttamente e che venga chiamato un metodo funzionante, non qualcosa di assurdo.

Se il tutto ha una classe base semplice, che appare per lo più ovunque, e poi i cast dinamici vanno, potrebbe funzionare).