para concursos
Questes comentadas
Volume questes de TI
Prefcio
Concebida inicialmente para ser utilizada no desenvolvimento de pequenos aplicativos e programas de controle de aparelhos eletrnicos, a linguagem de programao orientada a objeto
Java, com o boom da Internet, foi rapidamente adaptada aos conceitos da Internet, dando s
pginas HTML contedos mais dinmico.
Desde o seu lanamento, em maio de 1995, Java foi rapidamente adotada pelos desenvolvedores, estando presente em diversos tipos de web browsers, celulares, mainframes, etc.
Com algumas caractersticas peculiares, como multi-plataforma, alto desempenho, segurana,
cdigo interpretado, a linguagem Java est presente em muitos projetos, e por esta crescente
utilizao, a linguagem Java tornou-se um padro para o mercado.
Seguindo este cenrio, o assunto Java sempre cobrado nas provas de concursos pblicos. Para
voc pode ser preparar melhor neste tema, o Grupo Handbook de TI preparou o volume Java,
que traz uma sria de questes comentadas sobre tal tpico.
Bons estudos,
Grupo Handbook de TI
Pgina 1 de 51
www.handbookdeti.com.br
Volume questes de TI
Direitos Autorais
Este material registrado no Escritrio de Direitos Autorais (EDA) da Fundao Biblioteca
Nacional. Todos os direitos autorais referentes a esta obra so reservados exclusivamente aos
seus autores.
Os autores deste material no probem seu compartilhamento entre amigos e colegas prximos de estudo. Contudo, a reproduo, parcial ou integral, e a disseminao deste material de
forma indiscriminada atravs de qualquer meio, inclusive na Internet, extrapolam os limites da
colaborao. Essa prtica desincentiva o lanamento de novos produtos e enfraquece a comunidade concurseira Handbook de TI.
A srie
Grupo Handbook de TI
Pgina 2 de 51
www.handbookdeti.com.br
uma
Volume questes de TI
Canais de Comunicao
O Grupo Handbook de TI disponibiliza diversos canais de comunicao para os concurseiros
de TI.
Loja Handbook de TI
Acesse a nossa loja virtual em
http://www.handbookdeti.com.br
Servio de Atendimento
Comunique-se diretamente conosco atravs do e-mail
faleconosco@handbookdeti.com.br
Twitter do Handbook de TI
Acompanhe de perto promoes e lanamentos de produtos pelo nosso Twitter
com/handbookdeti
Pgina 3 de 51
www.handbookdeti.com.br
http://twitter.
1.
Volume questes de TI
Soluo:
Os arquivos JAR (Java Archive) agrupam arquivos de classes e os recursos utilizados por
essas classes, como imagens e propriedades. Os pacotes JAR so muito utilizados no mundo
Java e so facilmente visualizveis por softwares de descompactao populares, como o Winzip. A utilizao desses arquivos JAR no se restringe ao empacotamento de componentes
EJB, pois tambm so utilizados para empacotar componentes Java no pertencentes ao
padro J2EE. Conclumos, ento, que a alternativa E est incorreta.
O que difere um arquivo JAR comum e um arquivo JAR que armazena componentes EJB so
os arquivos manifest, cuja nalidade fornecer informaes adicionais que sero utilizadas
em tempo de execuo. Os arquivos JAR comuns possuem o arquivo meta-inf/Manifest.mf.
J os arquivos que armazenam EJBs possuem o arquivo META_INF/ejb-jar.xml.
Os mdulos web podem ser empacotados em arquivos com extenso WAR (Web Archive) e
no h problema nenhum em relao ao seu acesso pela Internet, pois uma vez que o arquivo
WAR siga as especicaes do padro J2EE, o container web do servidor de aplicao ser
responsvel por gerar os arquivos HTML para serem entregues ao browser. Logo, a alternativa D est incorreta.
A alternativa C est errada, uma vez que os arquivos JAR, WAR etc.
so compactados
e tendem a possuir tamanho reduzido, embora no haja garantia de que sejam menores que
o cdigo original.
Um arquivo EAR (Enterprise Application Archive) utilizado para permitir que uma aplicao J2EE complexa possa ser facilmente instalada em um servidor J2EE. Ele permite
agrupar pacotes JAR comuns, pacotes JAR com EJBs e pacotes WAR. Portanto, a alternativa B a alternativa correta para a questo.
Pgina 4 de 51
www.handbookdeti.com.br
2.
Volume questes de TI
Soluo:
O objetivo dos servidores de aplicaes disponibilizar uma plataforma que permita aos
programadores abstrair de uma gama de tarefas inerentes ao desenvolvimento do software.
Dessa forma, os programadores podem se concentrar mais nas regras de negcio do que nas
questes de infraestrutura da aplicao, como segurana, disponibilidade, balanceamento de
carga, mensageiria etc.
Para aplicaes simples, a utilizao de um servidor de aplicaes pode representar um
overhead ao invs de facilitar as tarefas dos programadores.
Pgina 5 de 51
www.handbookdeti.com.br
Volume questes de TI
o modelo MVC. No entanto, a construo de uma aplicaes que obedea ao MVC est
muito mais ligada a separao dos componentes e camadas do sistema do que plataforma
tecnolgica utilizada. , portanto, possvel construir aplicaes MVC no bom e velho ASP,
bem como nos novos e modernos servidores de aplicaes.
A validao de objetos de que trata a alternativa A feita pelos servidores de aplicaes,
mas no est relacionada as regras de negcio das aplicaes.
A gerao automtica de
cdigo, por sua vez, uma tarefa comum s IDEs, e no aos servidores de aplicaes.
Portanto, a alternativa E, por ser a mais objetiva e clara, a resposta correta para essa
questo.
Pgina 6 de 51
www.handbookdeti.com.br
3.
Volume questes de TI
Soluo:
Abordaremos cada item.
Sobre o Item I
A plataforma J2EE (Java
ponentes para projeto, desenvolvimento, montagem e disponibilizao de aplicaes distribudas em ambientes corporativos.
camadas:
Cliente;
Web;
Negcios;
Pgina 7 de 51
www.handbookdeti.com.br
Volume questes de TI
Cliente Web:
Cliente Aplicao: permite que o usurio interaja com o servidor da aplicao atravs
de interfaces mais complexas, geralmente atravs de APIs.
isto
Servlets: classes que processam dinamicamente as requisies e constroem respostas na forma de pginas HTML;
Server Pages ):
Pgina 8 de 51
www.handbookdeti.com.br
Volume questes de TI
entre o Web browser e o EJB. Por m, o EJB representada a camada Model, j que implementa toda a lgica do negcio. Portanto, o item I est correto.
Sobre o Item II
JTA (abreviao de
(criadora do Java) visando padronizar o uso de transaes distribudas feitas por aplicativos
Java.
Basicamente, isso signica que ela pode ser usada para fazer commit, rollback ou criar
transaes, ao invs de usar transaes diretamente pelo driver JDBC. A principal vantagem que o uso de JTA acarreta, contudo, a possibilidade de executar transaes globais
(unidades lgicas de trabalho que seguem 4 princpios fundamentais: atomicidade, consistncia, isolamento e durabilidade).
JTA dene somente as interfaces que um aplicativo deve chamar para fazer uso de transaes distribudas, mas deve ser implementada por algum servio que implemente essa
API. Praticamente todo
terface padro para localizao de usurios, mquinas, redes, objetos e servios, permitindo
aos clientes a obteno do contexto inicial de um objeto a partir do nome do componente.
Portanto o item II est errado.
Begin )
Commit ).
Em J2EE as
Declarativa (CMT -
Container-Managed Transactions ):
cao transacional;
Programtica (BMT -
transacional;
Iniciada pelo cliente: cdigo cliente manipula a demarcao transacional (ex. cliente
WEB).
Portanto, estamos diante de uma transao declarativa (gerenciada pelo container), a qual
possui os seguintes atributos transacionais (o atributo especica como o componente ir
reagir quando o seu mtodo for chamado por um cliente dentro ou fora do contexto de uma
transao):
Required :
transao, uma nova criada e dura at que o mtodo termine ( propagada para todos
Pgina 9 de 51
www.handbookdeti.com.br
Volume questes de TI
os mtodos chamados). Caso j exista uma transao iniciada pelo cliente, o bean
includo no seu escopo durante a chamada do mtodo (j podemos eliminar o item III);
Supports :
realizar suas tarefas sem transaes e pode chamar objetos que no suportam transaes;
RequiresNew :
Estando ou no o
cliente no escopo de uma transao, o bean ir iniciar uma nova transao que iniciar
e terminar no bean;
NotSupported :
pelo cliente no escopo de uma transao, a mesma ser suspensa enquanto durar a
chamada do mtodo (no haver propagao de transaes do cliente);
Mandatory :
cliente;
Never :
indica que o mtodo nunca pode estar dentro de uma transao. Se o cliente que
A est correta.
Pgina 10 de 51
www.handbookdeti.com.br
4.
Volume questes de TI
Web,
session
Soluo:
JavaServer Pages
Alm das tags HTML, que geram o contedo esttico, uma pgina JSP tambm contm
elementos JSP especiais que permitem inserir contedo dinmico por meio dos elementos
JSP. Os elementos JSP so processados pelo servidor Web antes da pgina HTLM ser enviada de volta ao browser. Ou seja, quando o usurio faz uma requisio a uma pgina JSP,
o servidor executa os elementos JSP da pgina, inserindo os resultados dos mesmos junto a
parte esttica da pgina, e envia a pgina HTML para o usurio. A tecnologia JSP pode ser
usada, por exemplo, para recuperar informao em um banco de dados, manipular arquivos,
obter informaes sobre o visitante, etc.
Aps uma breve introduo de JSP, a seguir, analisamos as armativas da questo:
I. Como forma de facilitar a programao Web, em uma pgina JSP existem 9 objetos
instanciados, conhecidos como Objetos Implcitos, que so:
page :
servlet
cong :
JSP;
Pgina 11 de 51
www.handbookdeti.com.br
Volume questes de TI
servlet
servlet
gerado,
existe um objeto page para cada JSP. Portanto, esta armativa verdadeira.
II. Como qualquer linguagem de programao Web, os comentrios no aparecem na resposta ao cliente. Logo, esta armativa falsa.
III. O escopo de um objeto est relacionado com as pginas JSPs que podem acessar o
objeto. Os escopos disponveis so:
objeto que possui escopo
session
todas as JSPs e
session. O
os servlets, e
e
vidor, pois o protocolo HTTP no armazena informaes de estado. Isso permite o usurio
navegar entre vrias pginas na aplicao Web sem perda de informaes referentes sesso
de usurio. Um exemplo tpico de utilizao do escopo
session
em autenticao de usu-
session
duram du-
(E).
questo no confere com o gabarito ocial. Possivelmente, a banca que organizou a prova
deve ter cometido um equvoco na armativa I.
Pgina 12 de 51
www.handbookdeti.com.br
5.
Volume questes de TI
CAUSA:
SOLUO:
(d).
CAUSA: verso antiga da mquina virtual Java, que apresenta esse tipo de problema at a verso 1.1. SOLUO: atualizar para a ltima verso da JVM.
CAUSA: falta da incluso do pacote java.lang.math em Produto. SOLUO:
incluir o pacote atravs de uma declarao import.
(e).
CAUSA: mistura de elementos de escopos diferentes (classe e mtodo) na expresso lgica de retorno. SOLUO: atribuir o precoMinimo a uma varivel local
e utiliz-la na comparao ou tornar precoComDesconto um campo de Produto.
Soluo:
(A) CORRETA
Observe, no cdigo acima, que as variveis preco, precoMinimo e precoComDesconto so
do tipo double. Observe, tambm, que o programa est tratando com partes fracionais de
uma unidade monetria, que assumiremos ser o real somente para ns ilustrativos, e ento
precisa de um tipo que permite pontos decimais em seus valores.
Infelizmente, nmeros em ponto utuante podem causar transtornos. O problema que ocorre
no cdigo acima devido ao uso do tipo double (ou oat) para representar quantias em reais
(assumindo que quantias de real so mostradas com dois dgitos a direita do ponto decimal).
Dessa forma, aps a chamada do construtor Produto, poderemos ter as seguintes quantias
armazenadas para o produto caderno:
O mesmo pode ocorrer para o produto caneta aps a invocao do construtor Produto:
Pgina 13 de 51
www.handbookdeti.com.br
Volume questes de TI
Assim, aps a invocao do mtodo descontoValido pelos produtos caderno e lpis, teremos:
A recomendao no usar variveis do tipo double (ou oat) para realizar clculos monetrios precisos. A impreciso de nmeros em ponto utuante pode causar erros que resultaro em incorretos valores monetrios.
int
(C) ERRADA
A JVM (Java Virtual Machine ou Mquina Virtual Java, em portugus) uma mquina
computacional abstrata, que, assim como uma mquina real, possui seu prprio conjunto de
instrues e capacidade de manipular vrias reas de memria em tempo de execuo.
Dentre as responsabilidade da JVM podemos citar as principais:
Lembre-se que a mquina virtual Java no tem conhecimento sobre a linguagem de programao Java. Ela conhece apenas um determinado formato binrio, arquivo do tipo classe, o
qual contm instrues da JVM (ou bytecodes) e uma tabela de smbolos, bem como outras
informaes.
(D) ERRADA
A classe Math parte do pacote java.lang, o qual implicitamente importado pelo compilador. Ento no necessrio importar a classe Math para usar seus mtodos.
(E) ERRADA
Os membros de uma classe, no presente caso, preco e precoMinimo, so acessveis por qualquer mtodo declarado na mesma classe, independentemente do qualicador que os precede.
Assim, o campo precoMinino (this.precoMinimo no cdigo) pertence ao escopo do mtodo
descontoValido.
Note, ainda, que no mtodo descontoValido, o uso da palavra chave this para o membro
precoMinimo no era necessrio, pois no h variveis locais com o mesmo nome.
Pgina 14 de 51
www.handbookdeti.com.br
6.
Volume questes de TI
Banca: ESAF
Instituio: Agncia Nacional de guas (ANA)
Cargo: Analista Administrativo - Tecnologia da Informao e Comunicao / Desenvolvimento de Sistemas e Administrao de Banco de Dados
Ano: 2009
Questo: 30
Soluo:
Excees, como o nome sugere, so situaes que fogem s regras e, no caso das linguagens de
programao, geralmente indesejveis. Ocorrem no momento da execuo de um programa
e precisam ser devidamente tratadas para no interromperem o processamento normal de
uma aplicao. Podem ocorrer por diversos motivos, como uma inadvertida diviso por zero,
uso de referncias para objetos inexistentes, falta de memria, dentre outros.
A Linguagem Java possui um mecanismo de tratamento de excees baseado em escopo,
o que permite utilizar um bloco de cdigo separado daquele que gerou uma determinada
exceo para trat-la adequadamente, propiciando maior organizao ao projeto codicado.
Da mesma forma que os demais elementos desta linguagem, as excees so objetos em Java,
sendo a classe Exception a superclasse de todas as excees. Esta estruturao permite que
um programador dena suas prprias excees, que herdam caractersticas pr-denidas na
classe Exception.
dem trat-la atravs de diretivas especializadas para este m (throws, try, catch e nally).
Para tanto, o tipo (classe) de exceo deve ser indicado, possibilitando-se, assim, que toda
e qualquer exceo seja individualmente tratada.
Uma exceo comumente lanada durante a execuo de cdigos em Java a ClassNotFoundException, que adverte ao programador que uma determinada classe no est acessvel
JVM, isto , nenhuma denio para uma classe com o nome especicado pde ser encontrada. Esta exceo, classe integrante do pacote java.lang, pode ocorrer por inexistncia
real da classe indicada ou por falta de referncia sua localizao no ambiente de programao utilizado (variveis de ambiente do sistema operacional). Desta forma, a assertiva A
apresenta-se como a resposta para a questo.
A exceo java.io.FileNotFoundException ocorre para sinalizar que a tentativa de abertura do arquivo indicado falhou.
Operaes de
Pgina 15 de 51
www.handbookdeti.com.br
Volume questes de TI
ocorrido. A classe Scanner (um parser simples para textos com tipos primitivos) lana a exceo java.util.InputMismatchException para indicar que ou o token capturado no coincide
com o padro do tipo esperado ou seu valor est fora da faixa esperada.
Pgina 16 de 51
www.handbookdeti.com.br
7.
Volume questes de TI
Soluo:
Java uma linguagem de programao muito popular atualmente.
na dcada de 90 pela SUN Microsystems e desde aquela poca essa linguagem vem sendo
melhorada e ampliada. O paradigma escolhido para o Java foi o de orientao a objetos,
portanto, classes e mtodos so utilizados para modelar o que se deseja programar.
Em geral, os cdigos-fonte desenvolvidos em outras linguagens (C++, por exemplo) so
compilados para serem executados em arquiteturas especcas.
gerados para uma determinada arquitetura (Intel, por exemplo) no funcionam em outras
arquiteturas (PowerPC e SPARC, por exemplo). medida que temos diversas arquiteturas
e diversos sistemas que devem ser corretamente executados nessas arquiteturas, essa abordagem comea a se mostrar desfavorvel.
A plataforma Java veio principalmente para solucionar esse tipo de problema. Diz-se ento
que a linguagem Java portvel, j que seus executveis podem ser executados em qualquer
arquitetura, desde que haja uma JVM para ela. De forma simplicada, essa portabilidade
obtida da seguinte forma:
1. o desenvolvedor escreve (edita) o cdigo-fonte de um sistema na linguagem Java;
2. ao nal da fase de desenvolvimento, o cdigo-fonte compilado, uma nica vez, gerandose um cdigo intermedirio chamado de bytecode. Esse bytecode no depende da arquitetura da mquina fsica. Isso porque a mquina fsica no executa diretamente esse
cdigo intermedirio;
Pgina 17 de 51
www.handbookdeti.com.br
Volume questes de TI
3. uma JVM, que pode estar instalada sobre qualquer arquitetura fsica, interpreta e executa o cdigo intermedirio (bytecode) quantas vezes forem as vezes em que o sistema
for executado.
Perceba que com o Java no h mais dependncia entre cdigo-fonte e arquitetura fsica,
mas passamos a ter dependncia entre JVM e arquitetura fsica.
Pgina 18 de 51
www.handbookdeti.com.br
8.
Volume questes de TI
Assuntos relacionados: Servidor de Aplicaes, Java, J2EE, Mquina Virtual Java (JVM),
Heap,
Banca: Cesgranrio
Instituio: BNDES
Cargo: Analista de Sistemas - Suporte
Ano: 2008
Questo: 31
Um servidor Linux, que roda, exclusivamente, um servidor de aplicao Java EE, possui 2
GB de memria RAM e 1 CPU. A nica aplicao em execuo atinge, em momentos de
pico, 50 usurios simultneos. Para que essa aplicao tenha um desempenho adequado, o
tamanho mximo da Heap da JVM pode ser congurado para
(a). 100 threads.
(b). 32 MB.
(c). 60 threads.
(d). 2 GB.
(e). 512 MB.
Soluo:
O Java EE (Enterprise Edition) uma plataforma de desenvolvimento de sistemas em Java.
A plataforma inicialmente era conhecida por Java 2 Platform Enterprise Edition (J2EE),
at ter seu nome trocado para Java EE, o que ocorreu na verso 5.
A plataforma JEE oferece uma srie de componentes e funcionalidades que permitem a
implementao de software Java distribudo.
ente e uma outra parte que executa no servidor. O servidor em si dividido em diferentes
containers
oferecidos pelos
containers
Pgina 19 de 51
www.handbookdeti.com.br
Volume questes de TI
Quando um cdigo Java compilado, ele d origem a um programa codicado nos chamados
bytecodes.
executado por uma JVM. Uma JVM, por sua vez, um programa que converte os bytecodes
em cdigo executvel de mquina, que pode ento ser executado pela mquina fsica.
Em ltima instncia, so os conceitos de bytecodes que garantem a portabilidade dos cdigos
Java. Independente do sistema operacional ou plataforma fsica onde tenha sido desenvolvido o programa Java, os bytecodes sempre sero os mesmos.
programa Java em outro sistema, basta que se tenha uma JVM especca, capaz de converter os bytecodes para o cdigo de mquina apropriado.
Agora, vamos ao que realmente interessa para alcanarmos a resposta da questo.
A
heap
da JVM uma rea de memria onde todos os objetos das aplicaes que esto
sendo executadas pela JVM residem. Alm dos objetos criados nas aplicaes, a heap ainda
possui uma rea de memria reservada para outras funes da JVM. Portanto, para que as
aplicaes executem com desempenho adequado, necessrio congurar bem o tamanho da
heap.
As alternativas A e C esto erradas, simplesmente, porque o tamanho da heap no denido
em termos do nmero de threads, mas sim em termos de quantidade de memria. J a alterativa D est errada pois no faz sentido alocar toda a memria do sistema (no caso, 2GB)
exclusivamente para a JVM. O sistema operacional sequer ir permitir a realizao desta
operao, visto que boa parte da memria j estar sendo utilizada pelo prprio sistema
operacional.
Com isto, nos restam as alternativas B (32 MB) e D (512 MB). O enunciado da questo diz que o servidor possui 1 CPU, e que, em momentos de pico, a aplicao em execuo
atinge 50 usurios simultneos. O fato de o servidor possuir apenas 1 CPU implica dizer
que, em momentos de alta utilizao da aplicao, haver muitas trocas de contexto, ou
seja, muitas alternncias entre os processos em execuo.
Em princpio, a alterao da quantidade de memria no ir afetar a quantidade de trocas
de contexto, porm ir permitir que as mltiplas threads (que sero criadas para atender
uma grande quantidade usurios simultneos) estejam sempre na memria principal, o que
pode conferir maior desempenho aplicao.
Como o enunciado no presta informaes sobre o consumo de memria das threads individuais que so geradas para atender cada um dos usurios simultneos, e levando ainda
em considerao que o tamanho default da heap (ou seja, um tamanho que atende os requisitos de desempenho de uma aplicao mdia) da JVM varia entre 16MB a 64MB, podemos
armar que, para maximizar o desempenho da aplicao, o ideal seria congurar o tamanho
mximo da heap para 512MB.
Portanto, a resposta da questo a alternativa E.
Pgina 20 de 51
www.handbookdeti.com.br
9.
Volume questes de TI
pblico, no
recebe nenhum argumento, retorna um inteiro e declara que no levanta excees. Suponha
ainda a existncia de uma classe Cliente que herda da classe Pessoa e possui um mtodo
chamado getIdenticador que pblico, no recebe nenhum argumento e declara que levanta
a exceo java.lang.Exception. Essa situao um exemplo de
(a). Sobrecarga de mtodo (overload ) sem erros, pois os mtodos tm o mesmo nome.
(b). Sobrescrita de mtodo (overriding ) sem erros, pois o mtodo da classe Cliente
substitui o mtodo da classe Pessoa.
(c). Avaliao preguiosa (late
Soluo:
Mtodos em Java podem ser sobrecarregados (overloading ) e sobrescritos (overriding ).
Mtodos so sobrecarregados quando criamos outros mtodos com o mesmo nome, mas
diferentes assinaturas e diferentes denies. Sobrecarga de mtodos permite que instncias
da sua classe tenham uma interface mais simples para outros objetos e se comportem de
modo diferente baseado na entrada para aquele mtodo.
Quando voc chama um mtodo em um objeto, Java compara o nome do mtodo e o nmero
de argumentos para escolher qual denio de mtodo executar.
Para sobrecarregar um mtodo, tudo que voc precisa fazer criar diferentes denies
de mtodos na sua classe, todas com o mesmo nome, mas com diferentes listas de parmetros (ou em nmero ou tipo dos argumentos) e com diferentes corpos.
Note que Java diferencia mtodos sobrecarregados com o mesmo nome, baseado sobre o
nmero e tipos dos parmetros para aquele mtodo, e no sobre o tipo de retorno. Isto ,
se voc tentar criar dois mtodos com o mesmo nome, mesma lista de parmetros, mas com
diferentes tipos de retornos, voc obter um erro de compilao.
Aqui est um exemplo de como sobrecarregar um mtodo.
4 variveis para denir o canto superior esquerdo e o inferior direito do retngulo: x1, y1,
x2 e y2.
Pgina 21 de 51
www.handbookdeti.com.br
Volume questes de TI
Class MeuRetangulo {
int x1 = 0;
int x2 = 0;
int y1 = 0;
int y2 = 0;
}
Denimos o mtodo constroiRetangulo que possui 4 argumentos inteiros e ajusta o tamanho
do retngulo de acordo com os valores dos cantos, retornando o objeto retngulo resultante.
MeuRetangulo constroiRetangulo (int cx1, int cy1, int cx2, int cy2) {
x1 = cx1;
y1 = cy1;
x2 = cx2;
y2 = cy2;
return this;
}
Agora, iremos sobrecarregar o mtodo acima alterando a lista de parmetros, passando dois
objetos da classe Ponto:
Runtime )
porm pode lanar excees mais especcas ou lanar menos excees. Uma vez que Java
executa a primeira denio de mtodo que encontra com a mesma assinatura, ele efetivamente oculta a denio do mtodo original.
Aqui est um exemplo de como sobrescrever um mtodo.
mtodo imprime (), o qual apenas imprime o nome da classe.
Pgina 22 de 51
www.handbookdeti.com.br
Volume questes de TI
Class Impressao {
void imprime () {
System.out.println (``Impressao'');
}
}
Agora, vamos criar uma segunda classe, Impressao2, que tem Impressao como superclasse e
sobrescreve o mtodo imprime () (a diferena est no nome a ser impresso).
static binding ).
Como vimos acima, a sobrescrita de um mtodo no pode lanar excees novas, pois obteremos erro em tempo de compilao. Portanto, a alternativa
Pgina 23 de 51
www.handbookdeti.com.br
E a correta.
10.
Volume questes de TI
getPriority().
(c).
matcher.
(d).
FocusRequester.
(e).
RemoteException.
Soluo:
A resposta da questo a alternativa A. O RMI (Remote Method Invocation) uma das
abordagens da tecnologia Java para prover as funcionalidades de uma plataforma de objetos
distribudos. O RMI faz parte do ncleo bsico do Java desde a verso 1.1, com a sua API
sendo especicada no pacote java.rmi e seus subpacotes.
Atravs da utilizao do RMI, possvel que um objeto ativo em uma mquina virtual
Java possa interagir com objetos de outras mquinas virtuais Java, independentemente da
localizao dessas mquinas virtuais.
No desenvolvimento de uma aplicao cliente-servidor usando Java RMI, como para qualquer plataforma de objetos distribudos, essencial que seja denida a interface de servios
que sero oferecidos pelo objeto servidor. Os servios especicados pela interface RMI devero ser implementados atravs de uma classe Java.
O funcionamento tpico de uma aplicao que usa RMI o seguinte: uma aplicao cliente
invoca um mtodo de um objeto no servidor. Os parmetros so serializados e enviados pela
rede para o servidor. No servidor, os dados so deserializados, e a computao realizada.
por m, os resultados so novamente serializados e enviados de volta ao cliente.
Pgina 24 de 51
www.handbookdeti.com.br
11.
Volume questes de TI
Considere o seguinte fragmento de cdigo, para o mtodo run() de uma determinada linha
de execuo (thread), em Java.
1. try{
2.
sleep(1000);
3. } catch (InterruptedException ie){}
Se considerarmos que a linha de execuo no interrompida, correto armar que
(a). o cdigo no compila.
(b). a linha de execuo entra em estado Pronto, aps 1000 milissegundos.
(c). a linha de execuo entra em estado Pronto, em exatamente 1000 milissegundos.
(d). a linha de execuo entra em estado Pronto, em pelo menos 1000 milissegundos.
(e). o cdigo compila, mas no executa, lanando uma exceo do tipo ThreadException.
Soluo:
J que o enunciado referencia um bloco de cdigo, uma boa forma de compreender essa
questo atravs de um cdigo que implemente o bloco correspondente em conjunto com a
infraestrutura necessria para compilao e execuo. Considere, portanto, o cdigo abaixo.
import java.lang.Thread;
Pgina 25 de 51
www.handbookdeti.com.br
Volume questes de TI
que no h erro sinttico ou semntico no cdigo. O que invalida a soluo referenciada pela
opo a.
Aps a compilao do bloco de cdigo, tambm possvel execut-lo. O exemplo abaixo
exibe a chamada ao programa compilado e a sada por ele gerada:
0m1.131s
A correta execuo desse programa invalida, portanto, a opo e, j que no houve qualquer exceo levantada e o programa exibiu a sada correta (Hello World, neste caso). No
exemplo acima, o comando time exibe os tempos de execuo de um programa e optou-se
por exibir apenas o tempo real de execuo, de 1,131 segundos.
Resta-nos, portanto, as opes b, c e d.
guagem Java, que diz que o mtodo sleep da classe Thread causa a suspenso temporria
da thread em execuo pelo nmero de milisegundos especicado pelo argumento passado
para o mtodo. Disso decorre que, terminado o tempo de suspenso, a thread retornar ao
estado Pronto em 1000 milissegundos. O problema com as opes c e d so os qualicadores
adicionados a este tempo. Por depender da preciso do timer do computador que executar
esse bloco de cdigo e do escalonador de processos, impossvel garantir que a mudana
para o estado Pronto ocorrer em exatamente 1000 milisegundos, invalidando a alternativa
c. De forma semelhante, a preciso do timer ou o escalonador podem fazer com que o tempo
de suspenso da thread seja menor que 1000 milisegundos, invalidando a alternativa d.
De modo geral, como no h garantias dadas pelo mtodo sleep, melhor selecionar a opo
que responde a pergunta sem restries adicionais. No caso, a alternativa b a correta.
Pgina 26 de 51
www.handbookdeti.com.br
12.
Pgina 27 de 51
www.handbookdeti.com.br
Volume questes de TI
Volume questes de TI
(d). (3,4)(3,4)(5,4)(2,5)(2,5)(1,2)
(e). (3,4)(3,4)(5,4)(2,2)(2,5)(2,2)
Soluo:
A seguir, o passo a passo da execuo da classe em questo. Na verdade, sero abordados
os principais pontos da execuo.
Perceba que no foi criado um objeto que seria atribudo varivel r. Na execuo dessa
ltima linha, a varivel r foi atribuda ao objeto j existente p. Ou seja, a partir deste ponto,
em qualquer referncia s variveis r e p sero utilizadas as propriedades do mesmo objeto.
Pgina 28 de 51
www.handbookdeti.com.br
13.
Volume questes de TI
import java.util.ArrayList;
public class Fabricante {
private ArrayList<Produto> mProduto;
public Fabricante () {
}
public ArrayList<Produto> getProduto () {
return mProduto;
}
Pgina 29 de 51
www.handbookdeti.com.br
Volume questes de TI
Soluo:
Lembre-se que diagramas de classe nos permitem identicar tanto o contedo de uma classe
quanto o relacionamento entre vrias classes. Em um diagrama de classes podemos mostrar
as variveis e mtodos membros de uma classe. Podemos tambm mostrar se uma classe
herda de outra, ou se mantm uma referncia para outra. Em suma, podemos descrever todas
as dependncias do cdigo-fonte entre classes.
saber:
1. associaes entre classes muito frequentemente representam instncias de variveis que
mantm referncia para outros objetos;
2. a direo da echa nos informa que a classe mantm referncia para outra classe;
3. o nmero prximo cabea da seta nos informa quantas referncias so mantidas;
4. quando existem muitas conexes representamos por estrela (*). Em Java, isso comumente implementado com um Vetor ou uma Lista.
De posse desse conhecimento, estamos aptos a revolver a presente questo.
Inicialmente, analisemos a declarao da classe Produto.
um membro privado do tipo Fabricante. Em outras palavras, a classe Produto mantm uma
nica referncia para classe Fabricante. Portanto, na associao existente entre Produto e
Fabricante deve existir uma echa apontando para a classe Fabricante com o valor numrico
1 (um) em sua ponta.
Agora, analisemos a declarao da classe Fabricante.
vetor (ArrayList) privado do tipo Produto, em outras palavras, a classe Fabricante mantm
muitas referncias para classe Produto. Portanto, na associao existente entre Fabricante
e Fabricante tambm deve existir uma echa apontando para a classe Produto com um asterisco (*) em sua ponta.
Conclumos, ento, que a reposta correta a letra
D.
Pgina 30 de 51
www.handbookdeti.com.br
14.
Volume questes de TI
if (x != x + 0) {
System.out.println("Condio satisfeita.");
}
Se x for da classe String e tiver sido inicializado, esse trecho de cdigo Java
(a). imprimir a mensagem, apenas se x no for 0.
(b). imprimir a mensagem, apenas se x no tiver sido inicializado com null.
(c). imprimir a mensagem, independente do valor de x.
(d). gerar um erro de compilao.
(e). compilar, mas nunca imprimir a mensagem.
Soluo:
Para resolvermos a referida questo preciso saber que, em Java, o operador de adio (+)
tem precedncia maior que os operadores relacionais de (des)igualdade (!= e ==). Alm
disso, o operador + pode ser utilizado tambm para a concatenao de strings, que o
caso da nossa questo. Pronto, agora ns j temos condies de resolver a questo.
Pelo enunciado, extramos que x uma string inicializada, isto , uma string de tamanho N, onde N pode ser maior do que 0 (zero), se x possuir algum contedo, ou N pode ser
igual a 0 (zero), se x for nula.
Independentemente do contedo de x, o lado direito do operador != produzir uma string
com o tamanho N + 1. Isto , a string concatenada possuir tamanho, e obviamente, contedo, diferente da original (x), o que sempre satisfar a condio de desigualdade existente
no
if.
(alternativa
C).
Pgina 31 de 51
www.handbookdeti.com.br
15.
Volume questes de TI
import java.io.*;
class ClassX
{
private int size;
private int[] arrayX;
private int x;
public ClassX(int s)
{
size = s;
arrayX = new int[s];
x = -1;
}
public void Met1(int p)
{ arrayX[++x] = p; }
public int Met2()
{ return arrayX[x]; }
public int Met3()
{ return arrayX[x]; }
public boolean Met4()
{ return (x == -1); }
}
class Algoritmo {
static int theN;
static int theA;
static ClassX theS;
public static void main(String[] args) throws IOException {
System.out.print(Fornea um valor: );
theN = getInt();
MetX();
System.out.print(Resultado : + theA);
}
public static int getInt() throws IOException {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return Integer.parseInt(s);
}
public static void MetX(){
Pgina 32 de 51
www.handbookdeti.com.br
Volume questes de TI
Soluo:
ClassX tem trs
x ), que usam o operador de acesso private. A varivel size e x so
varivel arrayX um vetor do tipo inteiro. Alm disso, a classe ClassX
arrayX
do tipo inteiro e a
mtodo
Met2() ;
p na posio x
Met1() ;
parmetro
do
arrayX.
A varivel
verica se o atributo
da classe
ClassX
igual a -1.
Algoritmo tem trs atributos (theN, theA e theS ) que usam o operador de acesso
static. A varivel theN e theA so do tipo inteiro e a varivel theS do tipo da classe ClassX.
Alm disso, a classe ClassX possui 3 mtodos que so:
A classe
public static void MetX(): este mtodo possui dois laos de repetio. Um lao faz
atribuies ao vetor arrayX do objeto theS da classe ClassX. Os valores atribudos ao
arrayX so passados um por um como parmetro para o mtodo Met1(). O segundo
lao faz um somatrio dos valores atribudos ao vetor arrayX do objeto theS da classe
ClassX. Alm disso, inicializa a varivel theA com o valor 0;
public static void main(String[] args):
o mtodo
main
main
Pgina 33 de 51
www.handbookdeti.com.br
ClassX
O construtor da classe
size :
Volume questes de TI
recebe o valor passado como parmetro para o construtor (neste programa, quando
x = -1 :
Como pode ser observado, as variveis e os mtodos da classe Algoritmo esto denidos como
static.
um atributo como
static,
static.
Quando se dene
static,
theN
getInt(). Como
theN.
o valor 4 a varivel
MetX(),
acima.
arrayX[0] =
arrayX[1] =
arrayX[2] =
arrayX[3] =
theN = 0;
4,
3,
2,
1,
x
x
x
x
= 0 e
= 1 e
= 2 e
= 3 e
theN
theN
theN
theN
= 4;
= 3;
= 2;
= 1;
theA
theA
theA
theA
MetX()
= 1;
= 3;
= 6;
= 10.
A est correta.
Pgina 34 de 51
www.handbookdeti.com.br
16.
Volume questes de TI
Soluo:
(A) ERRADA
O operador instanceof determina se um tipo particular de objeto de uma determinada
classe, ou seja, o instanceof compara um objeto para um tipo (classe) especicado. Voc
pode us-lo para testar se um objeto uma instncia de uma classe ou uma instncia de
uma subclasse, ou uma instncia de uma classe que implementa uma interface especca.
O operador verica se uma referncia de objeto uma instncia de um tipo, e retorna
um valor booleano. A forma geral de uso do operador : <objeto> instanceof <classe>,
que retornar verdadeiro para os objetos instanciados a partir da classe avaliada. Note que
instanceof sempre retornar falso se <objeto> nulo.
(B) ERRADA
Java uma linguagem fortemente tipada.
tipo declarado. Existem oito tipos primitivos em Java. Quatro deles so tipos de nmeros
inteiros, dois so tipos nmeros de ponto utuante, um tipo boolean (intervalo de valores
0 ou 1) e um o tipo de caracteres char, usado para unidades de cdigo no esquema de
codicao Unicode.
Os tipos de nmeros inteiros servem para nmeros sem parte fracionaria, sendo permitido
valores negativos. O Java fornece os quatro tipos de nmeros inteiros a seguir:
Intervalo de Valores
int
4 bytes
-2,147,483,648 a 2,147,483,647
short
2 bytes
long
8 bytes
-9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
byte
1 byte
-128 a 127
Pgina 35 de 51
www.handbookdeti.com.br
Volume questes de TI
Tipo
Armazenamento Necessrio
Intervalo de Valores
oat
4 bytes
double
8 bytes
+/-1.7E-308 a +/-1.7E+308
O tipo char representa todo o conjunto de caracteres denidos no cdigo de caracter Unicode que usado para denir a extenso das possibilidades de caracteres alfanumricos e
smbolos. O cdigo UNICODE dene que cada caractere tenha 2 bytes.
O tipo primitivo booleano o tipo de dados mais simples da linguagem Java.
Ele pos-
sui apenas dois valores, um correspondente a verdadeiro e outro a falso. O tipo boolean
tipicamente usado como resultado de expresses condicionais como variveis identicadoras
de estado.
(C) ERRADA
Como pode ser observado na tabela que apresenta os tipos de nmeros inteiros acima, o
intervalo que o tipo de nmeros inteiro pode assumir -2,147,483,648 a 2,147,483,647.
(D) ERRADA
Java suporta comandos condicionais como seleo e laos para determinar o controle do
uxo do programa. Java dene os comandos de seleo (condicionais) if-else e switch, alm
desse, a linguagem Java determina comandos de repetio (laos ou loop) que so: while,
for e do-while. Estas estruturas de controle utilizam os smbolos delimitadores
(chaves)
Repetio
Repetio
if(<condio>)
Seleo
switch (<opo>)
Seleo
for( <condio>)
while(<condio>)
do
Repetio
<comando1>
case <const1|var1> :
<comando1>
<comando1>
<comando1>
<comandon>
case <const2|var2> :
<comandon>
<comandon>
<comandon>
else
while(<condio>);
{
<comando1>
<comandon>
}
Pgina 36 de 51
www.handbookdeti.com.br
Volume questes de TI
Embora o conceito de converso seja razoavelmente simples, o uso complicado pelo fato
de que Java tem oito tipos primitivos e vrios tipos de objeto. H trs formas de casting na
linguagem Java:
Casting entre tipos primitivos, como por exemplo: int para oat ou para double;
Casting de uma instncia de uma classe para uma instncia de outra classe;
Como apresentado, realmente o tipo primitivo boolean da linguagem Java no pode ser um
dos operandos da operao de casting, fazendo a assertiva E como correta.
Pgina 37 de 51
www.handbookdeti.com.br
17.
Volume questes de TI
O que fazer para forar a coleta de lixo de um objeto, em Java? Indique a opo correta.
(a). Invocar nalize().
(b). Remover todas as referncias ao objeto.
(c). Invocar Runtime.gc().
(d). Invocar System.gc().
(e). A coleta de lixo no pode ser forada.
Soluo:
No Java, ao contrrio de algumas linguagens como o C, no necessrio que o programador
se preocupe com a vida de um objeto, se responsabilizando em liberar espaos de memria
antes que ela esgote. O mecanismo de coleta de lixo (garbage
collection )
coletor de lixo logo antes que o objeto seja destrudo. til quando precisamos liberar alguns recursos anteriormente efetivao da eliminao. Por exemplo, se precisarmos fechar
uma conexo antes da destruio do objeto, isso ser possvel denindo o mtodo nalize()
de tal maneira que realize a tarefa de fechar a conexo.
Removendo todas as referncias do objeto, possibilitaremos que ele seja destrudo pelo coletor de lixo, mas essa destruio ocorrer em algum ponto especco de sua execuo, que
iniciada ao bel-prazer da JVM (Java Virtual Machine). Quando a JVM decidir que
hora de execut-lo, ele ser executado, pois deve ser usado com inteligncia devido aos altos
recursos computacionais que so exigidos.
No possvel forar a execuo do coletor de lixo via programao no Java.
Os mto-
dos indicados nas alternativas (C) e (D) apenas noticam JVM que a aplicao gostaria
que o coletor de lixo fosse executado, mas no garantem que ele realmente ser executado
imediatamente.
Dado o exposto, sabemos que a execuo do coletor de lixo no pode ser forada e, portanto,
a alternativa correta a alternativa
(E).
Pgina 38 de 51
www.handbookdeti.com.br
18.
Volume questes de TI
Usurio,
Banca: ESAF
Instituio: Controladoria-Geral da Unio (CGU)
Cargo: Analista de Finanas e Controle - Tecnologia da Informao / Desenvolvimento de
Sistemas de Informao
Ano: 2008
Questo: 24
A linguagem Java possui uma API (Application Program Interface) que disponibiliza pacotes e classes com diversas funcionalidades para auxiliar no desenvolvimento de aplicaes.
O pacote que contm classes que auxiliam na criao de interfaces de usurio, incluindo
tratamento de grcos e imagens, denominado
(a). java.util.
(b). java.applet.
(c). java.graphic.
(d). java.image.
(e). java.awt.
Soluo:
(A) INCORRETA
O pacote java.util prov classes que tratam de colees, eventos, data e hora, internacionalizao, e classes de utilidade: um tokenizador, um gerador de nmeros aleatrios e um
vetor de bits, no tendo qualquer relao com interfaces grcas.
(B) INCORRETA
O pacote java.applet, da distribuio padro do Java, usado para a criao de applets
Java. Um applet Java uma aplicao fornecida aos usurios em formato de bytecode Java
e so normalmente executados em navegadores com o intuito de prover interatividade a
aplicaes web. Os applets Java so normalmente escritos na linguagem Java, mas nada os
impede de serem escritos em linguagens que possuam compiladores para bytecode da Java
Virtual Machine (JVM), como Jython, Ruby ou Eiel.
Um exemplo de cdigo de applet Java exibido abaixo:
import java.applet.Applet;
import java.awt.*;
public class HelloWorld extends Applet {
public void init() { }
public void stop() { }
public void paint(Graphics g) {
g.drawString("Hello, world!", 20,10);
}
}
Sendo salvo como HelloWorld.java e compilado, o seguinte trecho HTML capaz de carreglo:
Pgina 39 de 51
www.handbookdeti.com.br
Volume questes de TI
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Um exemplo de applet Java</h1>
<p><applet code="HelloWorld.class" width="200" height="40">
Aqui deveria aparecer o string "Hello World".</applet></p>
</body>
</html>
Aps a compilao e o carregamento em um navegador, este applet exibir a string Hello,
world!.
Como o pacote java.applet prov uma forma para criao de applets Java e no prov,
necessariamente, funcionalidade para criao de interfaces de usurio, java.applet no a
resposta correta.
(C) INCORRETA
No existe pacote java.graphic na distribuio do J2SE e, portanto, esta alternativa est
incorreta.
(D) INCORRETA
No existe pacote java.image na distribuio do J2SE e, portanto, esta alternativa est
incorreta.
(E) CORRETA
O pacote java.awt fornece classes para criao de interfaces de usurio e desenho de grcos
e imagens na tela. O exemplo de applet exibido acima faz uso, inclusive, do pacote awt para
exibio da string Hello, world! na janela do navegador. Seu resultado exibido na Figura
3 e, por tratar de interfaces grcas, essa a alternativa que responde corretamente a esta
questo.
Pgina 40 de 51
www.handbookdeti.com.br
19.
Volume questes de TI
Um dos aprimoramentos feitos na linguagem Java foi a introduo da reexo. Com relao
a esse recurso, incorreto armar que
(a). a classe Method do pacote java.lang.reect decodica informaes de modicador
sobre classes, variveis e mtodos.
(b). o uso da reexo se torna mais til quando se est trabalhando com serializao
de objeto.
(c). a classe Field do pacote java.lang.reect gerencia e localiza informaes sobre
variveis de classe e de instncia.
(d). por meio da reexo, um programa Java pode carregar uma classe sobre a qual
ele nada conhece, encontrar as variveis, mtodos e construtores dessa classe e
trabalhar com eles.
(e). a reexo necessria com o uso de JavaBeans, em que a capacidade de um objeto
consultar outro a respeito do que ele pode fazer til ao se criar aplicativos mais
complexos.
Soluo:
A linguagem de programao Java surgiu de um projeto da empresa Sun Microsystems em
1995 com a inteno de possibilitar a programao de qualquer equipamento eletrnico dotado de um microprocessador. Com o slogan Write once, run everywhere (programe um
vez, execute em qualquer lugar), buscou-se (e ainda busca-se) ilustrar um dos maiores benefcios desta linguagem que tem como caracterstica marcante a possibilidade de criao de
cdigo portvel (bytecodes).
Desde sua concepo e popularizao, a Java vem evoluindo e ampliando seus recursos,
ao mesmo tempo que as mquinas virtuais (JVM Java Virtual Machine) tm se tornado
mais ecientes. Um dos aprimoramentos da linguagem foi a introduo da reexo.
Reexo (ou introspeco) a capacidade de um programa investigar e avaliar caractersticas sobre si mesmo. comumente utilizada por programas que precisam examinar ou
modicar (em tempo de execuo) o comportamento de aplicaes que estejam executando
na JVM. Desta forma, um programa Java pode carregar uma classe sobre a qual nada conhece, encontrar as variveis, os mtodos e os construtores dessa classe, e utiliz-los.
O pacote java.lang.reect da API Java proporciona classes e interfaces para se obter informaes reetidas a respeito de classes e objetos.
exemplo, fornece informaes sobre mtodos de uma classe ou de uma interface, alm de
permitir o acesso dinmico a tais mtodos. Com isso, pode-se, para cada mtodo examinado,
vericar os modicadores, o nome do mtodo, o tipo de retorno, os parmetros do mtodo e
as excees que o mtodo pode lanar. Semelhantemente, atravs da classe Field do mesmo
pacote, possvel obter dados e informaes sobre os atributos membros da classes, como
Pgina 41 de 51
www.handbookdeti.com.br
Volume questes de TI
A Serializao
classe Field e atravs da classe Class que se obtm informaes sobre as classes.
As demais armaes esto de acordo com a teoria exposta.
questo encontra-se no item a).
Pgina 42 de 51
www.handbookdeti.com.br
20.
Volume questes de TI
O mtodo
testDescontoValido() invocado pelo framework de testes automaticamente quando os testes so executados, para exercitar o mtodo descontoValido() da classe Produto. O mtodo
assertEquals gera um junit.framework.AssertionFailedError quando os valores de seus argumentos so diferentes entre si.
01 package br.com.exemplo.estoque;
02
03 public class Produto
04
05
06
07
08
09
this.preco = preco;
10
this.precoMinimo = precoMinimo;
11
12
13
14
double precoComDesconto;
15
16
17
18
Pgina 43 de 51
www.handbookdeti.com.br
Volume questes de TI
01 package br.com.exemplo.estoque;
02
03 import org.junit.Test;
04 import static org.junit.Assert.*;
05
06 public class ProdutoTest
07
08
@Test
09
10
11
12
13
System.out.println(caderno);
14
15
16
assertEquals(resultadoEsperado, resultado);
17
18
System.out.println(caneta);
19
20
resultado = caneta.descontoValido(percentual);
21
assertEquals(resultadoEsperado, resultado);
22
23
Soluo:
(A) ERRADA
Em Java, existem 3 (trs) tipos de comentrios:
/** Este o terceiro tipo de comentrio, muito utilizado para documentao web */
(B) ERRADA
Esta uma confuso muito comum em Java. Na verdade, o cdigo
import org.junit.Test
utilizado para importar apenas a classe Test a m de que a classe ProdutoTest possa
acessar os seus mtodos pblicos (caso existam).
A classe ProdutoTest somente descenderia da classe Teste se ela fosse declarada utilizando-se
Pgina 44 de 51
www.handbookdeti.com.br
extends
Volume questes de TI
riveis e campos da superclasse (classe pai) Test seriam herdadas pela classe ProdutoTest.
(C) CORRETA
Um construtor determina como um objeto inicializado pela criao de uma nova instncia de uma classe com os parmetros especicados. Podemos trat-lo como um mtodo
especial: com nome igual ao da classe; sem tipo de retorno (
void);
e no herdado pelas
subclasses.
Caso voc decida em no declarar um construtor em uma classe, Java automaticamente
fornecer um construtor default que no requer nenhum argumento. O construtor default
simplesmente chama o construtor da superclasse, denominado
public),
um mtodo, pblico (
protected.
Isso per-
org.junit.Assert.
Pgina 45 de 51
www.handbookdeti.com.br
21.
Volume questes de TI
(a). I e III
(b). I e IV
(c). II e III
Pgina 46 de 51
www.handbookdeti.com.br
Volume questes de TI
(d). III e IV
(e). IV e V
Soluo:
(I) ERRADA
Observe pelo diagrama que Produto uma classe abstrata, portanto no possvel aplicar
um construtor sobre ela. Em outras palavras, ela no pode ser instanciada. Ns precisamos
assegurar que o objeto a ser construdo pertence a uma classe concreta da classe abstrata
Produto, no caso, ou a classe Veculo ou a classe Peca.
seguinte cdigo:
Produto p = new Veculo();
(II) ERRADA
Note que apesar da varivel s ser uma instncia da classe Veiculo, ela foi automaticamente
convertida (upcast ) no momento da sua declarao para a interface Seguravel. Desse modo,
esse objeto poder acessar apenas os mtodos que foram denidos na interface, no caso, o
mtodo calculaPremio, e no o mtodo setNome.
(III) CORRETA
Semelhante alternativa anterior, porm com um converso (downcast ) explcita entre a
interface Seguravel e a classe que a implementa (Veiculo). Este tipo de converso permite a
uma classe pai, no caso a interface Seguravel, acessar todos os mtodos da classe lha.
Note, tambm, que s uma instncia da classe Veiculo, e por isso no foi necessrio inserir
mecanismos que vericam o tipo do objeto antes da converso (RITT, do ingls
Type Identication ).
Em Java isso alcanado por meio do operador
instanceof.
Run-Time
rador garante que as converses so sempre seguras, no permitindo que um objeto seja
convertido para uma classe invlida.
(IV) CORRETA
No trecho de cdigo so realizadas duas converses:
1.
Upcast
Mais uma vez lembre-se que uma converso para uma classe (ou interface) pai feita
implicitamente;
2.
Downcast
abstrata Produto. Observe, nesse caso, que a converso realizada para a classe pai
(Produto) da classe instanciada (Peca), o que perfeitamente aceitvel uma vez que
toda Peca um Produto.
Aps a realizao do
downcast
invocado.
Pgina 47 de 51
www.handbookdeti.com.br
Volume questes de TI
(V) ERRADA
No trecho de cdigo, h uma tentativa de realizar um
cast
representada por v, para a classe Peca. Tal tipo de cast (entre classe irms) produzir um
erro de compilao, pois as referidas classes possuem mtodos completamente diferentes e
no relacionados.
Pgina 48 de 51
www.handbookdeti.com.br
22.
Volume questes de TI
Assuntos relacionados: Linguagens de Programao, Orientao a Objeto, Herana, Classes e Superclasses, Java, Modicadores de Acesso,
Banca: ESAF
Instituio: Agncia Nacional de guas (ANA)
Cargo: Analista Administrativo - Tecnologia da Informao e Comunicao / Desenvolvimento de Sistemas e Administrao de Banco de Dados
Ano: 2009
Questo: 29
Em Java, para que um mtodo de uma superclasse no seja sobrescrito em suas subclasses,
aplica-se o modicador
(a). static
(b). public
(c). nal
(d). protected
(e). abstract
Soluo:
Esta uma questo que aborda como a linguagem Java aborda um dos principais conceitos
da programao orientada a objetos a herana. No entanto, antes de explicarmos o que
herana, vamos rever os conceitos de classe, objeto, classe, atributos e mtodos.
Um objeto pode ser denido como uma entidade com limites bem denidos e um signicado para a aplicao. Tais entidades representar elementos fsicos (como um carro, uma
casa, um cliente etc), elementos conceituais (como uma venda, uma matrcula etc), elementos de software (uma lista, um array, um arquivo etc). Uma classe, por sua vez, consiste da
descrio de um grupo de objetos com propriedades e comportamento idnticos entre si.
As propriedades da qual so representadas pelos atributos dos objetos. Um objeto da classe
casa, por exemplo, poderia ter como propriedades 2 portas, 4 janelas, 100 metros quadrados
de rea, entre outras. A combinao de valores dos atributos de um determinado objeto o
que determina o seu estado. Para alter-lo, necessrio utilizar os mtodos. Vamos agora
ao conceito de herana.
A herana um mecanismo que permite criar novas classes a partir de classes j existentes,
aproveitando-se das caractersticas (atributos e mtodos) destas. Ou seja, com a herana
possvel criar classes derivadas (subclasses) a partir de classes bases (superclasses).
As subclasses herdam todos os atributos e mtodos de suas superclasses.
Entretanto, as
subclasses no esto limitadas s caractersticas herdadas de sua superclasse, uma vez que
nas subclasses podem existir atributos e mtodos que no existem na superclasse.
Em alguns casos, as subclasses tambm podem redenir os mtodos herdados, oferecendo
implementaes especializadas para os mtodos quando necessrio. Essa tcnica tambm
conhecida como sobrescrita ou
override.
Recordados alguns dos conceitos bsicos sobre orientao a objetos, vamos agora falar um
pouco sobre as alternativas trazidas na questo static, public, nal, protected e abstract
Pgina 49 de 51
www.handbookdeti.com.br
Volume questes de TI
atributo podem ser acessados somente dentro do pacote em que esto contidos.
Por m, temos o modicador de acesso abstract, que servem para declara mtodos ou classes
abstratas. Para recapitulao, mtodos abstratos so aqueles que no so implementados
nas classes, cando esta tarefa a cargo das subclasses.
Pgina 50 de 51
www.handbookdeti.com.br
Questo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Pgina 51 de 51
Volume questes de TI
Resposta
B
E
A
E
A
A
E
E
E
A
B
A
D
C
A
E
E
E
A
C
D
C
Handbook de TI
Alm do Gabarito
ndice Remissivo
.NET, 5
Algoritmos, 25
Bytecode, 17
Classes e Superclasses, 49
Desenvolvimento de Software, 46
Diagrama de Classes, 29, 46
EAR, 4
EJB, 4
Garbage Collection, 38
Heap, 19
Herana, 49
Interface com Usurio, 39
J2EE, 4, 5, 7, 19
JAR, 4
Java, 11, 13, 15, 17, 19, 21, 24, 25, 27, 29, 31,
32, 35, 38, 39, 41, 43, 49
Java Transaction API (JTA), 7
JavaServer Pages (JSP), 11
JEE, 5
Linguagens de Programao, 11, 15, 24, 25, 32,
35, 39, 41, 49
Mquina Virtual Java (JVM), 17, 19
Modicadores de Acesso, 49
MVC, 5, 7
Orientao a Objeto, 49
Pacotes Java, 39, 41
Programao, 38
Servidor de Aplicaes, 4, 5, 19
Sobrecarga de Mtodo, 21
Sobrescrita de Mtodo, 21
Teste de Mesa, 27
Tratamento de Exceo em Java, 15
UML, 29
WAR, 4
52