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
[zope-pt] Re: Bug no tratamento de herança?
--- Em zope-pt@yahoogrupos.com.br, Rodrigo Castardo [EMAIL PROTECTED] escreveu 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 :) Oi Rodrigo. Dei uma olhada no CMFQuestions[1]. Confesso que não instalei. Li a documentação e dei uma olhada no código. Parece interessante para quem precisa montar questionários on-line. Aliás na pesquisa encontrei um outro Produto;CMF Questionnaire[2];com recursos bem interessantes No entanto a natureza do produto que estou desenvolvendo é diferente. É um banco de questões, com montagem e administração de provas, processamento e divulgação de resultados para concursos. Infelizmente a abordagem de [1] e [2] difere bastante da minha. Analisei também o modo como ele implementou os diversos tipos de questão para ver se me dava uma luz na questão da herança. Para minha Infelicidade ele distingue os tipos de questão apenas na exibição (nos templates). Eu realmente preciso de classes distintas. :-( Obrigado pela sugestão. [1] http://plone.org/products/cmfquestions [2] http://plone.org/products/cmfquestionnaire []s Daniel []'s Castardo On 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
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
[zope-pt] Re: Bug no tratamento de herança?
--- 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. Espero que tenha melhorado. entre as relações. Aposto que ao fazer esta reformulação você vai encontrar sozinho a causa do problema! Infelizmente ainda não. ;-) Obrigado pelos toques. []s Daniel [ ]s Luciano On 7/20/06, Daniel Vainsencher Maya Monteiro [EMAIL PROTECTED] wrote: Uma classe que herda de BaseFolder e de uma classe abstrata que não é Folder parece não refletir o comportamento de um Folder. Nossa! Que frase horrível! Trocando em miúdos: Criei as classes: - Questao - classe abstrata não Folder, - MultiplaEscolha - herda de Questao e é composta por alternativas - Alternativa No entanto, Ao criar um objeto MultiplaEscolha as opções de adição de conteúdo referem-se à pasta pai de MultiplaEscolha: O que ocorre: - Alternativa não está disponível para adição, apenas os Tipos Permitidos na pasta pai - Ao forçar a criação da Alternativa com http://localhost:8090/remo/questao1/createObject?type_name=Alternativa consigo criar Alternativas sem erros; - O ícone do Tipo MultiplaEscolha é igual ao da Pasta o que indica que é de fato uma pasta - Não aparece a action Conteúdo, comum a todas as pastas Parece que as verificações para adição são feitas sobre o objeto pai (Questao) o que não paree correto num ambiente com herança múltipla. O que acham? (Se é que me fiz entender ;-) ) []s Daniel 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
[zope-pt] Re: Bug no tratamento de herança?
--- 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. Espero que tenha melhorado. entre as relações. Aposto que ao fazer esta reformulação você vai encontrar sozinho a causa do problema! Infelizmente ainda não. ;-) Obrigado pelos toques. []s Daniel [ ]s Luciano On 7/20/06, Daniel Vainsencher Maya Monteiro [EMAIL PROTECTED] wrote: Uma classe que herda de BaseFolder e de uma classe abstrata que não é Folder parece não refletir o comportamento de um Folder. Nossa! Que frase horrível! Trocando em miúdos: Criei as classes: - Questao - classe abstrata não Folder, - MultiplaEscolha - herda de Questao e é composta por alternativas - Alternativa No entanto, Ao criar um objeto MultiplaEscolha as opções de adição de conteúdo referem-se à pasta pai de MultiplaEscolha: O que ocorre: - Alternativa não está disponível para adição, apenas os Tipos Permitidos na pasta pai
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.