Discusión sobre el artículo "MQL para "Dummies": Cómo Diseñar y Construir Clases de Objetos" - página 5

 
joo:

Aún así, no veo ninguna ventaja en usar POO. ....

Así que no la necesitas para tus tareas.
 
DC2008:
Así que no lo necesita para su aplicación.

¿O tal vez sí, pero yo no lo sé? :)

Ayúdame a averiguarlo.

 
joo:

... Ayúdame a resolver esto.

Intenta reescribir algoritmos genéticos en estilo oop. Están pidiendo a gritos ir allí.

Además, usted es demasiado perezoso para recoger el código de otras personas, pero no el suyo propio. Empieza y lo conseguirás, y al mismo tiempo compara el rendimiento de ambas variantes. Según mis escuetas estadísticas, oop ralentiza el trabajo de los programas.

 
joo:

Aún así, no veo ninguna ventaja en utilizar la programación orientada a objetos. Quizá me impide entender qué clase de bestias son esas "clases".

Lo que has dicho se puede formalizar como funciones separadas. ¿O no todas? No estoy siendo quisquilloso, por favor entiéndame correctamente - estoy tratando de entender los principios de la POO.

Me gustaría ver en ejemplos sencillos concretos la diferencia en la velocidad de trabajo de códigos formateados adecuadamente (con y sin POO) y las ventajas de la POO en términos de simplicidad de la organización del proyecto.

Es extraño escuchar preguntas sobre POO de un desarrollador con tus conocimientos ;-). Debe de ser una broma. Por supuesto, se puede prescindir de la programación orientada a objetos e implementarlo todo con funciones. Pero es simplemente menos conveniente desde el punto de vista humano - para desarrollar y mantener. La programación orientada a objetos no aumenta la velocidad del programa en sí.

Si continuamos el mismo ejemplo con las clases de estrategia, supongamos que hay un fragmento de código que debe rastrear las posiciones abiertas de acuerdo a sus estrategias. Si lo implementamos en funciones, obtendremos algo como esto:

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

Y si usamos OOP:

foreach Position in Positions[]
 Position.Trail;

Hay ventajas: el registro es compacto y claro, en caso de añadir nuevos tipos de estrategias esta parte del código no tendrá que ser cambiada, no hay necesidad de pasar (potencialmente muchos) parámetros o declarar en su lugar variables globales, arrays, que pueden ser inadvertidamente estropeados desde otras secciones de código....

En general, parece que hay un montón de libros sobre este tema. ¿O la esencia de la pregunta es diferente?

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

Intenta reescribir algoritmos genéticos al estilo oop. Se hacen de rogar.

Después de escribir el artículo, la administración me sugirió/pidió que lo reescribiera desde OOP. Honestamente admití que no tengo ni idea. Me dieron permiso para publicarlo tal cual.

Lo estoy probando. Todavía no funciona. Cuando lo rehaga, el código con POO y la documentación se añadirán al artículo.

DC2008:

Empieza y lo conseguirás, y al mismo tiempo compara el rendimiento de ambas variantes. Según mis escuetas estadísticas, la POO ralentiza los programas.

Bueno, confirmas mi opinión de que el código con OOP responde menos. En mi experiencia de trabajo conjunto con desarrolladores que conocen la POO, el rendimiento disminuye bastante - hasta dos veces (comparamos mi código y el de mi compañero realizando la misma tarea).

marketeer:

Es extraño escuchar preguntas sobre POO de un desarrollador con tus conocimientos ;-). Debe de ser una broma.

Desgraciadamente, no bromeo. Sí, he crecido hasta alcanzar el tamaño de un mamut. Ahora estoy tratando de deshacerme de atavismos - lana.

marketeer:

Por supuesto, se puede prescindir de la programación orientada a objetos e implementarlo todo mediante funciones. Pero es simplemente menos conveniente desde el punto de vista humano - para desarrollar y mantener.

Sí, quiero "flexibilidad". Por eso me interesa.

marketeer:

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

En general, hay un montón de libros sobre este tema. ¿O es la esencia de la pregunta de otra manera?

Al parecer, no capto algunas sutilezas. :(

Ah, bueno. Voy a superar este pequeño muro en mi camino. :)

 

Vamos... ¿estás de broma?

Esto no es una guía "Dummies" para un nuevo programador tratando de aprender OOP... es un montón de goobleygook. Cortas y pegas código de una aplicación que es demasiado oscura para ser útil a un programador nuevo o principiante.

 
Empecé a buscar clases. Me encontré con este artículo. Sí, sí, necesito insertar una interfaz tan simple en mi Asesor Experto. Quería mirar en los archivos del autor, pero no hay nada allí... :-( más precisamente en la carpeta masterwindows-doc.zip, hay un archivo de ayuda vacío MasterWindows-Doc.chm ¡Muy mal! ¿Tal vez todo lo mencionado en este artículo ya está desactualizado?
 
Aleksandr Brown:
Empecé a buscar clases. Me encontré con este artículo. Sí, sí, necesito insertar una interfaz tan simple en mi Asesor Experto. Quería mirar en los archivos del autor, pero no hay nada allí... :-( más precisamente en la carpeta masterwindows-doc.zip, hay un archivo de ayuda vacío MasterWindows-Doc.chm ¡Muy mal! ¿Tal vez todo lo mencionado en este artículo ya está desactualizado?

Comprobado. El archivo está bien.

Lo pego aquí por si acaso.

Archivos adjuntos:
 
Sergey Pavlov:

Comprobado. El archivo está bien.

Lo pondré aquí por si acaso.

Muchas gracias por su consideración. Lo admito, he sido un poco estúpido. Hace un par de días instalé un nuevo sistema operativo y los servicios de seguridad bloquearon todos los archivos descargados de Internet. Más concretamente, se iniciaban los programas con cuya ayuda se abrían, pero no se mostraba el contenido del archivo descargado. Ahora todo está configurado, y el archivo adjunto en el artículo también se abre normalmente. Todo muy bonito y claro, gracias.
 
Al intentar compilar MasterWindows, se queja "'CMasterWindowsEXE::Run' - cannot call protected member function ClassMasterWindows.mqh" en la línea "WinEXE.Run()". ¿Pueden decirme cómo combatirlo?