Jazz Alpha 9
Cada vez mais próximo da versão 1.0, nesta atualização houve um grande esforço na revisão de todas units, que deixou o código mais limpo, reutilizável e com ganho de performace.
Além da revisão há boas novidades:
No VTF os objetos derivados de TValueType ganharam uma nova propriedade “ValueTypeKind: TValueTypeKind“, desta forma podemos identificar um ValueType sem a necessidade do QueryInterface. Os tipos numéricos ganharam uma interface antecessora comum “INumericType” que possibilita a conversão direta de Float e Integer através das propriedades ‘AsFloat’ e ‘AsInteger’. Pra concluir as novidades deste framework há um “Factory” para facilitar a criação de objetos atributos (membros) na programação, com o “TypeFactory“ podemos criar objetos assim:
var
LItem: IStringType;
begin
LItem:= TypeFactory.NewString('Texto');
...
end;
As novidades do OPF estão em 2 ítens, a criação de metadados específicos para OID, através da classe “TOIDMeta“, deixando claro que o Jazz assume que os OID são utilizados apenas para a persistência no relacionamento entre tabelas, nos objetos eles são apenas mais um atributo, pois o relacionamento dos objetos é feito via referência de objetos, como ponteiros. Com esta reestruturação, o novo modelo proporcionou a criação do “DataFactory” para a geração automática de dados, o que sigfinica que qualquer campo pode ser automático, não somente os mapeados para OID, os “data generators” (TDataGenerator) implementam como estes valores devem ser gerados, de acordo com seu escopo, pela aplicação, por classe ou por atributo de classe, para começar temos TGuidGenerator, TAscendingGenerator e TDescendingGenerator, mas a partir destes é simples criar novos para por exemplo pegar valores a partir de generators do Firebird. Para definir que um atributo utilize este recurso, basta adicionar a classe do generator no mapeamento do membro:
with Mapping do
begin
with AddObject('TAddress', 'ADDRESS') do
begin
with Add('ID', 'ID') do
begin
Size:= 38;
IsOID:= True;
GeneratorClass:= TGuidGenerator; //***
end;
....
O MVP está quase pronto, sua evolução está na implementação de classes que estavam apenas declaradas e refinamento da modelagem, como já mencionei num post anterior estou implementando as Views com componentes DevExpress o que me obrigou a testar muito devido aos recursos disponíveis nestes componentes e a minha vontade de utilizar estes recursos, a única parte que terei de implementar e testar depois são os Interactos pois os componentes do DevExpress já implementam internamente a maior parte deste recurso. Minha previsão é que na próxima versão teremos algum exemplo simples de MVP com componentes VCL.
Changelog detalhado: http://www.liws.com.br/wiki/index.php/Alpha_9

outubro 30th, 2006 at 15:33
Cesar,
Gostaria de deixar os meus parabéns pelo teu trabalho, que tem sido uma grande fonte de inspiração e conhecimento para mim. À algum tempo tenho estudando técnicas e padrões de projeto para melhorar a codificação dos sistemas que trabalho, fazendo um esforço para deixar de lado a POG (Programação Orientada a Gambiarras
e começar usar a OO de forma a obter todos os benefícios de uma estrutura bem montada. Atualmente estou substituindo o DePO pelo Jazz dos sistemas que dou manutenção, pois já utilizo em algumas rotinas essa Framework. Aos poucos tenho dado pequenos passos para mudar a cultura aqui, mas já observo e colho resultados que estou indo no caminho certo. A propósito, aqui usamos IBX para acesso aos dados, daí eu codifiquei o JazzIBXMechanism. Ainda estou fazendo testes e terminando alguns ajustes nos sistemas, mas assim que tiver concluído gostaria de contribuir com o Jazz esse novo Mechanism.
Grande abraço!
outubro 30th, 2006 at 15:47
Cristiam,
Será muito bem vinda a sua contribuição do IBXMechanism, sinta-se a vontade em enviar dúvidas para lista de discussão, se ainda não se inscreveu, o endereço é http://forge.novell.com/mailman/listinfo/jazz-dev
[]s