MAC 413/5715 - Tópicos de Programação
Orientada a
Objetos
Aula 7 - 31/8/2005
POSA I - Expressões Idiomáticas (Idioms)
- Expressões idiomáticas ou idioms são padrões de
bem baixo nível
específicos para um determinada linguagem de
programação
- explicam como implementar um determinado conceito utilizando os
mecanismos de uma linguagem específica
- Nota lingüística: idiom
não se traduz para "idioma", é um falso cognato. "idioma"
em português é language
em inglês.
- Às vezes ao olharmos para um padrão de projeto em
uma determinada linguagem, podemos ser levados a uma expressão
idiomática. Por exemplo, o padrão Singleton em C++ e
Smalltalk podem ser vistos como idioms
- incluir aqui singleton em C++ do POSA I, pag. 351
- incluir aqui singleton em Smalltalk do POSA I, pag. 351
- Os livros Effective C++
and More Effective C++ de
Meyers e o livro Effective Java
são bons exemplos de livros de expressões
idiomáticas.
- O POSA apresenta apenas um exemplo de expressão
idiomática mais elaborada:
- Counted Pointer
- Problema:
- alocação dinâmica de objetos em C++ causa
muitos problemas de vazamento de memória
- objetos tem que ser destruídos explicitamente e muitas
vezes não sabemos o lugar apropriado para destruí-lo (e
liberar sua memória)
- em C++ usamos muito passagem de objetos como parâmetro,
mas quando fazemos isso, quem deve ser responsável por destruir
o objeto? O chamador ou o chamado?
- forças:
- passar objetos sempre por valor não é
apropriado
- vários clientes precisam compartilhar um mesmo objeto
- não podemos permitir referências para objetos
que já foram destruídos (dangling
references)
- se um objeto não é mais utilizado, ele deve
ser destruído para liberar os recursos
- a solução não deve exigir muito
código adicional e deve ser leve computacionalmente
- Solução
- introduza contagem de referências utilizando um
"apontador contador" ao invés de apontadores simples
- adicione um contador de referências na classe original
- crie uma classe Handle que servirá de "apontador
inteligente" para o objeto original
- ver diagrama UML no POSA, pag. 355
- ver código fonte da implementação no
POSA,
pag. 356
- nota: nesta aula eu iniciei Padrões de Análise. Mas
as notas de aula estão na aula seguinte.
Referências
- F. Buschmann, R. Meunier, H. Rohnert, P.Sommerlad, M. Stal Pattern-Oriented
Software Architecture - A System of Patterns. John Wiley and Sons
Ltd, Chichester, UK, 1996
- A página do POSA
na teia (mais focado no POSA II).
- Resumo
do POSA I na teia
Próxima Aula
Aula Anterior
Página de MAC 5715
Página do Fabio
Página do DCC