Preguntas sobre POO en MQL5 - página 51

 
Sergey Dzyublik:

1. Resulta que la estructura de datos en forma de árbol es toda del mal.
2. Pobre C++ donde class == private struct, qué hacer, probablemente deberíamos renunciar a las estructuras y a las clases.
3. Y así es: no hay patrones, no hay ordenación por punteros, no hay ahorro de memoria, especialmente para objetos grandes...
4. No debemos olvidar prohibir el uso de interfaces y funciones de plantilla, de lo contrario no entenderás con qué objeto estás trabajando, qué horror...

1. No, ¿por qué no? Si se trata de que los nodos del árbol (o de la lista enlazada) cambien su estado, es simplemente una cuestión de organizar el acceso a ese estado. En términos defuncionalidad del código, el usuario no debería tener acceso al estado de un nodo.Toda la iteración a través de los nodos debe hacerse accediendo al propio árbol: tree.NextNode(myNode) o tree.Parent(myNode), no myNode.NextNode() o myNode.Parent().

Es decir, el estado que se está cambiando no debe estar disponible públicamente.

2. Mira, tomé la estructura de Sharpe porque es imposible tomar una referencia/puntero a ella. Es decir, todo está bajo el control del compilador. Si no hay tal control, hay que prever un control personal, por ejemplo, mediante la denominación adecuada de las clases. Digámoslo así:

class MyClass_mut; // mutable

class MyClass_immut; // inmutable

3, 4. Te equivocas. Todo se puede implementar ) Sólo que no debes pensar que todos los datos del objeto se copian necesariamente a través de la pila. En el caso general un objeto contiene un puntero interno a los datos. Es como los punteros inteligentes. Sólo que en el caso de los objetos modificables, este puntero debe ser aún más inteligente)

 
Aleksey Mavrin:

Dmitry, te aseguro que yo también estaría encantado de reírme de ti, pues me encanta este negocio) pero en este caso has exagerado, incluso particularmente bien sonreído.

Es que estás muy confundido, un SHOT no es igual a una COPIA DE OBJETO, te lo he señalado.

Si no está claro, déjame explicarte con un ejemplo: tienes 1000 bytes de objeto, necesitas 200 para la instantánea, así que por qué copiar 800, especialmente si tienes muchos millones de instantáneas guardadas.

p/s/ Y en general. La gente no se da cuenta de que los patrones son sólo un ejemplo elemental de solución de un problema elemental TÍPICO. Y de hecho las tareas no son elementales, sino más complicadas. Y para resolver problemas reales los patrones son necesarios, pero a menudo no en forma de libro puro, sino adaptados a una tarea particular, posiblemente combinados entre sí, posiblemente con la adición de alguna improvisación, expresada a veces en una simplificación, si la tarea lo permite, o viceversa "ponderación" de la realización.

De nuevo, por qué necesitas encapsulación e interfaces - esto probablemente no se puede entender si tu coeficiente intelectual está por debajo de Wasserman, o si no has participado en proyectos reales, cuando diferentes partes del proyecto son cambiadas por diferentes personas simultáneamente, y no seguir los principios básicos de OOPD implica enormes costes en la captura de bugs. Realmente, por qué todo esto para la estampación de Asesores Expertos para el Mercado))

Confundes los algoritmos para resolver tareas de programación con los llamados, y hoy de moda, " patrones de diseño" relacionados exclusivamente con la POO. Y confundes muchas otras cosas, y lees sin atención. Un poco antes escribí: utiliza la estructura. Pero si has leído ese post y no he escrito sobre la función de copia de toda la clase, habrás llegado al punto de que somos adultos y no hay necesidad de hacer un trabajo extra con estructuras innecesarias cuando deberíamos hacer todo con madurez - sólo proporcionar la capacidad de copiar toda la clase.

 
Aleksey Mavrin:

...

