OOP vs. programación procedimental - página 34

 
Andrei:

Esa es la cuestión: si se aísla todo de todo, será mucho más difícil tratar con ese código, por no mencionar la imposibilidad de depurar adecuadamente el código cuando se necesitan conocer los valores actuales de todas las variables necesarias...

Si usted escribe una clase, que utiliza la interfaz del procesador de comercio - no debe conocer las variables actuales dentro de esta interfaz. Depure la parte REMOTA.

Si necesita depurar el propio procesador de comercio - de nuevo, debe depurarlo, y dentro de esta clase no debe conocer ninguna variable, digamos, del generador de señales de entrada.

Esa es la esencia de la encapsulación: en cada lugar trabajamos sólo con lo que necesitamos y no interferimos con otros lugares.

 
Andrei:
No se trata del nivel bajo, se trata de la lógica de lo que fluye allí y en lo que se convierte en cada momento posible, incluso conociendo todas las variables internas... Sin entender toda esta lógica redundante, el sentido de utilizar este código para un no autor desaparece por completo...

Hola...

¿Entiendes mucho sobre el funcionamiento de Metatrader? ¿Conoces alguna de las variables de MT? Pero eso no te impide utilizarlo.

Esto es lo que debe hacer dentro de su programa. Hay una serie de bloques que interactúan mediante interfaces predefinidas y no interfieren entre sí.

 
George Merts:

Si usted escribe una clase, que utiliza la interfaz del procesador de comercio - no debe conocer las variables actuales dentro de esta interfaz. Depure la parte REMOTA.

Si necesita depurar el propio procesador comercial -de nuevo, debería depurarlo, y dentro de esta clase- no debería conocer ninguna variable, por ejemplo, del generador de señales de entrada.

Esa es la esencia de la encapsulación: en cada lugar concreto trabajamos sólo con lo que necesitamos y no interferimos con otros lugares.

Si alguna vez has escrito un algoritmo computacional un poco complejo, te habrás dado cuenta de que siempre hay un montón de variables, que necesitan ser procesadas varias veces en diferentes lugares y poder controlar sus valores en diferentes partes del programa en cualquier momento... Cómo se puede añadir a esta situación la encapsulación de todo el contenido interno del objeto desde el mundo externo no está claro....
 
George Merts:

Hola...

¿Entiendes mucho sobre el funcionamiento de Metatrader? ¿Conoces alguna de las variables de MT? Pero eso no te impide utilizarlo.

Debe hacerlo dentro de su programa. Hay una serie de bloques que interactúan mediante interfaces predefinidas y no interfieren entre sí.

Cuidado, no estamos hablando de variables internas de la MT, estamos hablando de variables internas del objeto, que has aislado, impidiendo la posibilidad de leer sus valores mientras depuras y escribes código...
 
Andrei:
Cuidado, no estamos hablando de variables internas de la MT, estamos hablando de variables internas del objeto que has aislado, impidiendo la posibilidad de leer sus valores mientras depuras y escribes código...

Si las variables internas del objeto se necesitan en otro lugar, ya no se trata de variables internas del objeto, hay que pensar en la lógica de construcción de ese objeto (lo más probable es que se vuelva a dividir en objetos más pequeños). Como último recurso, si es realmente necesario y no hay otra forma, se realiza un método Get de acceso público en la interfaz.

 
George Merts:
Andrei es aún más clínico que Peter o Sansanych, estás perdiendo el tiempo
 
Andrei:
Si alguna vez has escrito un algoritmo computacional un poco complejo, habrás visto que siempre hay muchas variables, que tienes que manejar varias veces en diferentes lugares y poder controlar sus valores en diferentes partes del programa en cualquier momento... Cómo se puede añadir a esta situación la encapsulación de todo el contenido interno del objeto desde el mundo externo no está claro....

tal cosa demuestra que fue usted quien, por desgracia, no escribió casi nada :-(

¡Qué desorden en el sistema!

 
Ihor Herasko:

Si las variables internas del objeto se necesitan en otro lugar, dejan de ser variables internas del objeto. Como último recurso, si es realmente necesario y no hay otra forma, se realiza un método Get de acceso público en la interfaz.

Sí... no puedes evitar preguntarte qué demonios contiene :) La idea es tener un lenguaje de programación adecuado, para facilitar la depuración y la escritura de código con los mínimos gestos, y aquí tenemos una situación completamente opuesta...

 
Maxim Kuznetsov:

tal cosa demuestra que fue usted quien, por desgracia, no escribió casi nada :-(

¡un gran lío en el sistema!

Si pudieras ser menos emocional y reflexivo y más específico en tu discusión, no valdrías mucho. :)
 
Andrei:
Si alguna vez has escrito un algoritmo computacional un poco complejo, te habrás dado cuenta de que siempre hay muchas variables que deben ser procesadas varias veces en diferentes lugares y debes poder controlar sus valores en diferentes partes del programa en cualquier momento... Cómo se puede añadir a esta situación la encapsulación de todo el contenido interno del objeto desde el mundo externo no está claro....

Hola.

Si un bloque necesita datos de otro bloque, se declara una interfaz virtual adecuada para proporcionar esta capacidad. Aquí, por encima, la funcionalidad del procesador de comercio - se requiere en diferentes partes del programa, en el generador de entradas, en el controlador de arrastre y salida, en el controlador de las operaciones de parada. Cada uno de estos bloques de programa - puede referirse al objeto Asesor Experto, y obtener la interfaz del procesador de operaciones. Al mismo tiempo, nadie tiene acceso directo a este procesador, sólo a través de una interfaz predefinida.

Lo mismo ocurre en otros lugares: si se necesitan algunos datos, este bloque debe proporcionar la interfaz adecuada.

La cuestión es que cualquier punto del programa sólo tiene acceso a las variables que necesita, y no tiene acceso a ninguna otra variable.

Razón de la queja: