como desenvolver em modulos
Pessoal
gostaria de saber como e qual seria a forma mais indicada para mim poder estar desenvolvendo em modulos...
exemplo: terei um sistema com o modulo financeiro e o de cadastro
como o financeiro ficará muito grande e provavelmente o cadastro tb pois haverá diversos tipos de cadastro no sistema, ficará ruim se estiver tudo junto... haverá muita informação junta, muitos formularios...
a ideia não é dividir em executaveis, mais dividir o codigo, de forma que eles possam se comunicar entre si! o financeiro deverá comunicar com o cadastro para indicar um cliente... coisa do tipo...
alguem de uma luz ai!
valeu
gostaria de saber como e qual seria a forma mais indicada para mim poder estar desenvolvendo em modulos...
exemplo: terei um sistema com o modulo financeiro e o de cadastro
como o financeiro ficará muito grande e provavelmente o cadastro tb pois haverá diversos tipos de cadastro no sistema, ficará ruim se estiver tudo junto... haverá muita informação junta, muitos formularios...
a ideia não é dividir em executaveis, mais dividir o codigo, de forma que eles possam se comunicar entre si! o financeiro deverá comunicar com o cadastro para indicar um cliente... coisa do tipo...
alguem de uma luz ai!
valeu
Mrcdlf
Curtidas 0
Melhor post
Buosinet
09/11/2004
Você pode separar os componentes de acesso a dados e regras de negócio em vários Data Modules, separados por módulo, e colocar nos forms apenas os componentes específicos para a apresentação dos dados.
Mas, na minha opinião, já que você está começando a esboçar seu software, utilize UML para definí-lo. Caso não conheça, faça um curso, vale a pena, posso garantir. Fica tudo muito organizado no final.
Boa sorte,
Buosi.
Mas, na minha opinião, já que você está começando a esboçar seu software, utilize UML para definí-lo. Caso não conheça, faça um curso, vale a pena, posso garantir. Fica tudo muito organizado no final.
Boa sorte,
Buosi.
GOSTEI 1
Mais Respostas
Mrcdlf
09/11/2004
Você pode separar os componentes de acesso a dados e regras de negócio em vários Data Modules, separados por módulo, e colocar nos forms apenas os componentes específicos para a apresentação dos dados.
Mas, na minha opinião, já que você está começando a esboçar seu software, utilize UML para definí-lo. Caso não conheça, faça um curso, vale a pena, posso garantir. Fica tudo muito organizado no final.
Boa sorte,
Buosi.
eu já estou estudando UML
utilizo data modules
mais gostaria de separar mais o sistema... como disse fazer tipo modulos
gostaria de saber mesmo como posso separar os forms... para não ficar tudo junto!?
GOSTEI 0
Gurc
09/11/2004
Sistemas modularizados no Delphi podem ser construídos de algumas maneiras. As mais conhecidas são bibliotecas DLL e pacotes BPL.
Caso você queira módulos portáveis entre linguagens use as famosas DLL, senão, certamente o mais aconselhável são os pacotes BPL. Outras vantagens da modularização é que você pode ligá-los dinamicamente ao executável, carregar só os módulos necessários, dentre outras.
Na ClubeDelphi do mês passado (eu acho), saiu um artigo explicado bem o básico dessa técnica.
Se quiser saber mais sobre isso estamos a disposição.
Um Abraço,
Gustavo
Caso você queira módulos portáveis entre linguagens use as famosas DLL, senão, certamente o mais aconselhável são os pacotes BPL. Outras vantagens da modularização é que você pode ligá-los dinamicamente ao executável, carregar só os módulos necessários, dentre outras.
Na ClubeDelphi do mês passado (eu acho), saiu um artigo explicado bem o básico dessa técnica.
Se quiser saber mais sobre isso estamos a disposição.
Um Abraço,
Gustavo
GOSTEI 0
Michaell
09/11/2004
Caro gurc,
Qual seria a segurança de um pacote BPL com formulários? Afinal, todos os meus Forms estarão em um Servidor... Ótimo, isso não quer dizer que qualquer um que ´entenda´ ou tenha conhecimento de quais Forms eu tenho dentro do BPL poderia acessá-los e... tsc tsc ?!
[]´s
Qual seria a segurança de um pacote BPL com formulários? Afinal, todos os meus Forms estarão em um Servidor... Ótimo, isso não quer dizer que qualquer um que ´entenda´ ou tenha conhecimento de quais Forms eu tenho dentro do BPL poderia acessá-los e... tsc tsc ?!
[]´s
GOSTEI 0
Gurc
09/11/2004
Quem fará o carregamento dos Forms na aplicação é você, no seu código, mas os outros forms ainda terão acesso ao BPL, podendo carregar outros Forms e abrí-los sem problemas. Mas você vai ter mesmo esse problema? Não é você quem fará o código dos formulários no BPL? Nunca tive uma situação parecida, geralmente implemento meus sistemas de segurança apenas para os usuários do sistema e não para os Forms. Ah, de repente você está achando que o código no BPL é texto. Não, não, é código compilado. O BPL é uma DLL disfarçada.
Espero ter exclarecido melhor, agora.
Gustavo Royer Chaurais
Espero ter exclarecido melhor, agora.
Gustavo Royer Chaurais
GOSTEI 0
Michaell
09/11/2004
Quem fará o carregamento dos Forms na aplicação é você, no seu código, mas os outros forms ainda terão acesso ao BPL, podendo carregar outros Forms e abrí-los sem problemas. Mas você vai ter mesmo esse problema? Não é você quem fará o código dos formulários no BPL? Nunca tive uma situação parecida, geralmente implemento meus sistemas de segurança apenas para os usuários do sistema e não para os Forms. Ah, de repente você está achando que o código no BPL é texto. Não, não, é código compilado. O BPL é uma DLL disfarçada.
Espero ter exclarecido melhor, agora.
Gustavo Royer Chaurais
Colega,
BPL é uma extensão de um arquivo binário gerado pela compilação de packages (.DPK) do Delphi. Vale lembrar que, ao desenvolvermos aplicativos, pensemos bastante em segurança... OK?! Tanto os usuários do seu sistema, quanto os arquivos que compõem seu software devem estar em segurança... Sejam dll´s, bpl´s, exe´s...
[]´s
GOSTEI 0
Gurc
09/11/2004
[quote:45bb7295fc=´gurc´]Quem fará o carregamento dos Forms na aplicação é você, no seu código, mas os outros forms ainda terão acesso ao BPL, podendo carregar outros Forms e abrí-los sem problemas. Mas você vai ter mesmo esse problema? Não é você quem fará o código dos formulários no BPL? Nunca tive uma situação parecida, geralmente implemento meus sistemas de segurança apenas para os usuários do sistema e não para os Forms. Ah, de repente você está achando que o código no BPL é texto. Não, não, é código compilado. O BPL é uma DLL disfarçada.
Espero ter exclarecido melhor, agora.
Gustavo Royer Chaurais
Colega,
BPL é uma extensão de um arquivo binário gerado pela compilação de packages (.DPK) do Delphi. Vale lembrar que, ao desenvolvermos aplicativos, pensemos bastante em segurança... OK?! Tanto os usuários do seu sistema, quanto os arquivos que compõem seu software devem estar em segurança... Sejam dll´s, bpl´s, exe´s...
[]´s[/quote:45bb7295fc]
Certamente, devemos pensar sempre em segurança, mas temos modos de implementar segurança apenas no executável. Dependendo do tipo de projeto, como o de administração de prefeituras, ao qual estou incluido, podemos implementar as regras de ligação com o banco na aplicação principal. Deste modo, as classes implementadas nos pacotes não terão direito de alterar, inserir ou deletar dados. No máximo serão acessadas as telas pelos arquivos de recurso para visualização, o que não significaria problemas na quebra de segurança da aplicação. Tudo dependerá do nível de segurança requerido para aplicação. Acho que ficou melhor agora.
Gustavo Royer Chaurais
GOSTEI 0
Michaell
09/11/2004
Dependendo do tipo de projeto, como o de administração de prefeituras, ao qual estou incluido, podemos implementar as regras de ligação com o banco na aplicação principal. Deste modo, as classes implementadas nos pacotes não terão direito de alterar, inserir ou deletar dados.
Colega, começou a melhorar... Mas como funcionaria? Você poderia postar algum exemplo? Você tem suas classes nos formulários que estão nos arquivos .BPL que implementam as regras de negócio e na aplicação principal teria suas classes de persistência? Mais ou menos isso?
GOSTEI 0
Gurc
09/11/2004
Bom, na verdade exemplo eu não tenho. Só tenho o framework que desenvolvemos para a empresa, mas, não é muito ético passá-lo pela internet, se é que você me entende... :wink:
Vou tentar te dar alguns toques e vou ver se hoje à noite sobra um tempo pra fazer um exemplo.
- Crie um pacote e coloque uma unit dentro dele, pode ser um formulário;
- Não esqueça de colocar um RegisterClass([i:c3f703025f]ClasseDoFormNovo[/i:c3f703025f]) na seção [b:c3f703025f]initializaton[/b:c3f703025f] dessa unit;
- Compile e salve o pacote;
- Na mesma pasta crie uma aplicação;
- Crie nela um método que será chamado para carregar o módulo (pacote) e associe-o a um botão, por exemplo;
- No método coloque, mais ou menos, o seguinte:
- Rode e teste.
Como eu disse, vou tentar fazer um exemplo melhor, nem testei esse. Mas isso já é o básico para poder carregar um módulo/pacote dentro da aplicação e trabalhar com ele, certo? Para trabalhar com propriedades do Form, como SqlConnection (uma das quais uso) deve-se fazer uso de métodos da Unit TypInfo.
Até mais,
Gustavo Royer Chaurais
Vou tentar te dar alguns toques e vou ver se hoje à noite sobra um tempo pra fazer um exemplo.
- Crie um pacote e coloque uma unit dentro dele, pode ser um formulário;
- Não esqueça de colocar um RegisterClass([i:c3f703025f]ClasseDoFormNovo[/i:c3f703025f]) na seção [b:c3f703025f]initializaton[/b:c3f703025f] dessa unit;
- Compile e salve o pacote;
- Na mesma pasta crie uma aplicação;
- Crie nela um método que será chamado para carregar o módulo (pacote) e associe-o a um botão, por exemplo;
- No método coloque, mais ou menos, o seguinte:
(...) var AModulo: HModule; AClasseDoForm: TFormClass; AForm: TForm; begin AModulo := LoadPackage(´NomeDoPacote.bpl´); if AModulo > 0 then begin AClasseDoForm := TFormClass(GetClass(´NomeDaClasse´)); if Assigned(AClasseDoForm) then begin AForm := AClasseDoForm.Create(Application); try AForm.ShowModal; finally FreeAndNil(AForm); end; end else raise Exception.Create(´Classe não encontrada.´); UnloadPackage(AModulo); end else raise Exception.Create(´Pacote não encontrado.´); end; (...)
- Rode e teste.
Como eu disse, vou tentar fazer um exemplo melhor, nem testei esse. Mas isso já é o básico para poder carregar um módulo/pacote dentro da aplicação e trabalhar com ele, certo? Para trabalhar com propriedades do Form, como SqlConnection (uma das quais uso) deve-se fazer uso de métodos da Unit TypInfo.
Até mais,
Gustavo Royer Chaurais
GOSTEI 0
Andremuller
09/11/2004
Só gostaria de complementar uma coisa. A respeito da diferença entre BPL e DLL. Entre outras, o delphi tem um gerenciamente de memória extremamente superior no caso das BPLs e a maior delas é que você consegue implementar herança entre as BPLs, o que, até onde vai meu conhecimento, não é possível em DLLs, sendo sempre necessário incluir as heranças em cada dll.
GOSTEI 0
Gurc
09/11/2004
Só gostaria de complementar uma coisa. A respeito da diferença entre BPL e DLL. Entre outras, o delphi tem um gerenciamente de memória extremamente superior no caso das BPLs e a maior delas é que você consegue implementar herança entre as BPLs, o que, até onde vai meu conhecimento, não é possível em DLLs, sendo sempre necessário incluir as heranças em cada dll.
Nossa, e não é só isso... não sei se já citei mas a manipulação de strings com DLLs é totalmente complicada e fica dependente do Delphi, a não ser que usamos PChars. Já tive muitos bugs com manipulação de eventos... putz, hoje uso DLLs apenas para serem usadas por outras aplicações, como, por exemplo, a última situação que usei foi uma em que iriamos refazer apenas um sistema de uma prefeitura. Um outro, feito em VB, se ligaria a uma DLL nossa. Nesses casos não tem como fugir.
É isso mesmo, concordo plenamente contigo.
Gustavo Royer Chaurais
GOSTEI 0