Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Temas relacionados > Debates
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-03-2004
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
Cita:
Empezado por marto
Es algo muy largo de explicar en un foro
Sí supongo que explicar toda la teoría sería excesivo pero sería fantástico que expusieras algunas ideas (si lo deseas claro). Creo que todos nos beneficiaríamos enormemente.

// Saludos
Responder Con Cita
  #2  
Antiguo 03-03-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
Bueno, en lugar de pegaros un rollo patatero sobre mis divagaciones mentales sobre programación os pondré un ejemplo de cómo lo he hecho yo en un caso concreto.
Veamos, yo necesitaba representar empresas que eran clientes de la mia. La base de datos ya estaba diseñada (en Oracle) y tenía que respetar su estructura.
Evidentemente diseñé mi clase TEmpresa con todas sus propiedades y métodos. Esta clase (como todas las demas) no tiene acceso a la BD, si no que "ve" a un módulo de datos (DmFacturas) que es quien se encarga tanto de servirle los datos como de manipularlos.
Por otro lado cree una clase TListaEmpresas que era la que se encargaba de mostrar los conjuntos de empresas, por ejemplo en una pantalla de búsqueda. Esta clase tiene distintos métodos que son los que se encargan de efectuar las búsquedas:
CargaPorCodigo(Codigo: String), CargaPorNombre(Nombre: String)...
La clase TlistaEmpresas lanza una función en DmEmpresas que devuelve un TList con estructuras con los datos de las empresas. En estas estructuras solo se guardan los datos "propios" de la empresa, no aquellos vinculados (como podrían ser sus centros de trabajo o el nombre de sus empleados). Con cada item de la TLista iremos creando una TEmpresa i la guardaremos en una TObjectlist interna de TListaEmpresas (esta es la lista propiamente dicha).
Para cargar los datos en el grid de búsqueda tansolo tendremos que ir pidiendo los datos de cada posición de TListaEmpresa en un bucle. Además, podemos ir guardando en la propiedad Objects del Grid cada una de las TEmpresa que esté vinculada al registro, así, si el control permite ordenaciones (o si en lugar de un grid es un combo) no perderemos el vinculo al objeto.
Cuando el usuario eliga la empresa que quiere, la pantalla retorna el propio objeto de manera que la pantalla que llamó a la de de búsqueda tenga acceso a él y pueda mostrar el resto de datos o editarlos o lo que haga falta.
Para acabar solo remarcar dos aspectos que considero cruciales en este tipo de arquitecturas para evitar un desperdicio desmesurado de memoria.
En primer lugar, los objetos "grandes" que contienen apuntadores o incluso listas a otros objetos no tienen que instancirlos ni cargarlos en su constructor ya que muchas veces ni se consultarán sus datos ni se modificarán y estaremos cargando mucho la memoria y efectuando consultas a la BD innecesarias. Creo que lo mejor es instanciarlos en el metodo de lectura y destruirlos en el destructor. Por ejemplo, en el caso TEmpresa, supongamos que tenemos una propiedad Centros de tipo TListaCentros que apunta a una lista de TCentro's:
Código:
private
  FCentros: TListaCentros;
  ...
public
  property Centros: TListaCentros read GetCentros;
  .....
constructor TEmpresa.Create(AOwner: TComponent); 
begin
  inherited;
  ...
  FCentros := Nil;
end;

destructor Destroy; 
begin
  ...
  FCentros.Free;
  inherited;
end;

function GetCentros: TListaCentros;
begin
  if not Assigned(FListaCentros) then
  begin
	FlistaCentros := TListaCentros.Create(Self);
	FlistaCentros.Carga(//parametros de carga);   
  end;  
  Result := FlistaCentros;
end;
La otra cosa que considero indispensable es asegurarnos que, por ejemplo, por cada instancia de TEmpresa NO se cree una de TDmEmpresa ya que al cargar, por ejemplo, una lista 100 de empresas, ''crearemos 100 modulos de datos!!!

Bueno, me acabo de leer todo lo que escrito y creo que no se entiende nada, pero es que es que sobre este tema se escriben libros enteros. Por otra parte para explicar mejor el funcionamiento del ejemplo os tendría que pegar aquí todo el programa, y tampoco seria plan!
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 08-03-2004
JorgeBec JorgeBec is offline
Miembro
 
Registrado: jul 2003
Posts: 159
Poder: 24
JorgeBec Va por buen camino
Gracias, mil gracias por sus mensajes. Ni hablar, me hace mucha falta saber de programacion orientada a objetos, como lo comente anteriormente me muevo mejor en Ingeniería de Software. Propongo algo, alguien podria compartir algun ejemplo de un diagrama de clases y la implementacion de las mismas en codigo...??? y si alguien vio la liga del taller de UML que puse quisiera saber sus comentarios, sino aqui va de nuevo...

Taller de UML
Responder Con Cita
  #4  
Antiguo 08-03-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
Cita:
Empezado por JorgeBec
alguien podria compartir algun ejemplo de un diagrama de clases y la implementacion de las mismas en codigo...???
Yo no puedo hacer eso que me pides ya que mis diagramas y su código no son propiedad mía (una cosa es poner un ejemplito, y otra ponerlo todo).
De todas maneras, es un tema un poco complicado ya que este tipo de diagramas, cuando pertencen a sistemas reales acostumbran a ser grandes y complejos, así que no es tan sencillo como "compartirlos" para que los demas los sigan.
__________________
E pur si muove
Responder Con Cita
  #5  
Antiguo 08-03-2004
JorgeBec JorgeBec is offline
Miembro
 
Registrado: jul 2003
Posts: 159
Poder: 24
JorgeBec Va por buen camino
Tienes razon Marto, y a veces tambien la confidencialidad de los mismos influye entonces, cambio la pregunta, alguien sabe de alguna liga Ingles o español de un ejercicio que vaya de UML a Delphi???, ah y si alguien me puede pasar la liga del MVC, se los agradecere...
Responder Con Cita
  #6  
Antiguo 17-03-2004
JorgeBec JorgeBec is offline
Miembro
 
Registrado: jul 2003
Posts: 159
Poder: 24
JorgeBec Va por buen camino
Chequense el mensaje que puse en noticias "La solucion de UML a Delphi", creo que esto es lo que estaba buscando, y espero que les sirva a toda la comunidad...
Responder Con Cita
  #7  
Antiguo 17-03-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
Lo que comentas de Delphi 8 es interesante, pero tiene tres problemas:

1.- Es delphi 8, o sea que te obliga a tener esa versión de Delphi y a trabajar con .NET

2.- Si no me equivoco están disponibles solo en las versiones más caras y, créeme, son muy caras.

3.- Existen bastantes voces que ponen en duda la estabilidad, hoy por hoy de este sistema.

Si lo que quieres es aplicar OOP a Delphi como metodología de desarrollo lo puedes hacer a pelo. Tal y como te he dicho en este mismo hilo, en la revista sintesis en http://www,grupoalbor.com encontrarás una serie de artículos sobre el tema de mucho nível, con ejemplos y código fuente.
__________________
E pur si muove
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 07:03:38.


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