Re: [zope-pt] Re: Bug no tratamento de herança?

2006-07-31 Por tôpico Jean Rodrigo Ferri
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?

2006-07-23 Por tôpico Rodrigo Castardo



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?

2006-07-21 Por tôpico Juracy Filho
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.