Programacion 3 capas , OOP

160 views
Skip to first unread message

micky khan

unread,
Jul 18, 2023, 6:21:36 PM7/18/23
to publice...@googlegroups.com

Dres.
Podrían por favor compartir algún ejemplo en 3 capas, objetos y lo que ello conlleva(OOP).
Quiero empezar un nuevo proyecto y quisiera usar este tipo de programación más ordenada.

Y como se usa en cabecera - cliente.


Gracias....

--
  <_>
 (o o)
 (  °  )
<>-<>
Micky Khan

Mailtrack Remitente notificado con
Mailtrack
18/07/23, 17:16:04

Ricardo Soldini

unread,
Jul 18, 2023, 8:27:38 PM7/18/23
to Comunidad de Visual Foxpro en Español

Víctor Hugo Espínola Domínguez

unread,
Jul 18, 2023, 9:26:27 PM7/18/23
to publice...@googlegroups.com

Miguel Antúnez

unread,
Jul 19, 2023, 8:52:04 AM7/19/23
to publice...@googlegroups.com
Hola micky, en este canal te puede dar una ayuda.




--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAHWw4fp%3Dx58stk2S4vycai6jKeP08rK-OOej%2BakRKOzOekM02Q%40mail.gmail.com.


--
Miguel Angel Antúnez Camones
mant...@gmail.com

Victor Espina

unread,
Jul 19, 2023, 11:13:55 AM7/19/23
to Comunidad de Visual Foxpro en Español
Una cosa que debes entender primero es que OOP no es sinonimo de 3-tiers (3 capas).  De hecho, tu podrias perfectamente implementar un sistema de 3 capas sin usar OOP y tambien programar un sistema completo usando OOP y con solo 1 capa.

OOP es un paradigma de programacion que utiliza clases y objetos para representar elementos de software e interactuar con ellos, en contraposicion al paradigma de la programacion procedimental donde tu programas solo acciones que pueden ser invocadas en un momento dado pero que no almacenan informacion de estado (a diferencia de OOP donde eso si puede suceder).

La programacion en 3 capas o n-tier (porque no necesariamente tienen que ser 3) se refiere a una tecnica en donde una app se separa en dos o mas capas "funcionales" que trabajan (normalmente) de forma desacoplada e independientes una de la otra.     Por ejemplo, en una APP de escritorio tipica tu tienes codigo que maneja la interfaz visual (formularios, reportes, etc),  codigo que realiza las operaciones propias de la app (por ejemplo, calcular la nomina, validar datos de entrada, generar data para reportes, etc) y luego tienes codigo que maneja el almacenamiento y recuperacion de datos, todo metido dentro de una misma app.  

La programacion en 3 capas lo que te dices es:  separa las funciones en componentes separados:

a) Capa de presentacion:  donde solo manejas todo lo relativo a presentar formularios, menus, interaccion del usuario con la pantalla, reportes, etc.  Este es tu programa "principal" y el componente con el que interactuaria el usuario directamente.

b) Capa de negocios: aqui tienes todo el codigo que implica "inteligencia de negocios": validaciones, operaciones de transformacion de datos,  obtencion y preparacion de datos para reportes, etc.   Basicamente esta capa funciona como intermediario entre la capa de presentacion (la interrfaz visual) y la capa de datos.   Esta capa se puede implementar de muchas formas, siendo las mas tipicas un DLL ActiveX, un servicio TCP/IP o un servicio Web (via HTTP requests, bien sea SOAP o REST).

c) Capa de datos o almacenamiento:  aqui es donde tiene el codigo que permite almacenar y recuperar datos.  Tener una capa separada de datos te permite ciertos beneficios, como por ejemplo, no depender de un motor especifico de BD o realizar ciertas operaciones antes y/o despues de una operacion de acceso a datos.  Al igual que en el caso anterior, esto puede ser implementado de distintas formas.   En mi caso, por ejemplo, suelo utilizar stored procedures como una "capa de datos" entre mi app y el SQL Server, pues esto me da la ventaja muchas veces de implementar cambios sin tener que recompilar mi capa de negocios.  Entonces, mis apps nunca hacen INSERT, UPDATE o SELECT directamente sobre la BD sino que en su lugar invocan un SP para cualquier operacion de datos necesaria.   Es mas trabajo (pues debes programar y mantener los SPs) pero las ventajas que me ha dado con el tiempo hacen que valga 100% la pena el esfuerzo extra.


Cuando trabajas con aplicaciones tradicionales o "fat client",  a nivel personal generalmente utilizo solo 2 capas:  mi app (que maneja solo la interfaz visual) y la capa de negocios-datos implementada en forma de Stored Procedures.  Sin embargo, no es una regla escrita en piedra y muchas veces, sobre todo en procesos de larga ejecucion, traslado parte de las funciones de negocios a la capa de presentacion porque SQL Server no maneja muy bien los stored procedures que tardan mucho en ejecutarse.  En estos casos aprovecho todas las bondades que ofrece VFP para el procesamiento de datos.

Lo mismo pasa cuando trabajo con aplicaciones web.  En este caso la misma tecnologia web te obliga a tener al menos 2 capas:  la de presentacion (en forma de tu HTML  / JS / CSS que ejecuta en el browser) y la de negocios/datos (en la forma de un web service SOAP o REST).  En mi caso, tipicamente añado una tercera capa de datos en forma de Stored Procedures.

Saludos


Victor Espina

Victor Espina

unread,
Jul 19, 2023, 11:20:01 AM7/19/23
to Comunidad de Visual Foxpro en Español
Olvide mencionar esto:  que ventajas me da la programacion en n-capas?

Bueno, eso depende del contexto y alcance de la app, pero las dos mas obvias e importantes serian:

1) Independencia:  puedes modificar un componente especifico sin tener que recompilar toda la app
2) Reusabilidad: puedes compartir componentes entre distintas apps

Por ejemplo, hace algunos años un cliente me contrato para hacer una app para tablet que les permitiera controlar el estado de unas camaras de congelamiento.  La app se realizo en forma de una app hibrida (una app que corre en el dispositivo como si fuese una app nativa pero que internamente funciona como una web app) y se comunicaba con una capa de negocios/datos implementada en la forma de un servicio web tipo REST hecha con .NET Core.

Unos meses despues me pidieron que reprogramara una app antigua que tenian en Windows Mobile para que pudiera ejecutar en dispositivos android.   Para esto se creo una PWA (Progressive Web App) que ejecutaba desde un webserver pero que se conectaba con EL MISMO servidor REST que se creo para la app de las camaras de congelamiento,  permitiendome reutilizar funciones comunes como la autenticacion de usuario, consulta de maestros, etc.

Saludos

Victor Espina

AZOK

unread,
Jul 19, 2023, 6:24:53 PM7/19/23
to publice...@googlegroups.com, Victor Espina

Victor

Se agradece la explicación, muy clara y entendible

Saludos

El 19/07/23 a las 9:13, Victor Espina escribió:
--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages