Dúvida na questão 5 - Capítulo 1 - SCJP - Kathy

Pessoal,

tanto no decorrer do primeiro capítulo quanto no tópico “Exercícios Rápidos”, bem no início de “Identificadores”, está escrito o seguinte: “Os métodos JavaBeans devem ser nomeados usando-se camelCase e, dependendo do propósito do método, devem começar com set, get, is, add ou remove.”

A questão 5 deste mesmo capítulo (1), diz o seguinte:

Quais nomes de métodos obedecem ao padrão JavaBeans?

A. addSize
B. getCust
C. deleteRep
D. isColorado
E. putDimensions

Somente B e D estão corretas. Segundo explicações no livro, a alternativa “A” também não está correta?

Obrigado!

E não está mesmo…

Add é só pra Listeners…

E pelo que você deve ter lido, Listener tem um padrão de nomenclatura:

addActionListener por exemplo.

Logo, addSize não é válido, pois, Size não é um listener.

Ah sim, agora entendi… Tipo o exemplo do livro: addMyListener

Blz, valeu irmão.

Abraço!

Mesmo? E o que você diz do método add da classe List? E o addElement da classe Vector?

Me parece que a razão é por que o método add remete ao fato de adicionar um “size”, quando correto seria você querer obter o valor de size e, portanto, o método deveria chamar getSize().

É um erro meio subjetivo. Se você tem uma classe que é um list de sizes, poderia SIM chamar o seu método de addSize.

Estava me referindo aos padrões para Listeners (ficou um pouco estranha a minha frase mesmo, generalizando)

:wink:

É que você falou que add é “só para listeners”. A generalização é que ficou estranha…

Enfim, addSize está errado porque o autor está supondo que deveria ser setSize?

Mas addSize está no padrão JavaBeans.

Então, para acabar com a dúvida peguei a norma dos Java Beans.

O colega ali estava certo. No padrão Java Beans, add e remove são somente usados para listeners. Neste caso, o correto seria dizer que addSize não é um método bean, pois deveria ser addSizeListener.

Eu confundi pois o método set() aceita propriedades indexadas, set(int index, Object valor) e nas classes que eu descrevi estas propriedades também estão presentes no método add. Mas embora sejam coisas da Collections Framework, não são coisas do padrão Java Bean.

E desculpe pela confusão!

Os métodos de padrões JavaBeans, como get, set, is começam com a primeira letra minuscula, certo!!!
Depois do get, set ou is por exemplo, a segunda palavra deve conter letras maisculas ou aceita qualquer caixa alta ou baixa.
Fiquei com dúvidas em uma questão… alguém sabe???

Dúvida cruel: Esses padrões caem na prova ??? Por essa eu não espereva ???

pode crer que cae, poucas mas caem eu ja peguei 2 perguntas dessas no whilabs e me quebrei… fiquei nessa mesma duvida…

As próximas palavras seguem o padrão CamelCase.

Embora não seja um consenso nem entre a própria Sun, o livro Effective Java recomenda que no caso de siglas, apenas a primeira letra também seja maiúscula.

Por exemplo:
isHttpRequested()
getArrivedMessage()
setArrivedMessage(String message)

ViniGodoy declarar os métodos deta forma esta certo:

???/

Pelo que diz aqui na documentação o formato é
get<PropertyName>
set<PropertyName>
is<PropertyName>

Ou seja, a letra tem que ser maiúscula sim, não pode ser do jeito que você falou.

Qualquer coisa, confira o tópico 8.3 da documentação do Java Beans.
http://java.sun.com/products/javabeans/docs/spec.html

Heider Matos

nada impede de vc por minusculo ou maiusculo em:
setidade, setIdade.

mais a pergunta eh sobre nomeação, e de acordo o que a nomeação diz eh invalido a forma escrita, mais nao quer dizer que o codigo nao compila… esse pergunta foi para testar se o cara ta atento em saber as regras de nomeação. O importante nao confudir que seja obrigatorio vc declara como quiser…

Bem observado Camilo.

O Java admite mesmo ambas as formas, mas a regra é válida apenas se você quer que sua classe esteja no padrão Java Bean.

Bele galera, eu estava como essa dúvida.
Se a documentação diz assim, quem sou eu para contestar… :lol: :lol: :lol: :lol:
Valeu, muito obrigado.

a nomeação é um padrao de desenvolvimento, que pode ser adotado ou não, o ideal que seja ne? caso o seu amigo programador morra, ou seja demitido ja pensou se ele nao segue a documentação como você ou outro programador que vai ficar com a tarefa dele, vai conseguir entender a sintaxe dele se no desenvolvimento ele usou uma forma que para ele seria a melhor, entao muitos gerente de projeto e empresas em si, a nomeação é adotada e o uso é obrigatorio, e alem a legibilidade do codigo heeh :smiley: quando começei a estudar bem no inicio nao usava nomeação depois começei a usar e percebi a rapidez que é de vc olhar uma class de um amigo e saber que isso eh metodo, isso eh um construtor, isso eh uma variavel de instancia… isso returna um tipo boolean… e por ai vai :smiley:

flw! espero ter ajudado.

Na verdade, acho que isso vale para qualquer tipo de padrão, seja o Java Bean, sejam aqueles definidos na sua própria empresa.

O java mesmo é muito pouco restritivo, por ele a seguinte classe é válida:

[code]public class _ {
private int __;

public _(_ __) {
    this.__ = __.__;
}

public _(int __) {
    this.__ = __;
}

public int __() {
    return __;
}

}[/code]

Show de bola o post, vim pra internet tirar exatamente essa dúvida.

Vlw galera!! :!: