Lista de Exercícios 3 Curso de Java Básico

Propaganda
Lista de Exercícios 3 Curso de Java Básico
Entrega para o dia 20/07
1. Classpath e Packages
Dada a seguinte árvore windows de diretórios:
c:
/util
/classes
/com
/util
/hp
/classes
/us
/tools
/ibm
/db2
/classes
/com
/ibm
/connection
a. Como deveria ser setado o classpath para que o java encontre as seguintes
classes:
com.util.Utilities e com.ibm.DataSource
b. Como deveria ser setado o classpath para que o java encontre as seguintes
classes:
com.ibm.connection.Conn e com.ibm.DataSource
c. Como deveria ser setado o classpath para que o java encontre as seguintes
classes:
com.ibm.connection.Conn , us.Utils, us.tools.Tool , com.ibm.DataSource ,
com.util.Utilities e com.Test (Test está sob /util/classes/)
d. Suponha que eu possua os seguintes arquivos na mesma árvore de diretórios
mostrada acima:
c:/ibm/db2/classes/com/Util.java que representa a classe com.Util da IBM
c:/util/classes/com/Util.java que representa a classe com.Util da HP
e dada a declaração da classe abaixo:
package mypackage;
import com.Util;
public class MyClass {
Util util = new Util();
}
e. Qual classe que instanciaria o objeto util (IBM ou HP) utilizando o seguinte
classpath:
-classpath c:/ibm/db2/classes
f. Qual classe que instanciaria o objeto util (IBM ou HP) utilizando o seguinte
classpath:
-classpath c:/util/classes
g. Qual classe que instanciaria o objeto util (IBM ou HP) utilizando o seguinte
classpath:
-classpath c:/util/classes;c:/ibm/db2/classes
h. Dadas as seguintes classes:
c:/ibm/db2/classes/com/ibm/Empregado
c:/util/classes/com/hp/Empregado
Escreva um Contratador que contrate um empregado da IBM, e um
empregado do HP (Ou seja uma classe Contratador que agregue um objeto
com.ibm.Empregado e um com.hp.Empregado)
2. Exceptions
a. Defina o que é uma exceção.
b. Qual a diferença entre uma exceção e um erro.
c. Qual a diferença entre checked e unchecked exceptions
d. Qual será o resultado da execução abaixo:
...
try{
if (1==1)
throw new Exception(“”);
System.out.println(“try”);
}catch(Exception e){
System.out.println(“Exceção”);
}
...
f. Qual será o resultado da execução abaixo:
...
try{
if (1==1)
throw new NullPointerException();
System.out.println(“try”);
}catch(Exception e){
System.out.println(“Exceção”);
}
...
g. Qual será o resultado da execução abaixo:
...
try{
if (1==1)
throw new NullPointerException();
System.out.println(“try”);
}catch(Exception e){
System.out.println(“Exceção”);
}finally{
System.out.println(“Finalizando”);
}
...
h. Qual será o resultado da execução abaixo, dado que ComplexException extende
BasicException que extende Exception:
...
try{
if (1==1)
throw new BasicException();
System.out.println(“try”);
}catch(ComplexException e){
System.out.println(“ComplexaExceção”);
}catch(Exception e){
System.out.println(“Exceção”);
}finally{
System.out.println(“Finalizando”);
}
...
i. Qual será o resultado da execução abaixo, dado que ComplexException extende
BasicException que extende Exception:
...
try{
if (1==1)
throw new BasicException();
System.out.println(“try”);
}catch(ComplexException e){
System.out.println(“ComplexaExceção”);
}catch(BasicException e){
System.out.println(“BasicaExceção”);
}finally{
System.out.println(“Finalizando”);
}
...
j. Responda se o código abaixo compila ou não, e por que?
public class Control {
public static void main(String[] args) {
Control c = new Control();
c.doSomeRiskyAction();
}
}
public void doSomeRiskyAction() throws Exception {
}
h. O que poderia ser feito para que ele compile (não vale tirar o throws Exception
do “método arriscado”)?
3. Referência
a. Qual é o resultado do programa:
public class Produto {
private String nome;
public static void main(String[] args) {
Produto p1 = new Produto();
p1.setNome("p1");
Produto p2 = p1;
Produto p3 = p2;
System.out.println(p2.getNome());
p1.setNome("novoP1");
System.out.println(p3.getNome());
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
b. O que deveria ser feito para que p3 mantivesse o valor inicial de p1 (ou seja
nome igual a p1.)
4. Abstract
a. Defina o que é uma classe abstrata.
b. Crie uma classe abstrata Carro que implemente o método String buzinar(); e
defina os métodos abstratos int getPreco(); e String getMarca();
c. Implemente duas classes que extendam da classe Carro, as classes Fusca e
Limosine, implemente os métodos necessários de acordo.
5. Interface
a. Defina o que o modificador “interface” causa.
b. Qual a diferença entre uma interface e uma classe abstrata.
c. Crie a interface Carro com os métodos String buzinar();, String getMarca(); e
int getPreco(); diga qual a diferença desta para a classe criada no exercício 4a.
d. Implemente as classes Fusca e Limosine que obedeçam ao contrato proposto
pela classe automóvel.
e. Implemente a classe Estrada que possua o método int valorPedagio(Carro c); o
qual retorna o valor do pedágio para o carro passado no parametro c. O preço do
pedágio será 10% do preço do carro.
f. Adicione o método boolean temFrigoBar(); à classe Limosine que retorna true.
Adicione o método boolean precisaRepararFrigobar(Carro c); à classe Estrada, o
qual retorna true se a instância for uma Limosine.
dica: use o comparador instanceof
Download