- Fundamentos de la programación orientada a objetos: Abstracción
- Fundamentos de la programación orientada a objetos: Encapsulación
- Fundamentos de la programación orientada a objetos: Herencia
- Fundamentos de la programación orientada a objetos: Polimorfismo
- Fundamentos de la programación orientada a objetos: Composición (diseño)
- Definición de clases
- Derechos de acceso
- Constructores: por defecto, paramétricos y de copia
- Destructores
- Autorreferencia: esto
- Herencia
- Creación dinámica de objetos: nuevo y suprimir
- Punteros
- Métodos virtuales (virtual y override)
- Miembros estáticos
- Tipos anidados, espacios de nombres y operador de contexto '::'
- Dividir definición y declaración de clase
- Clases abstractas e interfaces
- Sobrecarga de operadores
- Conversión de tipos de objeto: dynamic_cast y puntero void *
- Punteros, referencias y const
- Gestión de la herencia: final y delete
Fundamentos de la programación orientada a objetos: encapsulación
Para entender qué es la encapsulación, volvamos por un momento al mundo real. Cuando compramos un electrodoméstico, suele venir «precintado» y en garantía. Podemos utilizarlo en modo normal, pero el fabricante no nos anima a abrir la carcasa y empezar a «trastear». Por ejemplo, se pueden usar utilidades especiales para mejorar el rendimiento del procesador del ordenador, pero ello también nos priva de la garantía, ya que estas acciones pueden provocar el fallo del equipo.
Lo mismo ocurre con el desarrollo de las clases: no se debe permitir a nadie el acceso a la implementación interna, a fin de no perturbar la clase. Esto e lo que se denomina encapsulación, es decir, incluir todo lo importante en una cápsula. En MQL5, como en C++, hay 3 niveles de derechos de acceso. Por defecto, la organización de la clase es privada, es decir, oculta a todos sus usuarios. Sólo el código fuente de la propia clase tiene acceso al contenido.
Los usuarios de la clase también son programadores. Incluso si está escribiendo una clase para Ud. mismo, tiene sentido aprovecharse de las máximas restricciones para no romper accidentalmente la clase (al fin y al cabo, la gente tiende a cometer errores y olvidar las características de su propio código al cabo de un tiempo, y los programas tienen tendencia a crecer indefinidamente).
El segundo nivel de acceso permite a los «familiares» (más concretamente, a los herederos; volveremos sobre ellos en un par de párrafos) echar un vistazo dentro.
Por último, el tercer nivel de acceso que se puede elegir es el público. Está pensado específicamente para interfaces de programación externas que permiten utilizar objetos desde cualquier parte del programa para su propósito principal.
Cada método o campo tiene uno de los tres niveles de acceso, lo cual está determinado por el desarrollador de la clase.