3.5Componentes, modelos y reutilización
Lo esencial en 30 segundos
- Modelos y ventanas internas eliminan la duplicación de pantallas: una modificación del modelo se propaga a todas las ventanas que heredan de él.
- El componente empaqueta un conjunto coherente (ventanas, procedimientos, clases, informes) para reutilizarlo en otros proyectos, con corrección centralizada.
- Versionar, documentar y mantener una interfaz estable: un componente que cambia sin cesar fragiliza todos los proyectos usuarios.
Mini-caso hilado — Yacine mutualiza las pantallas de su gestión
Yacine debe entregar una segunda aplicación al grupo: la gestión de usuarios y derechos. Empieza por sus pantallas de venta: cinco fichas comparten la misma banda, el mismo logotipo y los mismos botones. Crea un modelo de ventana FEN_FicheModele e hace heredar las cinco fichas: una modificación de la banda se propaga a todas. El bloque de entrada de dirección, repetido en el pedido y la factura, se convierte en una ventana interna FI_AdresseLivraison. Para la gestión de usuarios, empaqueta un componente COMP_Utilisateurs con una interfaz estable, documentada y versionada. Anota el reflejo: modelo para la apariencia, ventana interna para un bloque, componente para un módulo compartido.
Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto de 48 h de la sección 3.5.
1. Modelos, ventanas internas, supercampos
La reutilización es la marca del desarrollador experimentado: no reescribir lo que ya existe. El modelo de ventana (o de informe) define una presentación común: banda, logotipo, botones estándar. Las ventanas que heredan de él retoman esos elementos, y una modificación del modelo se propaga a todas. La ventana interna es un bloque reutilizable insertado en otras ventanas: un selector de cliente o una entrada de dirección escrito una vez, usado en todas partes. El supercampo agrupa campos con su comportamiento y se deposita como un campo único.
2. El componente, el mecanismo más potente
El componente empaqueta un conjunto de elementos —ventanas, procedimientos, clases, informes— para reutilizarlo en otros proyectos. Yacine desarrolla una vez un módulo de gestión de usuarios o de conexión a un servicio, y después lo integra en varias aplicaciones. El componente expone una interfaz visible desde el exterior y oculta su funcionamiento interno. Los beneficios son la capitalización del saber hacer, la corrección centralizada y la homogeneidad entre aplicaciones.
3. Versiones e interfaz estable
Un componente compartido exige disciplina: gestionar las versiones para saber qué proyecto usa qué versión, documentar su uso y diseñar una interfaz estable. Si la interfaz cambia constantemente, todos los proyectos usuarios deben retomarse. Antes de desarrollar una pieza, Yacine comprueba también si ya existe en la biblioteca PC SOFT o en la comunidad. El buen reflejo: reutilizar, pero sin romper los proyectos que dependen del módulo.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Del modelo al componente
Yacine reutiliza en tres niveles en su gestión de material eléctrico:
// Modele FEN_FicheModele : bandeau, logo, boutons Valider/Annuler
// Les fenetres FEN_Produit, FEN_Client, FEN_Fournisseur en heritent.
// Fenetre interne FI_AdresseLivraison inseree dans FEN_Commande
// et FEN_Facture : un seul comportement, aucun copier-coller.
// Composant COMP_Utilisateurs, partage avec une autre application
COMP_Utilisateurs.OuvreFiche(UtilisateurConnecte)
SI COMP_Utilisateurs.EstAutorise("FACTURATION") ALORS
Ouvre(FEN_Facture)
FIN
Lectura: el modelo gestiona la apariencia, la ventana interna el bloque, el componente el módulo completo.
Lección: la interfaz del componente permanece estable para no romper los proyectos usuarios.
Vocabulario de la sección
- Modelo de ventana
- Ventana tipo que define una presentación común de la que heredan las ventanas de la aplicación.
Ejemplo sencillo: FEN_FicheModele lleva la banda y los botones de las cinco fichas de Yacine.
Lo que no es: una ventana recreada a mano para cada pantalla.
Reflejo: apariencia común → un modelo.
- Ventana interna
- Ventana reutilizable insertada en otras ventanas, con su comportamiento.
Ejemplo sencillo: FI_AdresseLivraison se inserta en el pedido y la factura.
Lo que no es: un bloque recopiado en cada pantalla con sus tratamientos.
Reflejo: bloque repetido → ventana interna.
- Supercampo
- Conjunto de campos agrupados y reutilizables con su comportamiento, que se puede depositar como un campo.
Ejemplo sencillo: Yacine agrupa los campos de búsqueda de cliente en un supercampo.
Lo que no es: campos separados vueltos a depositar en cada pantalla.
Reflejo: campos agrupados reutilizables → supercampo.
- Componente
- Conjunto de elementos empaquetado para reutilizarse en otros proyectos, con una interfaz.
Ejemplo sencillo: COMP_Utilisateurs gestiona los derechos en varias aplicaciones del grupo.
Lo que no es: una colección de procedimientos limitada a un solo proyecto.
Reflejo: compartir entre proyectos → un componente.
- Interfaz estable
- Parte visible de un componente, que debe seguir siendo previsible para los proyectos usuarios.
Ejemplo sencillo: Yacine documenta y versiona los métodos públicos de COMP_Utilisateurs.
Lo que no es: una interfaz modificada en cada entrega sin aviso.
Reflejo: proteger los proyectos usuarios → interfaz estable.
En la práctica — En la práctica — Reutilizar en lugar de duplicar
- Cree un modelo de ventana con la presentación común y haga heredar sus pantallas, como Yacine.
- Transforme un bloque repetido (entrada de dirección, búsqueda de cliente) en ventana interna reutilizable.
- Para un módulo destinado a varios proyectos, cree un componente con una interfaz clara y documentada.
- Versione y documente el componente; compruebe si la pieza ya existe en la biblioteca PC SOFT.
Guion paso a paso — mutualizar como Yacine (4 min)
1) Localice la presentación común de varias pantallas y cree un modelo de ventana. 2) Haga heredar las pantallas existentes y verifique que la modificación se propaga. 3) Aísle un bloque repetido en una ventana interna con su comportamiento. 4) Para un módulo compartido entre proyectos, defina una interfaz estable y documentada. 5) Versione el componente y anote qué proyecto usa qué versión.
Mantenga este reflejo: reutilizar sin romper; una interfaz de componente se cambia con precaución.
Modelo para copiar y pegar — la ficha de reutilización de Yacine
Modele : presentation commune heritee (bandeau, boutons)
Fenetre interne: bloc reutilisable insere (adresse, recherche)
Superchamp : champs groupes + comportement
Composant : module empaquete pour D'AUTRES projets
Vigilance : interface stable, documentation, versions
Cinco fichas idénticas
Yacine crea un modelo e hace heredar las fichas: la banda se modifica una sola vez.
Una dirección repetida
Yacine aísla la entrada de dirección en una ventana interna usada en el pedido y la factura.
Un módulo multiproyecto
Yacine empaqueta la gestión de usuarios en un componente versionado.
Una interfaz que cambia
Yacine documenta y estabiliza la interfaz del componente para no romper las demás aplicaciones.
✓ Buenas prácticas
- Modelo para la apariencia, ventana interna para un bloque.
- Componente para un módulo compartido entre varios proyectos.
- Siempre versionar y documentar.
✗ Errores frecuentes
- Recrear la misma banda en cada ventana.
- Copiar un bloque en lugar de usar una ventana interna.
- Cambiar la interfaz de un componente sin precaución.
Puntos clave
- Los modelos difunden una presentación común heredada.
- Las ventanas internas y los supercampos reutilizan bloques con su comportamiento.
- El componente empaqueta un módulo para otros proyectos.
- Versionar, documentar y mantener una interfaz estable.
Reto 48 h — aplícalo mañana
Como Yacine, localice la presentación común de varias ventanas y cree un modelo del que hereden. Transforme un bloque repetido (dirección, búsqueda de cliente) en ventana interna. Por último, identifique un módulo destinado a varios proyectos y describa en una frase su interfaz estable, su documentación y su política de versión.
- Sé cuándo usar modelo, ventana interna o supercampo.
- Distingo un componente de una colección de procedimientos.
- Comprendo la importancia de las versiones y de una interfaz estable.
Preguntas frecuentes
¿Cuándo crear un componente en lugar de una simple colección de procedimientos?
Cree un componente cuando el módulo deba compartirse entre varios proyectos y forme un conjunto coherente con ventanas, informes o clases. Una colección de procedimientos basta para organizar el código dentro de un mismo proyecto. El componente aporta la corrección centralizada y la encapsulación, pero impone diseñar una interfaz, documentar, versionar y probar.
¿Cómo garantizar la coherencia visual sin rehacerlo todo a mano?
Combinando tres niveles: la carta gráfica para los estilos globales, los modelos de ventanas para la estructura común —banda, logotipo, botones estándar— y las ventanas internas para los bloques repetidos. Una modificación del modelo se propaga a todas las ventanas que heredan de él. La regla es centralizar la apariencia en lugar de estilizar cada campo individualmente.
¿Cuándo es más pertinente un componente que una colección de procedimientos?