Programação Orientada a Objetos - Exercício 2ª Uniade 1. Construa as classes necessárias para que a classe “exercício” seja válida. A característica de encapsulamento deverá ser obedecida. Considere que cada classe terá o mínimo de atributos possíveis. public class exercicio{ public static void main(String a[ ]){ Publicacao a = new Publicacao (“Revista Científica”, “UERN”); // Dados informados: Título, Autor Publicacao b = new Livro( “Java Como Programar”, “Deitel”, 8576050196); // Dados informados: Título, Autor, ISBN; Livro c = new Livro( “Core Java”, “Hostman”, 0132354764); // Dados informados: Título, Autor, ISBN; System.out.println( a.getTitulo( ) + a.getAutor( )); System.out.println( c.getTitulo( ) + c.getAutor( ) + c.getISBN()); System.out.println(a); System.out.println(b); System.out.println(c); // Imprime o valor de todos os atributos de a // Idem para b // Idem para c } } 2. Informe a saída do programa abaixo, de acordo com as seguintes classes. public class Exercicio { public static void main( String args[ ] ){ Filho a = new Filho(“Joao”); Filho b = new Filho("Joaquim"); Pai c = new Pai("Francisco"); c.setA(“Maria”); System.out.println( c.getA( ) ); a.setX(10); b.setX(5); a.setX(4); System.out.println(b.getX()); Filho d = b; d.setA("Haroldo"); b.setA("Mariano"); System.out.println( b.getA( ) ); imprimeFilho(b); } public static void imprimeFilho(Filho a){ System.out.println(a); } } class Pai{ private String a; public Pai(String s){ a = s; System.out.println("Construtor Pai - 1");} public String getA( ){ return a; } public void setA(String a){ System.out.println ( a ); System.out.println ( this.a ); a = this.a; } public String toString() { return a; }; } class Filho extends Pai{ private static int x = 0; public Filho( String a){ super(a); System.out.println("Construtor Filho - 1"); } public static void setX(int p){ x = p; } public static int getX() { return x; } } 3. Sobre as classes acima descritas, responda: a. Além da utilização de referências para objetos da classe Filho, qual outra forma possível para acessar o método setX( )? b. O método setX( ) da classe Filho pode não ser estático? Comente. c. O método setA( ) da classe Pai pode ser estático? Comente. d. O método imprimeFilho( ) da classe Prova pode não ser estático? Comente. e. É correta a intanciação abaixo? Comente. Filho e = new Pai( “Maria”); f. O que aconteceria com as classes se a classe Pai fosse do tipo final? g. E o atributo x na classe Filho, o que aconteceria se fosse do tipo final? h. No método main, é possível enviar a referência “c” como parâmetro para o método imprimeFilho( )? Comente. 4. Descreva como o garbage collector atua. 5. Construa um programa que exemplifique a utilização de 5 diferentes métodos da classe String. 6. Construa um programa que exemplifique o uso da classe StringBuffer, mostrando alterações no conteúdo da mesma através da utilização dos métodos append e insert. 7. Por que podemos afirmar que uma String em Java é imutável? Qual o motivo para isso ter sido definido? 8. Qual a diferença entre instanciarmos strings em Java nas duas formas abaixo, em termos de quantidade de instâncias de memória? String x = “uern”; String x = new String(“uern”); 9. Qual a diferença entre compararmos duas strings java através do operador de igualdade e do método equals? 10. Construa uma classe abstrata “Moeda” com os métodos abstratos a seguir. Essa classe deve estar no pacote “exercicio.abstratas”. Métodos abstratos: double getValor( ), double getNome( ), double getValorEmDolar( ) 11. Construa as classes concretas “Real” e “Euro”, que herdam “Moeda”. Essas classes devem estar no pacote “exercicio”. 12. Construa uma classe que em um método main instancie as classes da questão anterior. Essa classe deve estar no pacote “exemplo.executar”. 13. Qual comando exato devemos usar para gerar um arquivo “.jar” contendo as classes das questões 10 a 12, sendo que a classe da questão 12 deva ser executada por padrão? 14. Crie, em uma pasta diferente da utilizada nas questões 10 e 11, a classe “Teste” que também instancia as classes dessas questões. Cite o comando necessário para compilar “Teste” sem necessidade de configurar a variável de ambiente “Classpath”. 15. Para utilizar a classe da questão 10 na questão 11, é obrigatório importá-la? Justifique. 16. Cite duas formas de importar a classe “Moeda” nas classes da questão 11. 17. Por que não é necessário importar o pacote da classe Integer quando a utilizamos em uma outra classe?