Re: ¿Como Abrir (o Importar) Proyectos De VB6 A Gambas?
Ariel, intentaré orientarte un poco respecto de la programación orientada a objetos sirviéndome de tus conocimientos previos.
Una clase es una unidad de código, como un módulo, pero debe contener funciones y procedimientos que en conjunto provean una característica, una funcionalidad en particular. La misma clase debe contener las variables que deban usar esas funciones y procedimientos.
Una rutina (función o procedimiento) encapsula código y datos (las variables locales) que se puede usar desde otras partes de un programa por medio de su firma (a veces llamada signatura, que no es más que el nombre de la rutina y sus parámetros). Entonces, la firma de una rutina es una interfaz entre el código que encapsula y el resto del programa. De forma análoga, una clase encapsula métodos (procedimientos y funciones) y datos (variables).
Una clase encapsula sus datos, para tratar de evitar efectos colaterales no deseados y es por ello que no existe la palabra clave "Global" en
gambas. Generalmente, la manipulación de los datos de una clase se permite únicamente a través de métodos denominados "de acceso" (a veces llamados getters y setters).
Un ejemplo:
Debido a que la clase no contiene (porque no existen en
gambas) variables globales, no es posible hacer esto:
'Otra parte del programa
$Edad = 32
Sino que es necesario crear un objeto Persona (es decir una instancia de la clase Persona).
...
unaPersona AS NEW Persona()
unaPersona.Nombre = "Pobrecito"
unaPersona.Apellido = "Hablador"
unaPersona.setEdad(32)
NEW Persona(), crea la instancia, es decir, el objeto unaPersona asignándole espacio en memoria y copiando las variables y métodos de la clase "Persona". De modo que si se crearan otros objetos a partir de la clase "Persona" serían diferentes unos de otros. Esto se denomina "Identidad", es decir que cada objeto es único y perfectamente identificable por medio de la variable que se usa como referencia (puntero al espacio de memoria asignado al objeto). En el ejemplo, la referencia es la variable "unaPersona".
En la clase persona las variables Nombre y Apellido son públicas por ello se les puede asignar un valor, una vez que se creo el objeto "unaPersona". Esto hace que sea muy improbable modificar Nombre y Apellido de una manera que produzca efectos secundarios ya que fue necesario crear explícitamente una instancia de "Persona" previamente. Pero además, la clase persona sólo sirve para un único propósito, entonces es difícil que se produzcan efectos secundarios no deseados por usar sus variables públicas para diferentes propósitos, como solía suceder cuando en un programa se usaba una misma variable global con distintos propósitos en partes diferentes del programa.
No obstante, hay un nivel de protección adicional. La variable $Edad es privada, es decir que su ámbito se limita a un único objeto (cada instancia de "Persona" tiene su propia $Edad) y su manipulación sólo puede hacerse a través de setEdad() y getEdad(), esto nos da la oportunidad de hacer validaciones o cualquier otra cosa que necesitemos cuando se establezca un valor a $Edad o cuando se lea su valor actual.
Así como la firma de una rutina es su interfaz de comunicación con el resto del programa que la contiene, los métodos y variables públicos conforman la interfaz de una clase (y por extensión de cada objeto de esa clase).
El encapsulamiento exige la existencia de una interfaz para que los objetos se puedan comunicar con otros objetos (el resto del programa). Esto permite que cada clase oculte su implementación, algo que es muy importante porque permite cambiar sus implementaciones sin que ello afecte a otros objetos o partes del programa que las usan (o mejor dicho que usan instancias de esas clases), siempre y cuando no se modifique la interfaz (es decir no se cambien los nombres y tipos de datos de sus variables públicas y las firmas de sus métodos públicos).
Por si no quedó claro las clases son las unidades mínimas de programa, en base a las cuales se modularizan los programas en la POO.
Bueno, creo que como introducción es suficiente. De todos modos es importante revisar estos conceptos utilizando la terminología propia de la POO (atributos, métodos, paso de mensajes) y también deberías ver los conceptos de acoplamiento, cohesión, composición y herencia como mínimo.
Por cualquier duda, ya sabes dónde preguntar.