Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2009
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Dudas sobre el diseño en 3 capas

Querido delphinarios quisiera solcitar su ayuda en lo siguiente.

A modo de poder aprender la oop es que me he dispuesto un ejemplo practico :
Suponiendo un sitema para una ferreteria he tomado solo lo que se refiere a la codificacion de productos
que la dispongo como SuperFamilia-Familia-Subfamilia-Producto.-

por ejemplo
Ferreteria---------------------------------------->Superfamilia
Electricidad ------------------------------------->Familia
Transformadores------------------------------>subfamilia
transformador electrico--------------->Producto



Desarrollar una aplicacion que maneje codigos usando como fuente de datos access.

la estructura de codigo es : Super Familia Familia SubFamilia Producto

Luego ya con esto creo las tablas correspondientes en access.-
Por su parte en delphi construyo lo siguiente.

3 unidades :
1.- llamada Dato -> (Data Module) contiene las conecciones
2.- llamada registro -> contiene los record de las estructuras de las tablas
3.- llamada clase -> contiene la definicion de clases




UNIDAD DATO :
esta unidad contiene las conceciones a la base de datos y
su coneccion con las tablas

PRIMERA DUDA
Es en esta unidad donde defino los procedimiento y funsiones de
acceso a las tablas
Ejemplo :


Cita:
> procedure Tdata.abreTabla;
> begin
> AdSpFamilia.Connection:=Coneccion;
> AdSpFamilia.TableName :='SUPERFAMILIA';
> AdSpFamilia.Open;
> end;

> Function Tdata.GetDato(AId: integer):boolean;
> var
> registro:boolean;
> begin
> with adSpFamilia do
> begin
> result:=Locate('sp_idsp',Aid,[]);
> end;
> end;


UNIDAD REGISTRO :
es aqui donde definio los diferente registros de las tablas ejemplo:
Type
_spFamilia = Record
sp_idsp :integer;
sp_desc :string;
end;
Type
_fmFamilia = Record
fm_idfm :integer;
fm_idsp :integer;
fm_desc :string;
end;
Type
_sbFmailia = Record
sbf_idsb :integer;
sbf_idfm :integer;
sbf_desc :string;
end;
Type
_pdtoProducto = Record
pdto_idpdto :integer;
pdto_idsb :integer;
pdto_desc :string;
pdto_marca :string;
pdto_tipo :string;
pdto_um :string;
pdto_stmi :integer;
pdto_stma :integer;
pdto_modelo :string;
pdto_serie :string;
end;

UNIDAD CLASES
Es aqui son donde defino las diferentes clases ejemplo:
type
Tsuperfamilia = class
private
data:Tdata;
Fdt :_spFamilia;
function carga:string;
public
constructor Create;
procedure actualzar;
property spid :integer read Fdt.sp_idsp write Fdt.sp_idsp;
property spesc :string read carga write Fdt.sp_desc;
end;


UNIDAD UNIT1
Unidad de forms

Ejemplo

procedure TForm1.FormCreate(Sender: TObject);
begin
spfamilia:=Tsuperfamilia.Create;
end;

Bueno mi gran duda es que si quisiera heredar si esta bien que en la unidad Dato Especifique los accesos a los datos o bien lo defino en cada clase para luego poder heredar...


Espero se comprenda esto
De antemando agradesco sus comentarios....
Saludos
Marco
Chile

Última edición por cacu fecha: 01-04-2009 a las 15:24:10.
Responder Con Cita
  #2  
Antiguo 31-03-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
Amigo Cacu...

Intenta nombrar mejor tus post, pues no se entiende que quieres, y utiliza las etiquetas de código Delphi, date una vuelta por la Guía de Estilo.

Saludos...
__________________
Herr Heins Faust
Responder Con Cita
  #3  
Antiguo 31-03-2009
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Oop

OOP-> Programacion Orientada a Obejtos
que es lo que intento hacer construyendo mis propias clases
Eso........
Responder Con Cita
  #4  
Antiguo 31-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Al igual que el compañero Faust, te recomiendo que leas la guía de estilo y utilices las etiquetas adecuadas. Supongo que te das cuenta que el código que pones no está indentado.

Además, te recomiendo intentar ser más claro en la exposición:

Cita:
Empezado por cacu
Desarrollar una aplicacion que menje codigos usando como fuente de datos access.
¿Menje? ¿No será maneje? Y, ¿qué codigos? ¿Qué significa manejar códigos?

