Programación orientada a objeto avanzada con xHarbour (X)

8.4. El controlador.

Comentamos que el controlador principal puede (y debe: por comodidad, por claridad, por las posibilidades de tener controladores independientes y poder reutilizar código) de dividirse en controlador principal y controladores secundarios:

8.4.1. El controlador principal

  • Es el encargado de controlar el flujo de la aplicación.
  • Realizará las llamadas necesarias a los controladores secundarios.
Detalle del método que llama a conceptos

Detalle del método que llama a conceptos

Podemos ver en la imagen el método conceptoRun, llamado desde la opción correspondiente de la vista Menú. Aquí propongo una forma de cargar el controlador correspondiente, almacenando el objeto en la variable ctrConcepto con el objetivo de comprobar en la siguiente llamada si ya ha sido instanciada la clase correspondiente al controlador secundario (ConceptoCtr). En este momento:

  • Asignamos el controlador principal a la variable correspondiente del controlador secundario.
  • Ejecutamos el método showBrowse() del controlador secundario para que nos muestre el formulario que tiene un barra de menú con las opciones del ABM y el browse.
8.4.1. Cada controlador secundario
  • Comunican la capa del modelo de datos con la vista.
  • No deben contener nunca sentencias SQL o de cualquier otro motor de datos, siendo este cometido responsabilidad UNICA de la capa de persistencia.
  • No deben contener nunca código correspondiente a la vista (comportamiento de las columnas de un browse, por ejemplo).
  • Pueden hacer llamadas a otros controladores secundarios.
Siguiendo con la ejecución, desde el controlador principal hemos ejecutado el método que mostrará el browse de conceptos, veamos el código:
Llamada el browse desde el controlador secundario

Llamada el browse desde el controlador secundario

En la imagen podemos ver, además, los métodos new() (contructor de la clase) y setCtrPrincipal() (asignación del controlador principal a este controlador secundario).  Veamos que hace el método showBrowse(),

  • Comprobamos si ya se ha instanciado el browse ( se guardará en la variable brw).
  • En caso de haber sido instanciado, lo mostramos.
  • Si no, cargamos, desde la persistencia, la lista de conceptos (que es un objeto de la clase ArrayList que contiene referencias a objetos de la clase Concepto) y la guardamos en la variable listaConceptos.
  • Instanciamos la vista correspondiente y almacenamos el objeto en la variable brw.
  • Ponemos titulo al browse.
  • Asignamos este controlador a la vista (guadandolo en una variable mediante un método set).
  • Mediante el método toArray() de listaConceptos, asignamos los valores al browse (usamos un arraybrowse de Xailer). Veamos el código del método toArray() de la clase Concepto:
Detalle del método toArray de la clase Concepto

Detalle del método toArray de la clase Concepto

  • toArray devuelve un array que incluye referencias a los métodos set que devuelven valores de los datos del objeto y una referencia a sí mismo. Veremos para que sirve la referencia al propio objeto cuando estudiemos el código del método Edit() para modificar los datos.

Observando el código de la vista ConceptoBrw() podemos ver que las llamadas de los botones de la ToolBar llaman a métodos de este controlador.

En el próximo artículo veremos como funcionan los métodos del ABM.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: