class Carro {
public String cor;
public int peso;
void setCor( String cor ) {
this.cor = cor;
}
void getCor() {
return cor;
}
void setPeso( String peso ) {
this.peso = peso;
}
void getPeso() {
return peso;
}
// Aqui que importa neste exemplo, o setCarro
void setCarro( String cor, int peso ) {
this.cor = cor;
this.peso = peso;
}
}
A minha dúvida é se é normal ter um método chamado setCarro… ao invés de ter somente gets e sets?
Eu sempre faço um setCarro… pois os atributos do objeto ficam “mais consistêntes”. Não tem perigo de alguém setar o carro como “azul” e depois como branco e ficar pensando que o carro é “azul”.
O que vcs acham? É normal fazer isso? Tenho até pensado em tirar os sets.
Pra mim se jah tenho todos os dados do objeto eu o declaro direto no construtor.
E para usar o objeto sem ter q declarar nada eu faco uma sobrecarga no construtor…
A minha dúvida é se é normal ter um método chamado setCarro… ao invés de ter somente gets e sets?
Eu sempre faço um setCarro… pois os atributos do objeto ficam “mais consistêntes”. Não tem perigo de alguém setar o carro como “azul” e depois como branco e ficar pensando que o carro é “azul”.
O que vcs acham? É normal fazer isso? Tenho até pensado em tirar os sets.[/quote]
1 - Sim, é algo muito comum, porém não é uma regra. Existem casos que o desenvolvedor não quer dar acesso direto a um atributo da classe, então ele provê métodos secundários que podem fazer a formatação ou a validação dos valores passados.
2 - Se vc está disponibilizando um método set carro que meche com os atributos da classe, não é muto sábio disponibilizar uma outra maneira de alterar estes atributos, no seu carro os métodos setCor e setPeso deveriam ser removidos para não causar confusão.
O indicado é sempre utilizar o construtor para fazer este tipo de coisa.
Isto está relacionado a nomenclatura do método, o ideal é que o nome dele transmita a idéia do que ele realmente faz. Isso sem falar no “padrão” que propõe a maneira como a classe deve ser construída, o padrão JAVA BEANS; nesta proposta os métodos para ajustar os ATRIBUTOS devem começar com set / get e operar apenas em cima de um ATRIBUTO, fazendo isso vc acaba por construir a idéia de PROPRIEDADE de um BEAN.
Pediria que vc fizesse uma pesquisa sobre Java Beans, pois é uma idéia que surgiu faz tempo e teve forte impacto na maneira como construimos as classes hoje fazendo com que algumas coisas ficassem não muito bem entendidas.
Outro detalhe, é que ao utilizar o construtor para definir o estado inicial do seu objeto vc poderá precisar utilizar mais de um construtor causando um certo problema de nomenclatura novamente, ou seja vc irá obter vários construtores com mesmo nome mas com parâmetros diferentes que não transmitem a idéia do que realmente fazem.
A sugestão para resolver este problema (ver livro do Mr. Matin Fowller sobre refatoração) seria construir métodos factories.
[quote=aleck][quote=Felipe Kan]Vejam a seguinte classe abaixo:
A minha dúvida é se é normal ter um método chamado setCarro… ao invés de ter somente gets e sets?
Eu sempre faço um setCarro… pois os atributos do objeto ficam “mais consistêntes”. Não tem perigo de alguém setar o carro como “azul” e depois como branco e ficar pensando que o carro é “azul”.
O que vcs acham? É normal fazer isso? Tenho até pensado em tirar os sets.[/quote]
1 - Sim, é algo muito comum, porém não é uma regra. Existem casos que o desenvolvedor não quer dar acesso direto a um atributo da classe, então ele provê métodos secundários que podem fazer a formatação ou a validação dos valores passados.
2 - Se vc está disponibilizando um método set carro que meche com os atributos da classe, não é muto sábio disponibilizar uma outra maneira de alterar estes atributos, no seu carro os métodos setCor e setPeso deveriam ser removidos para não causar confusão.
[/quote]
Hmmm, fiquei mais feliz agora rs… pensei que só eu pensava desse jeito. Pois todo mundo aqui no trampo fala para deixar só os sets e gets estilo java bean e tirar o setCarro.