Luego pones una imagen que puede verse muy bien en tu disco duro, pero hay que subirla a algún lugar (como imageshack.us) para que los demás nos enteremos.

Mencionas tres unidades y pones cuatro. ¿Qué significa conceciones (sic) a la base de datos?

En fin, si tomas más tiempo y dedicación a la formulación de tu pregunta, seguro alguien podrá responderte.

// Saludos
Responder Con Cita
  #5  
Antiguo 31-03-2009
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Oop

Bien roman agradesco tu observacion....el tema planteado no se trata de un error ni nada que se paresca solo de experiencia en esta tecnica.......que yo no domino bien......y que no se necista mayor esfuerso por cuanto solo quien tenga esa experiencia podra darme un consejo....


Gracias
Responder Con Cita
  #6  
Antiguo 01-04-2009
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Opp

Primero que todo el nombre de este post tubo que haber sido "Dudas sobre el diseño en 3 capas".

Este modelo yo particularmete lo he visto de la siguiente manera de la forma de poder encapsular la progamacion y de paso aprender ha trabajar con clases
Responder Con Cita
  #7  
Antiguo 04-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Question

Cita:
Empezado por cacu Ver Mensaje
PRIMERA DUDA
Es en esta unidad donde defino los procedimiento y funsiones de
acceso a las tablas....
Pero cual es tu duda?
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 15-04-2009
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
asilar codigo

He pensado que le mejor titulo para este post es el de Aislar el Codigo.

Con el fin de poder aprender acerca del desarrollo de clases ..es que me propuse un ejemplo.

Este consistio en crear una simple aplicacion que pudiese manejar informacion relativa a una ferreteria que en este caso seria los codigos de producto.

Es asi como separe este codigo en 4 categorias..
Superfamilia-Familia-Subfamilia-Producto.

Con este enfoque creo mi base de datos conteniendo 4 tablas relacionas entre si.

Bien ahora es el turno de la aplicacion :

Dispongo de un DataModule en el cual agrego un componente de coneccion a la base de datos.

Habitualmente lo que hago es :
1.- poner el codigo necesario para verificar que exista la base de datos en el lugar que se supone de bede estar, una ves hecho esto(verdad) , pongo el codigo necesario para descubrir la ruta y abrir la coneccion, todo esto en el datamodule.

2.-en el form de la aplicacion pongo el codigo nesesario para trabajar con los datos ingresados y almacenarlos en las tablas que correspondan.

El tema esta en que estoy tratando de hacer que todo el codigo sea aislado del datamodule como de la aplicacion, de la siguiente manera

DataModule --->unidad de clase---->aplicacion

Donde en el
- DataModule : solo estan los componetes
- Unidad de Clase : pongo el codigo nesesario para la verificacion de la existencia de la base de datos , abrirla y ademas pongo el codigo necesario para almacenar los datos.
Todo esto creando clases .-
- Unidad del form : pongo el codigo de validacion de los datos...


Bueno de acuerdo a esto la duda seria :

En este sentido las clase ...deebrian solo servir para la validacion de las validacion de los datos.-

Deebria poner en el data modulo el codigo del manejo de los datos y solo usar las clases para el manejo de estas?????

Espero quese me pueda entender lo que intento hacer...si alguien a trabajado de esta menera le solicito que pudiesen orientarme...

Agradesco sus comentarios
Saludos
Responder Con Cita
  #9  
Antiguo 15-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Cita:
Bueno de acuerdo a esto la duda seria :

En este sentido las clase ...deebrian solo servir para la validacion de las validacion de los datos.-

Deebria poner en el data modulo el codigo del manejo de los datos y solo usar las clases para el manejo de estas?????

Espero quese me pueda entender lo que intento hacer...si alguien a trabajado de esta menera le solicito que pudiesen orientarme...

