https://foro.gambas-es.org/viewtopic.php?f=4&t=1102&p=6278#p6278
-----------------------------------
fabianfv
Martes, 16 Noviembre 2010, 21:16

Re: Crear Una Clase Formulario Personalizada
-----------------------------------
[quote]
Creo que no han comprendido lo que deseo, no solo la manipulación de datos.  Yo quiero, por ejemplo, agregar una propiedad al formulario que me sirva para guardar el nombre de la tabla maestra asociada al mismo, esto con el fin de crear rutinas genéricas, para el manejo de datos.
[/quote]
Sí, está entendido lo que preguntas. Pero tus conocimientos previos son inadecuados y no te permitirán interpretar directamente los conceptos de la POO.

[quote]
Ejemplo (no se si esto funcione, no manejo bien el Gambas).
[code linenumbers=false syntax=gambas]
'Rutina para buscar un dato
dim lcTabla as String
dim lcQuery as String

lcTabla = Me.cTablaPrincipal    'Propiedad del formulario que guarda el nombre de la tabla maestra
lcQuery = "Select * from " & lcTabla
miControldeDatos.query = lcQuery
[/code]
[/quote]
Ese código tendría un acoplamiento menor que si introdujeras partes específicas de la consulta SQL, pero de todos modos no es recomendable hacerlo así. Desde la perspectiva de la POO tu formulario no tiene por qué contener código SQL. Debes usar el formulario únicamente para la presentación de datos y la interacción con el usuario como explicitó Shordi. Esto responde al [b]Principio de responsabilidad única[/b] que obviamente indica que una clase debe tener una única responsabilidad: es decir, debe cumplir sólo con una tarea manteniendo un mismo nivel de abstracción.

[quote]
Reconozco que le falta la cláusula Where (la cual estaria almacenada en otra propiedad del formulario). Observen que esta busqueda funcionaria sin ningún tipo de cambio en todo formulario que se incluyera si dependiera de la clase form.
[/quote]
El formulario debería tener propiedades o métodos que permitan establecer los datos que debe presentar, esos atributos del formulario deben ser de tipos básicos String, Integer, etc. Debe ser responsabilidad de otro objeto "pasar" al formulario los datos que se deben presentar.

Por ejemplo, el formulario podría tener un método "MostrarDireccion" con esta implementacion:

[code linenumbers=false syntax=gambas]
PUBLIC SUB MostrarDireccion(direccion AS String)
  txtDireccion.Text = direccion
END
[/code]

Pero es responsabilidad de otro objeto enviar al formulario el mensaje:

[code linenumbers=false syntax=gambas]
  FMain.MostrarDireccion("MessiBalonDeOro 2009, Barcelona, España")
[/code]
Y puede ser responsabilidad de este mismo objeto o de otro obtener el dato "Direccion" (eso depende del diseño).

[quote]
Eso creo que es a lo que se refiere la parte de reutilización de la orientación a objetos. 
[/quote]
No. La POO fomenta la reutilización a través del encapsulamiento, la agregación, la herencia y el polimorfismo. Si no conoces estos conceptos, entonces debes aprender POO/DOO.

Sobre estas cosas estoy escribiendo en el libro [url=http://comoprogramarcongambas.blogspot.com]Cómo programar con Gambas, pero recién empiezo a volcar contenidos allí por lo que aún está muy incompleto. Podrías consultar esos conceptos en la Wikipedia, luego intentar aplicarlos en Gambas y preguntar las dudas que te vayan surgiendo.

Saludos.


