Archive for the 'Programação' Category

Published by Joao Morais on 06 Sep 2008

Objetos com contagem de referência

Imagine um data module, que por motivo de economia de memória é criado e destruído com a aplicação em execução. Imagine este data module sendo referenciado por mais de um formulário ao mesmo tempo. Como garantir que o data module será destruído apenas quando nenhum formulário estiver apontando para ele? Continue Reading »

Published by Joao Morais on 31 Aug 2008

Dica para gerenciamento de formulários

(english)

Ao meu ver, uma parte mal elaborada do Delphi/Lazarus é o gerenciamento de formulários da aplicação. Tanto o fato de usar uma variável pública independente para controlar a instância quanto a isca ‘jogue tudo no form’ trazem problemas. A primeira abordagem exige que o programador, ou crie os formulários no início da aplicação e não os destrua mais, ou exige que ele cuide para não deixar a variável apontar para um objeto destruído. A segunda abordagem, entre outros problemas, exige que a primeira funcione perfeitamente para que ocorra comunicação entre formulários. Continue Reading »

Published by Joao Morais on 23 Aug 2008

Ponteiros e alocação dinâmica

Tem um ditado que diz: Eu não sei, mas tenho o telefone de quem sabe. Trabalhar com ponteiros é muito parecido com isto, mas o ditado fica assim: Eu não sei, mas tenho o endereço de quem sabe. Continue Reading »

Published by Joao Morais on 16 Aug 2008

Desacoplar MVP e VCL com Interfaces

(english)

Ao contrário de alguns astros da programação orientada a objetos, eu não era muito fã de interface. Os primeiros usos foram sub-utilizados, como mero auxiliar de gerenciamento de memória (interface em Object Pascal tem contagem de referência controlada pelo compilador, ao contrário de classes). Continue Reading »

Published by Joao Morais on 09 Aug 2008

do jmp às Interfaces - A história do acoplamento

No princípio era o jmp. E o call. E o ret. E os saltos condicionais. E com isto os heróicos programadores da época conseguiam criar laços e blocos cuja execução dependia de alguma condição ter sido satisfeita. E a máquina começou a pensar. Um label indicava ao assembler aonde determinada rotina estava começando, e o assembler transformava aquele label em um endereço de memória. Entre o label e o ret estava o que conhecemos hoje por procedure. Continue Reading »

Published by Joao Morais on 10 Feb 2008

Construindo um interpretador orientado a objetos

Outro dia precisei colocar fórmula em um dos sistemas que desenvolvo, para que o usuário tenha mais liberdade para informar como um custo deva ser calculado. É permitido que ele faça algo como 0.012 * 66 * 96 * Chapas / FormatoImpressao, aonde as variáveis apresentadas são atributos do objeto de negócio. Continue Reading »

Published by Joao Morais on 06 Feb 2008

Como remover vazamentos de memória

Ferramentas como FastMM melhoram o desempenho de aplicações que utilizam muita alocação dinâmica, e de quebra ainda relata se a aplicação está deixando vazamentos de memória.

Agora saber que a aplicação tem vazamento de memória é fácil, no entanto, dependendo do tamanho do projeto, torna-se mais difícil determinar aonde ela foi alocada. Continue Reading »

Published by Joao Morais on 30 Nov 2007

Wiki do PressObjects

Há alguns posts atrás prometi colocar alguns artigos sobre PressObjects neste blog. Depois de terminar o rascunho do primeiro artigo, notei que ele tem um foco diferente do que tem sido aplicado aqui, sem falar que o próprio projeto tem muito pouco material. Resolvi escrever tais artigos diretamente para o projeto, e para tanto dei início a um wiki que você pode conferir aqui.

Estes primeiros artigos vão para o wiki num instante, e vou deixar para o blog a missão de mandar algum recado ou publicar material que envolva ponto de vista.

Published by Joao Morais on 30 Nov 2007

Tipos de métodos de uma classe

Classe é um tipo de dado que aponta para um objeto em memória. No entanto, diferente de um ponteiro comum, as classes possuem uma sintaxe rica e que tornam o trabalho com ponteiros para objetos bem mais prático e produtivo. Esta mensagem aborda os tipos de métodos de uma classe. Continue Reading »

Published by Joao Morais on 17 Nov 2007

Armadilhas com a falta de parênteses

Toda expressão lógica que possui algum dos operadores lógicos and, or, xor, entre outros, precisa agrupar cada comparação com parênteses para que o compilador entenda como a expressão deve ser interpretada. Continue Reading »

Next »