De nuevo, por qué se necesita la encapsulación y las interfaces - esto es probablemente imposible de entender si tu coeficiente intelectual es inferior al de Wasserman, o si no has participado en proyectos reales, cuando diferentes partes de un proyecto son modificadas por diferentes personas al mismo tiempo, y el incumplimiento de los principios elementales de OOPD conlleva enormes costes en la captura de errores. Realmente, por qué todo esto para la estampación de Asesores Expertos para el mercado))

.

Sergey Dzyublik:

...
4. No debo olvidar prohibir el uso de interfaces y funciones de plantilla, de lo contrario no se entenderá con qué objeto se está trabajando, qué horror...

Alguna vez, en algún lugar, leer lo que son las interfaces y por qué son necesarias.

-

Oh, y esto... ¿En serio estás confundiendo la posibilidad de guardar todos o algunos campos de un objeto con la función de deshacer/rehacer? Hablemos de Photoshop, ya sabes cómo se hace.

-

¿Y quién de vosotros está todo chocolatado y me envía un correo electrónico?

-

¿Cuál es tu problema? ¿He hecho temblar los cimientos de tu fe en los Santos Patrones?

 
Un aficionado autodidacta que nunca ha visto nada más que mql, enseñando a los hombres a escribir programas, es divertido entrar y leer)
 

estaba revisando la estantería de aquí.

Gran hallazgo: "Introducción a la Inteligencia Artificial y a los Sistemas Expertos con ilustraciones en BASIC" 1987. Uno de los capítulos "El concepto de programación orientada a objetos".

Créeme, no ha cambiado nada...

 
Maxim Kuznetsov:

estaba revisando la estantería de aquí.

Gran hallazgo: "Introducción a la Inteligencia Artificial y a los Sistemas Expertos con ilustraciones en BASIC" 1987. Uno de los capítulos "El concepto de programación orientada a objetos".

Créeme, no ha cambiado nada...

Mucho ha cambiado, entonces no había una iglesia de devotos de los patrones de diseño sagrados. Y el club de las víctimas del c++ tampoco se había formado todavía por aquel entonces.

 
Dmitry Fedoseev:

Mucho ha cambiado, entonces no había una iglesia de devotos de los Santos Patrones de Diseño.

entonces no había una iglesia de adoradores del diseño. esto no existe ni siquiera ahora, puedes buscar en la runet, si el número de preguntas sobre patrones de diseño en la runet es muy pequeño, significa que no existe como masa, las preguntas "de libro" de los estudiantes no cuentan.

no tienen nada que leer, pero es útil cuando se quiere escalar un proyecto, en general, la estructura del programa es inicialmente correcta

 
Dmitry Fedoseev:

Muchas cosas han cambiado, no existía la Iglesia de los Santos Patrones del Diseño.

Los "patrones de diseño" no son más que un acuerdo para llamar a las mismas cosas que ocurren con frecuencia con los mismos nombres. Y por cierto, el término proviene de la arquitectura (en lo que se refiere a esculturas/puentes/portales).

A veces, cosas similares se resuelven con técnicas similares, no necesariamente siempre... Pero es útil ponerse de acuerdo sobre la similitud de las cosas y los métodos para entenderse.

Pero claro, hay quien dice "dale a un tonto un falo de cristal y lo romperá y se cortará".

 
Igor Makanu:

Esto no existe ni siquiera ahora, puedes buscar en la runeta, si el número de preguntas sobre patrones en la runeta es muy pequeño, entonces no existe como masa, las preguntas "de libro" de los estudiantes no cuentan

No hay nada que leer, pero es útil cuando se quiere escalar un proyecto.

No contienen nada. ¿Cuántos patrones ha estudiado?

 
Dmitry Fedoseev:

No hay nada incrustado en ellos. ¿Cuántos patrones ha estudiado?

¿Qué se entiende por "estudiado"?

si he leído las descripciones en varios foros, entonces tengo decenas de ellas

Si se aplica en MQL, entonces uno - la estrategia funciona, se escala, la refactorización es fácil - puedo tirar todas las cosas innecesarias para el probador para hacerlo más rápido, o ir directamente a una demo - es generalmente conveniente y práctico