| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:33:59
|
oddy.silva
JavaEvangelist
![[Avatar]](/images/avatar/3647532ec07150bfa31ec2896932bdfb.jpg)
Membro desde: 24/11/2008 11:42:10
Mensagens: 352
Localização: Itu
Offline
|
Pessoal, eu estava estudando encapsulamento no meu livro, o "Use a Cabeça! Java", quando cheguei até a parte que fala dos métodos get() e size(). Eu entendi que get() pega um argumento passado a ele e o método set configura esse falor. Seguindo nessa linha de raciocínio, o primeiro a funcionar é get(), para depois set() entrar. Porém, no exemplo do livro, eu tive a sensação de que está ao contrário. Parece que set() entra primeiro para depois get(). Eu vou colocar abaixo o código do livro e onde pintou a dúvida para vocês darem uma olhada:
A crica que ficou na minha cabeça é em relação a ordem em que cada método deve entrar. Se alguém puder explicar detalhadamente, passo-a-passo, como os métodos get() e set() acima estão se comportando, inclusive a ordem em que cada um entra em ação, eu agradeço. um abraço a todos.
This message was edited 1 time. Last update was at 07/01/2009 11:32:09
|
Odair
Gestão em T.I
FATEC - ITU
"Quem quer fazer alguma coisa, encontra um meio"
Quer ser um programador veloz? Então compre um par de tênis a jato.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:42:55
|
furacao123
GUJ Ranger
![[Avatar]](/images/avatar/f2dc8351dbd57c759aebf55e53876289.jpg)
Membro desde: 24/01/2008 22:05:47
Mensagens: 794
Offline
|
esta correto voce instanciou 2 objetos o one e o two da classe GoodDog
"setou" os valores para esses objetos e logo abaixo usando o get vc imprimiu
pq vc axa q deveria ser o contrario??
isso serve para encapsular sua aplicaçao tente fazer 2 classes separadas a GoodDog e outra GoodDogTesteDrive separadamente ae usando o get, set e pensando como se tivesse trabalhando com banco de dados, vc vai intender melhor pq do get e set.
This message was edited 1 time. Last update was at 07/01/2009 10:44:05
|
Q8200 | Intel DG35EC | 4GB Kingston 800 |HD Seagate 250 GB SATA | HD Seagate 160 GB SATA | Monitor LG 22'' | Fonte AKASA 350W | GeForce 9600 GT
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:43:10
|
abelgomes
Virtual Machine Man
![[Avatar]](/images/avatar/e14601b19b804b49c4022a1dd205554e.jpg)
Membro desde: 12/06/2008 17:08:23
Mensagens: 706
Localização: Manaus-AM
Offline
|
nao importa a ordem....se no seu contrutor tiver inicializando o atributo sizer com 60 entao vc so precisa dar um get...ai vai de caso para caso....
entao não fica com esse grilo na cabeça nao e continua lendo o livro la na frente vc vai sacar isso....
por exemplo se vc desse getSize antes de dar um set ele ia dar nullpointerexception pq nao tinha na da lá
|
...the only easy day was yesterday... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:45:37
|
Lucas Lacerda Gertel
JavaBaby
![[Avatar]](/images/avatar/aa954eb9fc47e002ecbf68b60517a3de.jpg)
Membro desde: 06/11/2007 10:11:42
Mensagens: 85
Localização: São Paulo
Offline
|
Então meu velho.
Na verdade não existe uma ordem obrigatória para chamada destes métodos.
O set() você define o valor do atributo e o get() você recupera.
No caso do teu objeto GoodDog, ele primeiro define o valor 70, pois se ele utilizasse o getSize ele viria como null pois não tem um valor definido na classe.
O get() recupera o valor do atributo e o set() define.
Imagine que você não sabe se já existe um valor definido e você precisa definir um caso não exista...
Ai você chamaria primeiro o get().
Acho que é isso!
Abraços,
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:52:14
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
1º - Você cria um objeto do tipo GoodDog chamado 'one'. A JVM chama o construtor padrão, ou seja o valor de size é o padrão (zero).
2º - Você DEFINE o atributo 'size' de 'one' através do método 'setSize(int)'.
3º - Cria outro objeto do tipo GoodDog chamado 'two'.
4º - Altera seu tamanho para 8 através de setSize(int).
5º - Você RESGATA e imprime os valores em 'size' de ambos os objetos, através do método 'getSize()'.
6º - Manda ambos os cachorros latirem através do método 'bark()'. Esse método faz a verificação do tamanho do cão para definir o tipo de latido.
Entendeu agora?
|
Marco Biscaro.
Seja livre!
Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:52:52
|
cris.t
JavaTeenager
![[Avatar]](/images/avatar/e428d5580f729d23e6070e43c492e424.png)
Membro desde: 14/07/2008 15:00:38
Mensagens: 169
Localização: Minas
Offline
|
O que acontece no seu exemplo é o seguinte:
De acordo com o tamanho do Cachorro "Good Dog" e vai latir de um jeito.
então no seu metodo main vc cria dois objetos GoodDog e atribui o tamanho "size" para o dogOne com o valor 70, usando o método setSize(int size), e para o dogTwo com o valor 8.
Depois vc imprime no console os tamanhos que vc atribui para cada um acima, então vc usa o metodo getSize().
Ou seja primeiro vc usou o set para atribui um valor para o objeto, tanto que nos metodos set vc precisa passar um valor.
E para "pegar" o valor que vc atribuiu vc vai usar o get.
This message was edited 1 time. Last update was at 07/01/2009 10:53:39
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:54:49
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
Lucas Lacerda Gertel wrote:Então meu velho.
Na verdade não existe uma ordem obrigatória para chamada destes métodos.
O set() você define o valor do atributo e o get() você recupera.
No caso do teu objeto GoodDog, ele primeiro define o valor 70, pois se ele utilizasse o getSize ele viria como null pois não tem um valor definido na classe.
O get() recupera o valor do atributo e o set() define.
Imagine que você não sabe se já existe um valor definido e você precisa definir um caso não exista...
Ai você chamaria primeiro o get().
Acho que é isso!
Abraços,
É quase isso. A sua condição nunca vai ser verdadeira, pois 'size' é um 'int' e tipos primitivos nunca são null (null é apenas para referência para objetos). O correto seria:
|
Marco Biscaro.
Seja livre!
Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 10:59:13
|
oddy.silva
JavaEvangelist
![[Avatar]](/images/avatar/3647532ec07150bfa31ec2896932bdfb.jpg)
Membro desde: 24/11/2008 11:42:10
Mensagens: 352
Localização: Itu
Offline
|
Como eu adoro o pessoal do GUJ!!!
Primeiramente, obrigado as pessoas que estão me ajudando até este momento.
Deixa eu ver se assimilei bastante coisa até agora.
No meu exemplo, set() entra primeiro porque a priori a minha variável size possui valor null. É isso? Depois é resgatado o valor com get(). Isso mesmo? Se eu estiver errado me corrijam.
Mas se eu tivesse declarado a minha variável size e já lhe atribuido um valor? Eu poderia então usar get() primeiro, passar os argumentos para set() e então mostrar um resultado num possível System.out.println?
Abraço!!! Grato!!!
|
Odair
Gestão em T.I
FATEC - ITU
"Quem quer fazer alguma coisa, encontra um meio"
Quer ser um programador veloz? Então compre um par de tênis a jato.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 11:02:44
|
Lucas Lacerda Gertel
JavaBaby
![[Avatar]](/images/avatar/aa954eb9fc47e002ecbf68b60517a3de.jpg)
Membro desde: 06/11/2007 10:11:42
Mensagens: 85
Localização: São Paulo
Offline
|
Opa, verdade...
Não é null não cara é 0.
null seria se sua variavel fosse declarada como Integer e não int.
Tipo primitivo sux..rs.
Abrax
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 11:05:50
|
oddy.silva
JavaEvangelist
![[Avatar]](/images/avatar/3647532ec07150bfa31ec2896932bdfb.jpg)
Membro desde: 24/11/2008 11:42:10
Mensagens: 352
Localização: Itu
Offline
|
É, acabei de ver esse detalhe no livro tbm. Alguém viu a minha última pergunta?
|
Odair
Gestão em T.I
FATEC - ITU
"Quem quer fazer alguma coisa, encontra um meio"
Quer ser um programador veloz? Então compre um par de tênis a jato.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/01/2009 11:07:10
|
marcobiscaro2112
JWizard
Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline
|
oddy.silva wrote:Como eu adoro o pessoal do GUJ!!!
Primeiramente, obrigado as pessoas que estão me ajudando até este momento.
Deixa eu ver se assimilei bastante coisa até agora.
No meu exemplo, set() entra primeiro porque a priori a minha variável size possui valor null. É isso? Depois é resgatado o valor com get(). Isso mesmo? Se eu estiver errado me corrijam.
Mas se eu tivesse declarado a minha variável size e já lhe atribuido um valor? Eu poderia então usar get() primeiro, passar os argumentos para set() e então mostrar um resultado num possível System.out.println?
Abraço!!! Grato!!!
O valor inicial de size é 0 (zero) e não null. E quanto a segunda parte, é isso mesmo. Se no construtor da classe (você já aprendeu sobre construtores?) você definir um valor padrão, você pode acessá-lo antes mesmo de usar um set.
|
Marco Biscaro.
Seja livre!
Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?
Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|