Quem está certo ?  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
cu_ringa
Virtual Machine Man
[Avatar]

Membro desde: 27/08/2003 00:19:11
Mensagens: 602
Localização: Natal-RN
Offline

tava fazendo o simulado do livro da kathy(software) e tinha a seguinte pergunta:


a resposta do simulado é A e D. sendo q no livro da kathy na pag. 402 o metodo run é definido na interface Runnable. E ai pessoal ql a resposta correta, sabendo q de todo jeito "run" sempre vai tar definido em Thread já q essa implementa Runnable.

"O que levamos desta vida, é a vida que a gente leva".
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Olhando o javadoc de java.lang.Thread:
Javadoc wrote:
...
void start()
Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.
...
void run()
If this thread was constructed using a separate Runnable run object, then that Runnable object's run method is called; otherwise, this method does nothing and returns.
...


A resposta é A e D.
[WWW]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

Quando se pegunta "qual o metodo definido em X" significa "qual o método que X traz de novo em relação a tudo o resto na sua hierarquia". Ou de outro de ponto de vista " qual o método cuja assinatura é definida na classe X"

Thread tem start() que nenhum outra classe a sua hierarquia tem. run() pertence a Runnable que Thread implementa e wait() e notifiy() pertence a Object. É por isso que a resposta certa é apenas os metodos de Thread.

nota: run() é de uma interface por isso a implementação é de Thread

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline

Só lembrando que Threads implementa a Interface Runnable e..... implementa o metodo run() por isso a resposta é A & D...


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

boa pergunta ehheh.. nao pode esquecer que a class Thread implicitamente ela faz:


mas uma questao dessa dar para matar no exame ja q ele informa quantas está correta.. hehehe se o cara saber que wait e notify pertence a Object... pronto 50% ja foi

flw.. boa questao..gostei ..

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
fabim
GUJ Master
[Avatar]

Membro desde: 14/12/2006 19:30:03
Mensagens: 1268
Localização: Vitoria - Espirito Santo
Offline

No Javadoc da classe Thread diz que o run():



Quer dizer entao que se meu JFrame implementa a interface ActionListener, posso entao dizer que meu JFrame é quem 'define' o método actionPerformed()?

Concordo com o autor do tópico, e descordo da resposta do simulado. Ao meu ver parece certo apenas a opção A.

ειπεν αυτη ο ιησους εγω ειμι η αναστασις και η ζωη ο πιστευων εις εμε καν αποθανη ζησεται

Sun Certified Web Component Developer
Sun Certified Java Programmer
Sun Certified Java Associate
Sun Certified Business Component Developer - Em Andamento
Bacharelando em Sistemas de Informacao


[MSN]
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

assim tomar cuidado de nao achar que run() é da class Thread, ela é da interface Runnable se vc olhar a tabela nesse capitulo da kathy, vai ver que run() não é um metodo da class Thread... o que acontece ai.. é apenas que qualquer classe que implementa uma interface ela recebe todos os metodos da interface...
Achei uma pergunta meia infeliz.. mais isso está na raiz do exame.. de perguntas assim.. eles quer que vc futuro scjp, entenda as coisas de varias formas.. acho que a ideia ai.. foi mais testar se vc está ligado na questao de herdar membros que o assunto sobre Threads..

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

fabiocsi wrote:No Javadoc da classe Thread diz que o run():



Quer dizer entao que se meu JFrame implementa a interface ActionListener, posso entao dizer que meu JFrame é quem 'define' o método actionPerformed()?



Specified (especificado, que dita a especificação) e Defined (definido, que dita a definição) são coisas diferentes, por isso temos classes e interfaces

Interfaces especificam. Elas ditam as regras que têm que ser cumpridas, mas não ditam como. Quando Runnable especifica run() ela não diz o que tem que acontecer lá dentro.
Classes definem. Elas não só ditam as regras que têm que ser cumpridas mas tb como elas são cumpridas. Quando Thread define run() ela diz o que acontece. Mais do que isso, acontece de uma única forma ( dai o definir : dar definição, contorno, distinguir de outros).

Quando o seu JFrame implementa ActionListener ele está definindo um comportamento para a especificação dada por ActionListener. Então, sim, neste ponto de vista JFrame sim define actionPerformed().

Veja por outro lado. String e StringBuffer já existiam quando CharSequence por foi introduzido. Hastable já existia quando Map foi introduzido. Seria então correto dizer que CharSequence define length() se String tinha primeiro ? o que que Map define put() se Hashtable usava antes dele ?
Concerteza não.

String definiu como length() é CharSequence só especifica que esse método (+ alguns outros) são suficiente para caracterizar uma seqüência de caracteres. Ele não define o que length() faz. Apenas especifica o que se espera de length(). O fato desta especificação ser retrocompativel com String não tem a ver com definir ou especificar mas com ser coerente, ver padrões , abstrair capacidades.

Mas eu concordo consigo, a pergunta não é clara e é enganadora. Qualquer um que remover wait() e notifiy() (que não são definidas originalmente por Thread) desacartará run() já que a diferença entre definir e especificar não é explicada em detalhe para que a pergunta faça sentido de forma a levar à resposta esperada.

Ainda bem que não é mais a Kathy que faz os exames ...







Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team