INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO – IFMA / CAMPUS BACABAL CURSO: INFORMÁTICA – INTEGRADO IV / DISCIPLINA: PROG. ORIENTADA A OBJ. PROFESSOR: ALAN SANTOS ALUNO: __________________________________________________________ 2ª AVALIAÇÃO 1. Defina superclasse e subclasse e dê exemplos. Superclasse é a classe base (ou classe mãe) que é estendida por outra com objetivo de reutilizar seus membros (varáveis e métodos). A subclasse é a classe filha, isto é, a que estendeu a superclasse. Exemplo: Carro é um Veículo; Moto é um Veículo, portanto ambas são subclasses da superclasse Veiculo. 2. O que é uma classe abstrata? Classe abstrata é uma classe que não tem instâncias. Uma classe abstrata é escrita com a expectativa de que suas subclasses concretas acrescentem algo à sua estrutura e comportamento, normalmente através da aplicação de suas operações abstratas. 3. Em Java, para que se usa o operador super? Para o mesmo que se usa this. Para ter uma referência para um novo objeto da superclasse. Através do super a classe-filha tem acesso a todos os atributos e métodos da classemãe, mesmo que eles sejam private. Para reusar código da classe-mãe na classe-filha. Através do super a subclasse tem acesso a construtores e métodos da superclasse. Serve para sobrescrever construtores da superclasse. 4. Em Java, para uma classe herdar outra classe deve-se usar a palavra reservada: a) extends b) inherit c) implements d) protected e) instanceof 5. Com base na classe Pessoa abaixo, reutilizando-a por meio de herança, crie uma classe Aluno, que declare: a) uma variável de instância matrícula; b) um construtor que inicialize o nome e a matrícula com base em seus parâmetros; c) um método toString() que retorne uma String contendo a matrícula e o nome do aluno. class Pessoa { private String nome; public Pessoa(String nome) { this.nome = nome; } public String toString() { return "Nome: " + nome; } } class Aluno extends Pessoa { private int matricula; public Aluno(String nome, int matricula) { super(nome) this.matricula = matricula; } public String toString() { return super.toString() + "\nMatrícula: " + matricula; } } 6. Em Java, para que um método de uma superclasse não seja sobrescrito em suas subclasses, aplica-se o modificador: a) static. b) public. c) final. d) protected. e) abstract. 7. a) b) c) d) Em relação a linguagem de programação Java é correto afirmar que: Todos os métodos de uma classe abstrata devem ser abstratos. Uma classe pode ter várias superclasses, mas pode implementar apenas uma interface. Não é possível instanciar uma interface, mas é possível instanciar uma classe abstrata. Os descendentes não-abstratos de uma classe abstrata não precisam implementar todos os seus métodos abstratos. e) Uma classe que implementa uma interface e deixa de definir algum método dessa interface deve ser declarada como abstrata. 8. Marque a única alternativa FALSA sobre interfaces (conceito de orientação a objetos) em Java: a) Interfaces em Java são representadas usando classes abstratas. b) Uma classe pode implementar várias interfaces e definir outros métodos também. c) Uma classe pode herdar uma única classe, mas pode implementar várias interfaces. d) Implementar interfaces, assim como herdar classes, possibilita o polimorfismo. e) Uma interface só pode ter assinatura de métodos e atributos constantes. 9. a) b) c) Polimorfismo é a multiplicidade de atributos de determinada classe. a propriedade de um diagrama de classes ter múltiplas classes possuidoras de atributos. a habilidade de um atributo ou variável poder identificar instâncias de classes com atributos dependentes. d) a propriedade de uma instrução poder apontar para múltiplos objetos de uma mesma classe sem implicações de desempenho. e) a habilidade pela qual uma única operação ou nome de atributo pode ser definido em mais de uma classe e assumir implementações diferentes em cada uma dessas classes. 10. Considere a hierarquia de classes: MeioDeLocomocao é superclasse de Bicicleta e Moto; Moto implementa a interface Motorizado. Sendo assim, considerando o fragmento de código em Java abaixo, O que acontecerá ao tentar compilar e executar esse código? Por quê? MeioDeLocomocao meio; Bicicleta b1, b2; Moto m1, m2; Motorizado motor; b1 = new Bicicleta(); meio = b1; b2 = (Bicicleta)meio; m1 = new Moto(); motor = m1; m2 = (Moto)meio; O código compilará sem erros, porém ao executar o código ocorrerá um erro em tempo de execução na última linha. Esse erro é devido ao fato de não ser possível converter o objeto referenciado pela variável meio, que é do tipo MeioDeLocomocao, mas guarda um objeto do tipo Bicibleta, para atribui-lo à variável m2 que é do tipo Moto