--
--
Antes de enviar um e-mail para o grupo leia:
http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
para Eventos do Grupo C & C++ Brasil:
http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira: vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en
Um assunto que me chama bastante atenção são as questões relativas ao
polimorfismo dinâmico. Ao mesmo tempo que representa uma solução ele
também representa
um problema de acoplamento e dificuldade de re-uso.
Algo ruim da OOP é o acoplamento criado pelas heranças.
Ponto V! - Programação de Jogos Profissional
www.pontov.com.br - @pontov - Facebook
--
--
Antes de enviar um e-mail para o grupo leia:
http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
para Eventos do Grupo C & C++ Brasil:
http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira: vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en
---
Você está recebendo esta mensagem porque se inscreveu no grupo "ccppbrasil" dos Grupos do Google.
Para cancelar a inscrição nesse grupo, envie um e-mail para ccppbrasil+...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
O problema só existe no polimorfismo dinâmico, pois o polimorfismo
estático não necessita herança.
Eu estava mencionando que não é uma premissa de zero overhead. E sim
de só pagar pelo que se usa. Não disse nada sobre acoplamento.
Felipe Magno de Almeida
Você sempre pode usar o polimorfismo dinâmico sobre o polimorfismo
estático, mas nunca o contrário.
> Att,
>
> Vinícius
>[]'s
> Vinícius Godoy de Mendonça
> @vinigodoy
--
Felipe Magno de Almeida
--
--
Antes de enviar um e-mail para o grupo leia:
http://www.ccppbrasil.org/wiki/Lista:AntesdePerguntar
--~--~---------~--~----~---------------------------------~----------~--~----~
[&] Colabore com a Pesquisa de Preferência de Conteúdo
para Eventos do Grupo C & C++ Brasil:
http://www.surveymonkey.com/s/GBBGTXN
------~----~-------~---~---~---~---~----------------~------------~---------~
[&] C & C++ Brasil - http://www.ccppbrasil.org/
Para sair dessa lista, envie um e-mail para ccppbrasil-...@googlegroups.com
Para mais opções, visite http://groups.google.com/group/ccppbrasil
--~--~---------~--~----~--~-~--~---~----~-----------------~--~----------~
Emprego & carreira: vag...@ccppbrasil.org
http://groups.google.com/group/dev-guys?hl=en
---
Você está recebendo esta mensagem porque se inscreveu no grupo "ccppbrasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para ccppbrasil+...@googlegroups.com.
//Uso de um adaptador
Em segunda-feira, 28 de janeiro de 2013 14h02min05s UTC-2, Thiago Adams escreveu://Uso de um adaptador
Se um adaptador é permitido, o mesmo nível de flexibilidade pode ser obtido com polimorfismo dinâmico, como demonstrado no GoF.
2013/1/28 P. <pedro....@gmail.com>
Se um adaptador é permitido, o mesmo nível de flexibilidade pode ser obtido com polimorfismo dinâmico, como demonstrado no GoF.
Não entendi.
Este é dinâmico.
O adaptador só remove dos objetos a responsabilidade da interface e coloca o problema no algorítmo e "storage". É possível fazer sem templates, mas não é isso que deixa dinâmico ou estático, é apenas um conveniência na criação do adaptador.
On Jan 28, 3:55 pm, "P." <pedro.lama...@gmail.com> wrote:
> Em segunda-feira, 28 de janeiro de 2013 15h41min30s UTC-2, Thiago Adams
> escreveu:
>
>
>
> > 2013/1/28 P. <pedro....@gmail.com <javascript:>>
>
> >> Se um adaptador é permitido, o mesmo nível de flexibilidade pode ser
> >> obtido com polimorfismo dinâmico, como demonstrado no GoF.
>
> > Não entendi.
> > Este é dinâmico.
> > O adaptador só remove dos objetos a responsabilidade da interface e coloca
> > o problema no algorítmo e "storage". É possível fazer sem templates, mas
> > não é isso que deixa dinâmico ou estático, é apenas um conveniência na
> > criação do adaptador.
>
> Não expressar Draw como classe base de IControl é a decisão inicial neste
> design. Ela parece se justificar diante da possibilidade de escrever
> InterfaceCast para tornar os objetos úteis.
Mesmo na forma não polimorfica o objeto é útil.
>Se eu estou entendendo bem o
> contexto, estamos tratando de uma inflexibilidade do polimorfismo dinâmico.
> Eu estou dizendo que se um adaptador é permitido, então os supostos
> problemas não existem. Se eu tenho um IButton da biblioteca IControl mas
> quero usá-lo com um algortimo da biblioteca foo_control posso escrever um
> adaptador segundo a técnica descrita no GoF.
Neste caso o objeto pode ser reutilizado mas a complexidade dos
acoplamentos na origem permanesse.
Em segunda-feira, 28 de janeiro de 2013 16h26min05s UTC-2, Thiago Adams escreveu:
On Jan 28, 3:55 pm, "P." <pedro.lama...@gmail.com> wrote:
> Em segunda-feira, 28 de janeiro de 2013 15h41min30s UTC-2, Thiago Adams
> escreveu:
>
>
>
> > 2013/1/28 P. <pedro....@gmail.com <javascript:>>
>
> >> Se um adaptador é permitido, o mesmo nível de flexibilidade pode ser
> >> obtido com polimorfismo dinâmico, como demonstrado no GoF.
>
> > Não entendi.
> > Este é dinâmico.
> > O adaptador só remove dos objetos a responsabilidade da interface e coloca
> > o problema no algorítmo e "storage". É possível fazer sem templates, mas
> > não é isso que deixa dinâmico ou estático, é apenas um conveniência na
> > criação do adaptador.
>
> Não expressar Draw como classe base de IControl é a decisão inicial neste
> design. Ela parece se justificar diante da possibilidade de escrever
> InterfaceCast para tornar os objetos úteis.
Mesmo na forma não polimorfica o objeto é útil.
Sim. E o fato de esse mesmo objeto ser tornado polimórfico não o torna menos útil.
>Se eu estou entendendo bem o
> contexto, estamos tratando de uma inflexibilidade do polimorfismo dinâmico.
> Eu estou dizendo que se um adaptador é permitido, então os supostos
> problemas não existem. Se eu tenho um IButton da biblioteca IControl mas
> quero usá-lo com um algortimo da biblioteca foo_control posso escrever um
> adaptador segundo a técnica descrita no GoF.
Neste caso o objeto pode ser reutilizado mas a complexidade dos
acoplamentos na origem permanesse.
De que complexidade nós estamos falando?
Da presença de um nome explicitamente indicado no texto do programa?
2013/1/28 P. <pedro....@gmail.com>:
[snip]
> std::for_each exibe acoplamento a um conjunto de regras cuja expressão não
> possui sintaxe em C++ e a comunidade convencionou chamar conceito
> ForwardIterator.
Esse "conjunto de regras" se chama semântica. E não existe uma expressão
sintática porque não tem nada a ver com sintaxe.
On Jan 29, 10:05 am, "P." <pedro.lama...@gmail.com> wrote:
...
É uma ilusão esta imagem onde polimorfismo-dinâmico tem
> constrição pela classe base e polimorfismo-estático não tem constrição
> nenhuma, que polimorfismo-dinâmico é "complexo" e polimorfismo-estático é
> "simples".
Existe diferença. Citei o exemplo do draw, load, save.
Se o motivo da criação da IControl 2 foi a Draw, então seria melhor
que se tivesse criado uma IDraw ao invés de colocar virtual Draw na
interface IControl.
Enfim, espero que fique claro que não é fácil fazer mudanças quando
existe heranças.