Preguntas sobre POO en MQL5 - página 56

 
Aleksey Mavrin:

Ya me has dicho tantas veces que soy un tonto y que no entiendo nada, que estoy orgulloso de mi compostura, que no te he mandado un merecido polvo)

Básicamente - una clase anidada hace que los métodos públicos de los campos privados sean opcionales, esa es la violación de la encapsulación que estás escribiendo. ¿Algún otro argumento?

Demuestras tu estupidez de forma tan constante que prefiero enviarte allí merecidamente.

Una clase anidada no hace lo que tú escribes sobre ella. Y la tarea del patrón Guardián puede ser resuelta sin una clase anidada y métodos públicos innecesarios.

Te lo recuerdo: aquí tienes un ejemplo con una clase anidada y métodos públicos.

 
Dmitry Fedoseev:

Demuestras tu estupidez de forma tan constante que prefiero enviarte allí merecidamente.

Una clase anidada no hace lo que se escribe sobre ella. Y el problema del patrón Guardián puede resolverse sin una clase anidada y sin métodos públicos innecesarios.

Vamos a ver quién va al final))

¿Qué no hace una clase anidada?

Has escrito que "la encapsulación se rompe porque se crean métodos públicos para campos privados".

Una clase anidada tiene acceso a los campos privados sin necesidad de crear métodos públicos.

s.s. Eres un habitual de aquí a juzgar por la clasificación. Pero hay que aprender a comunicar y dialogar. Pero no necesitas eso en tu vida.

 
Aleksey Mavrin:

Vamos a resolver quién va al final).

¿Qué no hace la clase anidada?

Has escrito que "la encapsulación se rompe porque se crean métodos públicos para campos privados".

Una clase anidada tiene acceso a los campos privados sin necesidad de crear métodos públicos.

s.s. Eres un habitual de aquí a juzgar por la clasificación. Pero hay que aprender a comunicar y dialogar. Pero no lo necesitas en la vida.

Permítanme recordar: aquí hay un ejemplo con una clase anidada y métodos públicos (es decir, la clase anidada no ayudó a deshacerse de la necesidad de crear métodos públicos en absoluto).

La clase anidada es sólo una cuestión de visibilidad de la clase, no de la visibilidad del objeto. La clase anidada, simplemente, no permite crear un objeto de esta clase, fuera de la clase en la que se describe. Por lo tanto, tendrás que irte.

 
Aleksey Mavrin:

Exactamente, la estructura correcta. Para ello, conviene considerar todas las variantes posibles de esta misma estructura, analizar sus pros y sus contras en una tarea determinada (teniendo en cuenta los requisitos de extensibilidad y mantenimiento, etc.) y elegir la mejor.

Y los patrones notorios en sí mismos (sean lo que sean exactamente) ni siquiera son una variante de la estructura aquí, sino sólo un punto de referencia para el cerebro. Es como "Si el problema se ajusta a la descripción del problema del patrón X, significa que se puede resolver aplicando el patrón X", pero también se puede resolver de un montón de otras maneras.

Y en general, esos 27 patrones básicos nacieron como una especie de pista para los programadores sobre problemas típicos de cómo resolverlos siguiendo los principios de la POO. Si no hay que seguir los principios, como hace Dmitry con las estructuras, no se necesitan patrones.

Gracias, buen post

Eres diferente al resto del panel ;)

 
Dmitry Fedoseev:

Permíteme recordarte: aquí hay un ejemplo con una clase anidada y métodos públicos (es decir, la clase anidada no ayudó a deshacerse de la necesidad de crear métodos públicos en absoluto).

Una clase anidada es sólo una cuestión de visibilidad de la clase, no de la visibilidad del objeto. La clase anidada, simplemente , no permite crear un objeto de esta clase, fuera de la clase en la que se describe. Así que tienes que irte.

No )) la estupidez )) Una clase anidada tiene acceso a TODOS los campos PRIVADOS de la clase en la que está anidada. (¿No lo sabes? Pues no hay nada que hablar.

Y eso sin contar la tontería que has escrito de que hay que copiar todo el objeto para el Tiro). Resulta que... no le importará si no vuelve pronto))

 
Igor Makanu:

Gracias, buen post.

Eres diferente al resto de la discusión ;)

Igor, gracias también, y en una palabra amable) y que crea temas interesantes para la discusión mutua constructiva ;)

 
Aleksey Mavrin:

No )) es una tontería )) Una clase anidada tiene acceso a TODOS los campos PRIVADOS de la clase en la que está anidada. (¿No lo sabes? Pues no hay nada que hablar.

Y eso sin contar la tontería que has escrito de que hay que copiar todo el objeto para el Tiro). Resulta que... no le importará si no vuelve pronto))

¿Y cómo se llama una clase anidada?

No he escrito nada sobre Snapshot aquí en absoluto.

 
class C1{
   protected:
      int x;
      class C2{
         protected:
         public:
         C2(){
            x=1;
         }
      };      
   public:
};

¿Dónde está el acceso a x desde C2?

De nuevo, una clase anidada es sólo una cuestión de visibilidad de la clase para crear un objeto. Un objeto de la clase C2 sólo puede crearse dentro de la clase C1. Eso es todo. Esa es la única diferencia con respecto a escribir un tipo:

class C1{
   protected:
      int x;
   public:
};

class C2{
   protected:
   public:
   C2(){
      x=1;
   }
}; 


Pero, ¿seguro que llamas a otra cosa clase anidada? Díganos qué.

 
ahah )
 
TheXpert:
ahah )

¿Tú tampoco lo sabías?

Razón de la queja: