Re: [zope-pt] Re: Bug no tratamento de herança?
Daniel Vainsencher escreveu: --- Em zope-pt@yahoogrupos.com.br, Juracy Filho [EMAIL PROTECTED] escreveu Eu tive este problema há algum tempo atrás e resolvi, porém, estou sem este código a disposição no momento (na segunda posso verificar), não lembro ao certo se resolvi usando BaseClass ou nenhuma super-classe. Quanto ao ArchGenXML, se você quiser que ele gere uma classe que não herde de nenhuma super-classe você deve usar a tagged value: base_class na classe, assim: base_class = 0 Olhe em: http://plone.org/documentation/tutorial/archgenxml-getting-started/classes Simple Derivation All content types in Archetypes are derived from one of the base classes - BaseContent, BaseFolder, OrderedBaseFolder and so on. If you wish to turn this off, for example because the base class is being inherited from a parent class, you can set the base_class tagged value to 0. Opa, ótima dica esta do base_class = 0. Fazer com que a classe abstrata não herde de nenhuma classe (BaseContent) resolveu o problema. Se este for o tratamento esperado mesmo, o AGX não deveria omitir a herança de BaseContent quando a classe fosse abstrata? Não sei se entendi bem o problema de vocês, mas acho que faltou declarar o estereótipo 'mixin' na classe abstrata. O produto de inscrições da PyConBrasil tem um exemplo. Abraço, -- Jean Ferri ___ Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora! http://br.mobile.yahoo.com/mailalertas/ Para enviar uma mensagem: zope-pt@yahoogrupos.com.br Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] Links do Yahoo! Grupos * Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/zope-pt/ * Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] * O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [zope-pt] Re: Bug no tratamento de herança?
Pessoal,segue uma dica, existe o CMFQuestion, ou CMFQuestions, que implementa isso, eu comecei a tradução dele a uns 2 meses atrás e nao consegui terminar, se nós traduzirmos o bixo ele provavelmente serve como uma luva para o que o Daniel precisa e ainda ajudamos a na tradução do produto :) []'sCastardoOn 7/21/06, Juracy Filho [EMAIL PROTECTED] wrote: Eu tive este problema há algum tempo atrás e resolvi, porém, estou sem este código a disposição no momento (na segunda posso verificar), não lembro ao certo se resolvi usando BaseClass ou nenhuma super-classe. Quanto ao ArchGenXML, se você quiser que ele gere uma classe que não herde de nenhuma super-classe você deve usar a tagged value: base_class na classe, assim: base_class = 0 Olhe em: http://plone.org/documentation/tutorial/archgenxml-getting-started/classes Simple Derivation All content types in Archetypes are derived from one of the base classes - BaseContent, BaseFolder, OrderedBaseFolder and so on. If you wish to turn this off, for example because the base class is being inherited from a parent class, you can set the base_class tagged value to 0. On 7/21/06, Daniel Vainsencher [EMAIL PROTECTED] wrote: --- Em zope-pt@yahoogrupos.com.br, Juracy Filho [EMAIL PROTECTED] escreveu Daniel, não pude testar para vê se realmente funciona, mas acredito que a solução do seu problema seria herdar Questao de BaseClass e não de BaseContent. Juracy, a sua sugestão não funcionou mas acho que lançou uma luz na direção correta. Troquei BaseContent por BaseClass mas ocorreu um erro ao instalar o produto no Zope (na inicialização da instância) porque a classe BaseClass não foi encontrada. Procurei por exemplos em outros produtos e não encontrei referência à bendita. No entanto encontrei esta referência em [1] : By marking your class as abstract in your model (usually a separate tick-box), you are signifying that it will not be added as a content type. Such classes are useful as mixin parents and as abstract base classes for more complex content types, and will not have the standard Archetypes registration machinery, factory type information or derive from BaseClass. Ela sugere que classes abstratas não devem herdar de BaseClass (que interpretei como BaseContent). Fiz o teste excluindo BaseClass como super classe de Questão e funcionou. Bem, se isto que fiz estiver correto então o problema estaria no ArchgenXML que gera classes abstratas herdando de BaseContent. Será isto mesmo? [1] http://plone.org/documentation/tutorial/archgenxml-getting-started/tutorial-all-pages []s Daniel On 7/21/06, Daniel Vainsencher [EMAIL PROTECTED] wrote: --- Em zope-pt@yahoogrupos.com.br, Luciano Ramalho [EMAIL PROTECTED] escreveu Daniel, talvez algum guru mais esperto que eu saiba te dar a solução, mas quero tentar te ajudar dando um toque sobre terminologia: quando se fala de pai e filho em OO isso pode ser ambíguo. A maioria das vezes, o pai é a super-classe e o filho é a sub-classe. Mas pode ser também que se trate de uma relação de composição: o pai é um container e o filho é o objeto contido. No Zope2, com o mecanismo de aquisição, essa possível confusão fica ainda mais presente. Mas note que é fácil separar, desde que fique claro que herança é uma relação de pai-filho entre CLASSES, e aquisição é uma relação entre OBJETOS (instâncias de classes). Isto posto, no problema que você relata você fala de objeto pai (Questão). Mas se Questao é uma classe abstrata, então ela não tem instâncias por definição! Acho que você está confundindo os conceitos. Corretíssima a observação. Do modo como escrevi está impreciso e incorreto. Tente reformular a descrição do seu problema sendo mais preciso na distinção Aí vai: Classes: - Questão - Classe abstrata e superclasse de MultiplaEscolha; - MultiplaEscolha - Especialização de Questão, relação de composição (contém) com Alternativa e, em função da composição, também herda de BaseFolder. - Alternativa - Relação de composição (está contida) com MultiplaEscolha Para facilitar postei o código das classes em http://paste.plone.org/6063 (Obrigado pela dica Jean) A minha intenção era colocar alternativas (instâncias de Alternativa) dentro de questões de multipla escolha (instâncias de MultiplaEscolha). O que ocorreu foi que, embora a classe MultiplaEscolha de fato herde de BaseFolder, não se comporta como uma pasta. Embora consiga forçar a criação de alternativas acessando o método diretamente http://localhost:8090/remo/questao1/createObject?type_name=Alternativa as opções de adição de alternativa e listagem de conteúdo não aparecem na interface do Plone. É como se MultiplaEscolha não fosse subclasse de BaseFolder. Consegui contornar provisoriamente forçando a herança entre a
Re: [zope-pt] Re: Bug no tratamento de herança?
Eu tive este problema há algum tempo atrás e resolvi, porém, estou sem este código a disposição no momento (na segunda posso verificar), não lembro ao certo se resolvi usando BaseClass ou nenhuma super-classe. Quanto ao ArchGenXML, se você quiser que ele gere uma classe que não herde de nenhuma super-classe você deve usar a tagged value: base_class na classe, assim: base_class = 0 Olhe em: http://plone.org/documentation/tutorial/archgenxml-getting-started/classes Simple Derivation All content types in Archetypes are derived from one of the base classes - BaseContent, BaseFolder, OrderedBaseFolder and so on. If you wish to turn this off, for example because the base class is being inherited from a parent class, you can set the base_class tagged value to 0. On 7/21/06, Daniel Vainsencher [EMAIL PROTECTED] wrote: --- Em zope-pt@yahoogrupos.com.br, Juracy Filho [EMAIL PROTECTED] escreveu Daniel, não pude testar para vê se realmente funciona, mas acredito que a solução do seu problema seria herdar Questao de BaseClass e não de BaseContent. Juracy, a sua sugestão não funcionou mas acho que lançou uma luz na direção correta. Troquei BaseContent por BaseClass mas ocorreu um erro ao instalar o produto no Zope (na inicialização da instância) porque a classe BaseClass não foi encontrada. Procurei por exemplos em outros produtos e não encontrei referência à bendita. No entanto encontrei esta referência em [1] : By marking your class as abstract in your model (usually a separate tick-box), you are signifying that it will not be added as a content type. Such classes are useful as mixin parents and as abstract base classes for more complex content types, and will not have the standard Archetypes registration machinery, factory type information or derive from BaseClass. Ela sugere que classes abstratas não devem herdar de BaseClass (que interpretei como BaseContent). Fiz o teste excluindo BaseClass como super classe de Questão e funcionou. Bem, se isto que fiz estiver correto então o problema estaria no ArchgenXML que gera classes abstratas herdando de BaseContent. Será isto mesmo? [1] http://plone.org/documentation/tutorial/archgenxml-getting-started/tutorial-all-pages []s Daniel On 7/21/06, Daniel Vainsencher [EMAIL PROTECTED] wrote: --- Em zope-pt@yahoogrupos.com.br, Luciano Ramalho [EMAIL PROTECTED] escreveu Daniel, talvez algum guru mais esperto que eu saiba te dar a solução, mas quero tentar te ajudar dando um toque sobre terminologia: quando se fala de pai e filho em OO isso pode ser ambíguo. A maioria das vezes, o pai é a super-classe e o filho é a sub-classe. Mas pode ser também que se trate de uma relação de composição: o pai é um container e o filho é o objeto contido. No Zope2, com o mecanismo de aquisição, essa possível confusão fica ainda mais presente. Mas note que é fácil separar, desde que fique claro que herança é uma relação de pai-filho entre CLASSES, e aquisição é uma relação entre OBJETOS (instâncias de classes). Isto posto, no problema que você relata você fala de objeto pai (Questão). Mas se Questao é uma classe abstrata, então ela não tem instâncias por definição! Acho que você está confundindo os conceitos. Corretíssima a observação. Do modo como escrevi está impreciso e incorreto. Tente reformular a descrição do seu problema sendo mais preciso na distinção Aí vai: Classes: - Questão - Classe abstrata e superclasse de MultiplaEscolha; - MultiplaEscolha - Especialização de Questão, relação de composição (contém) com Alternativa e, em função da composição, também herda de BaseFolder. - Alternativa - Relação de composição (está contida) com MultiplaEscolha Para facilitar postei o código das classes em http://paste.plone.org/6063 (Obrigado pela dica Jean) A minha intenção era colocar alternativas (instâncias de Alternativa) dentro de questões de multipla escolha (instâncias de MultiplaEscolha). O que ocorreu foi que, embora a classe MultiplaEscolha de fato herde de BaseFolder, não se comporta como uma pasta. Embora consiga forçar a criação de alternativas acessando o método diretamente http://localhost:8090/remo/questao1/createObject?type_name=Alternativa as opções de adição de alternativa e listagem de conteúdo não aparecem na interface do Plone. É como se MultiplaEscolha não fosse subclasse de BaseFolder. Consegui contornar provisoriamente forçando a herança entre a classe abstrata Questao e BaseFolder. No entanto, esta modelagem não representa corretamente o que pretendo expressar pois as outras subclasses de Questao não são Pastas. (ex: Redacao, Dissertativa, etc) Desculpem pela descrição descuidada anterior.