Agradesco sus comentarios
Saludos
Bueno actualmente estoy desarrollando un Sistema de Informacion que trabaja de acuerdo a las especificaciones de UML,el cual todavia estoy en desarrollo;Al empezar dicho sistema tuve muchas dudas de como implementarlo,ya que habia elegido a delphi para el desarrollo,aunque pude hacerlo en java,pero ya habia comenzado con delphi y tuve que seguir,al pasar algunos dias me di cuenta que la forma de trabajar en delphi no es muy adecuada a UML,como lo son otros lenguajes de programacion, y a veces en este foro tuve que postear muchas veces algunas dudas que tenia e incluso llegue hasta pelearme con algunos por aqui(mentira solo algunos debates)para poder entender algunas cosas.
Sobre tus dudas te diria que sigas lo que dice UML acerca de un sistema; pero para resumirte un poco UML nos dice que un sistema debe tener 3 capas ;al hacer un digrama de colaboracion de algun caso de uso te daras cuenta que la primera capa es la capa de datos,la segunda capa de negocio, la tercera capa de presentacion. Acontinuacionte explico algo de cada una:
*La capa de datos son clases encargadas de gestionar la conexion,insercion,actualizacion,etc de los datos con la base de datos.
Generalmente por cada tabla de tu base de dato tendras al menos una clase que se encargue de gestionar lo anteriomente dicho.generalmente estas clases se llaman "clase entidad".
*La capa de Negocio son clases tambien que utilizan objetos de las clases entidades para ejecutar cualquier accion hacia la base de datos,en mi caso es aqui lo que hago las validaciones antes de hacer alguna accion que pueda cambiar mi base de datos.En esta capa esta el negocio de la aplicacion y es como una intermediaria.Generalmente se llaman en UML "Clase Control".
*La capa de presentacion son clases interfas ,es decir son tus clases de tu formulario, donde el usuario se comunica con el sistema, estas clases utilizan a las clases controles.Ten en cuenta que la capa anterior es decir capa de negocio debe ser independiente de esta capa de presentacion en otras palabras por ejemplo no tienes que tener un metodo por ejemplo que llame o utilize digamos a un Edit especifico de algun formulario,pero tu diras ¿Por que?,pues por que que pasaria si por alguna razon en algun tiempo cambias de interfaz,tendrias problemas,en otras palabras es como construir un auto ,la capa de datos seria el motor del auto,la capa de negocio seria las piezas externas al motor como cables,enchufes,etc y la capa de presentacion seria la carcaza del auto, es decir la lata que cubre el auto de tal forma que si se quiere cambiar de caparazon por asi decirlo,tranquilamente se hace ya que el negocio no dependeria de la capa de presentacion.
Para profundizar mas podrias leer algun libro de UML 2.0.el tema es amplio.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #10  
Antiguo 15-04-2009
Avatar de cacu
cacu cacu is offline
Miembro
 
Registrado: dic 2005
Ubicación: Chile
Posts: 132
Poder: 19
cacu Va por buen camino
Asilamiento de codigo

Que puedo decir....Gracias....muy interesante tema..megustaria debatir mas estos temas........

Nuebamente Gracias...
Saludos
Responder Con Cita
  #11  
Antiguo 15-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por cacu Ver Mensaje
Que puedo decir....Gracias....muy interesante tema..megustaria debatir mas estos temas........

Nuebamente Gracias...
Saludos
Asi es amigo cacu, a mi tambien me llamo mucho la atencion esta forma de trabajo ,en realidad lo aprendi en la Universidad con una docente mujer muy buena,la materia se llamaba "Sistema de Informacion" donde en el semestre debes presentar para poder aprobar,un Sistema de Informacion completo,ten en cuenta que un sistema de informacion no solo es el SoftWare sino la documentacion, hacer los diferentes diagramas de UML por cada Caso de Uso.Es muy cansador pero se aprende..
Lo que pasa que en delphi puedes hacerlo todo desde el formulario,comunicarte ala base de dato con algun componente directo desde el formulario,en realidad esta orientado a esta forma de trabajo,es decir no se sigue el consejo de UML, y aveces nos acostumbramos a trabajar asi;pero cuando haces un sistema grande te das cuenta que debes trabajar de una forma ordenada.Por cuestiones de mantenimiento y estandarizacion.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda sobre OOP y capas AzidRain OOP 4 04-08-2007 00:25:35
sobre aplicacion de 3 capas yoyo Providers 4 03-08-2007 18:08:12
Dudas sobre Locate silviodp Conexión con bases de datos 8 28-04-2004 14:59:26
dudas sobre el DataModule Giniromero Conexión con bases de datos 8 12-12-2003 13:33:13
Dudas sobre IP acertij022 Internet 0 20-05-2003 21:04:29


La franja horaria es GMT +2. Ahora son las 01:48:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi