Duvida JavaBeans p/ SCJP 1.6

Estou estudando pra SCJP pelo livro, e nos Exercícios Rápidos aparece aseguinte regra:

  • Os métodos JavaBeans devem ser nomeados usando-se camelCase e, dependendo do própósito do método, devem começar com set, get, is, add ou remove.

Aí no Teste Individual tem a seguinte questão:

Quais nomes de métodos obedecem ao padrão JavaBeans? (Marque todas as corretas)

a- addSize
b- getcust
c- deleteRep
d- isColorado
e- putDimensions

Aí seguindo a regra acima, marquei as questões a(addSize) e d(isColorado).

Mas na resposta do livro diz o seguinte:

B e D usam os prefisos válidos get e is.
A, C e E estão incorretas porque add, delete e put não são nomes de prefixos JavaBeans padrões.

Como assim? B está correta??? Os métodos JavaBeans nao são nomeados usando camelCase? e add não é nome de prefixo JavaBeans padrão?? Na regra estava dizendo que era… Fiquei confusa… Se cair uma questão dessas na prova, devo responder o que afinal?

Cara Cris,

Lembrando que, isso são apenas padrões a serem adotados para deixar seu código com mais facil compreensão e manutenção, mas sem esses padrões o codigo compila normalmente. Como eu havia lhe falado, os padrões de nomenclatura Java Beans para os métodos são getAlgo, setAlgo … e isAlgo se exigir o retorno de um valor boleano … usando sempre camelCase. Copiando um trecho do livro : " A primeira letra deve ser minuscula, e depois as regras camelCase normais devem ser usadas. Além disso, os nomes devem normalmente ser pares de verbo-substantivo. ". E para métodos listeners existem aquelas regrinhas, addAlgumListener e removeAlgumListener. Não fique muito apegada as respostas do livro, pois existe muitos erros. Pesquisei e achei pra você, um pessoal que já havia quebrado a cabeça com essa mesma questão do livro … dá uma olhada nesse link …

http://www.guj.com.br/posts/list/83895.java

:slight_smile:

Tive a mesma dúvida que você, porém não tive a mesma idéia de postar aqui no guj.

Quando li o livro tive a mesma dúvida de você, e nessa questão que você fala, respondi as mesmas alternativas que tu respondeu. As dúvidas e as respostas foram idênticas.

E na minha prova caiu uma questão parecida, em que pedia para marcar quais métodos estavam seguindo corretamente o padrão dos JavaBeans, e então me lembrei dessa questão e fiquei confuso de qual alternativa eu marcaria, porque tinha a opção addXXX entre as alternativas.

Eu marquei a opção que começava com add, mas não tive convicção porque o livro me confundiu nesta parte e eu não esclareci minha dúvida. Eu acho que sim, que o método add, segue os padrões de nomeação JavaBean. Agora, se acertei ou não a resposta na prova, eu não sei.

E quanto a letra B estar correta, acredito que pode ter sido um erro de digitação no livro.

Att…

umas duas linhas abaixo do seu post, tem um meu ^^

Livro Kathy Sierra - Cap 1 - Q2 - JavaBean, camelCase [RESOLVIDO]

nele eu fui no forum e esclareci essa duvida…

a versão americana esta getCust e não getcust… por isso é um erro de digitação na tradução, onde veio minusculo, e o gabarito por sua vez saiu errado, marcando letras B e D onde somente a letra D era correta…

Sendo mais especifico, getcust não segue padrões JavaBean, o camelCase é exigido, e esse exercicio a resposta correta é apenas D, ou então vc deve corrigir a letra B, conforme versão americana do livro, e colocar o getCust maiusculo, e ai sim fica B e D…

entre no link que coloquei q vc poderar ver + detalhes

Ps.: aconselho a vc baixar a versão americana do livro, e sempre na hora dos exercicios, imprimir o teste individual em inglês, e faze-lo em ingles, pois afinal o exame será em ingles, e na versão americana erros são bem mais raros… é muito facil de achar o livro na internet em ingles… boa sorte

Lavieri, tah ok, mas e quanto ao add… ???

nos Exercícios Rápidos aparece aseguinte regra:

  • Os métodos JavaBeans devem ser nomeados usando-se camelCase e, dependendo do própósito do método, devem começar com set, get, is, add ou remove.

Pq a resposta a tbm esta errada?

add e remove só são permitidos para listners…

por exemplo

addPropetyListener

addActionListener

addMyListener

removePropetyListener

removeActionListener

removeMyListener

nada como

addSize

addMyHorse

addMyCar

etc etc etc… tem q ser algo como… add___Listener … ou remove___Listener