Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz /05/13. Questão: Total Pontos: Gráu:

Documentos relacionados
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Linguagem de Programação II Herança

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Herança e Polimorfismo

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos


Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

9 Classes Abstractas e Interfaces

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Atividade 08 - Utilizando Collections - List

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Nome do Aluno: Matrícula: Turma: Data: 08/04/2013

Linguagem de Programação II Implementação

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Universidade Federal de Uberlândia

Orientação a Objetos AULA 09

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Interfaces POO. Prof. Marcio Delamaro

Lição 11 Herança, polimorfismo e interfaces

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Programação OO em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Classe Abstrata e Interface

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Linguagem de Programação III

RESPOSTA: import java.util.arraylist; import java.util.list; class CarrinhoDeCompras2 { List<Produto> produtos;

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Programação Java (nível intermediário) 4. Polimorfismo

Herança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1

Programação Orientada a Objetos II

Programação Orientada a Objetos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Interfaces e Classes Abstratas

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Programação Orientada a Objetos Flávio de Oliveira Silva 144

Programação Orientada a Objetos

LÓGICA DE PROGRAMAÇÃO (JAVA) HERANÇA. Professor Carlos Muniz

Programação Orientada a Objetos Relacionamentos entre classes


UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

Linguagem de Programação II Implementação

DATA ACCESS OBJECT (DAO)

Coleções. João Paulo Q. dos Santos

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

A Relação de Subtipo e Tipos Genéricos

Instituto Federal de Educação, Ciência e Tecnologia do Ceará IFCE Programa Educacional Brasileiro de Desenvolvimento para ios BEPiD PROVA OBJETIVA

Computação II Orientação a Objetos

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Aula 08 Encapsulamento. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Quando um Auto-Relacionamento não é mais um Auto-Relacionamento

Programação Orientada a Objeto

Programação Orientada por Objectos 2007/2008

Linguagem de Programação. Diagrama de classes

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Collections Framework

Computação II Orientação a Objetos

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

AULA TEÓRICA 10. Tema 9. Interface. Tema 10. Recursividade

JUnit. Alexandre Menezes Silva Eduardo Manuel de Freitas Jorge

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

Computação II Orientação a Objetos

package heranca3; // classes podem receber os modificadores: nada ou public; abstract; e final class Pessoa implements InterPessoa{ String nome;

Palavras Reservadas da Linguagem Java

Conceitos de Interface; classes abstratas; Diagrama de sequencia, Diagrama de atividades, classes aninhadas e Listas dinâmicas

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

A classe ArrayList. IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

Programação Orientada a Objetos II Java Décima primeira aula

Universidade Estadual de Santa Cruz

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

4 Conceito de Herança

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Atributos e Métodos Estáticos

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

Linguagem de Programação Orientada a Objeto Coleções

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Classes abstratas: não podem ser instanciadas. Poderoso Mecanismo de Abstração:

Computação II Orientação a Objetos

Programação por Objectos. Java

Transcrição:

Computação II - Java - Prova 1 Prof. Adriano Joaquim de Oliveira Cruz - 2015/05/13 Questão: 1 2 3 4 5 6 Total Pontos: 20 15 15 10 10 30 100 Gráu: 1. Defina os termos listados a seguir: (a) (10 Pontos) Interface (b) (10 Pontos) Classe Abstrata Solução: Interface: Uma interface em Java define ações que devem ser obrigatoriamente executadas por uma classe. No entanto, cada uma das classes que implementam esta interface pode executar estas ações de forma diferente. Interfaces contém valores constantes ou assinaturas de métodos que devem ser implementados dentro de uma classe. Classe abstrata: Em linguagens de programação uma classe abstrata é uma classe genérica usada como base para criar classes específicas que seguem o protocolo da classe abstrata ou o conjunto de operações que ela suporta. Classes abstratas não podem ser instanciadas diretamente. Classes abstratas são úteis quando estamos criando hieraquias de classes que modelam a realidade porque elas permitem especificar um nível de funcionalidade invariante em alguns métodos, mas deixam a implementação de outros para a classe derivada. 2. (15 Pontos) Implemente a classe C mostrada na listagem 1 de modo que o código compile. Nenhum dos métodos pode retornar null. Observe que C é uma subclasse de Object e que ela implementa apenas as interfaces I1 e I2, isto não pode ser modificado! É possível definir classes adicionais, se for necessário.

Listagem 1: Listagem da Questão 2 abstract class A { abstract void m1(); interface I1 { int m2(int j); A m3(); interface I2 { void m4(object o); I2 m5(); public class C implements I2, I1 { // Escreva o seu código aqui. Solução: abstract class A { abstract void m1(); interface I1 { int m2(int j); A m3(); interface I2 { void m4(object o); I2 m5(); class Qualquer extends A { void m1() { public class C implements I2, I1 { Page 2

public void m4(object o) { public I2 m5() { return this; public int m2(int j) { return 0; public A m3() { return new Qualquer(); 3. (15 Pontos) Dado: interface Base { boolean m1(); byte m2 (short s); Marque todos os códigos que compilam. Justifique suas respostas. A. interface Base2 implements Base { B. abstract class Class2 extends Base { public boolean m1() { return true; C. abstract class Class2 implements Base { D. abstract class Class2 implements Base { public boolean m1() {return (true); E. class Class2 implements Base { boolean m1() {return false; byte m2(short s) {return 42; Page 3

Solução: SCch1ex1: C e D estão corretas. C é correta porque uma classe abstract não tem que implementar qualquer método da interface. D é correta porque o método está implementado corretamente. A está incorreta porque interfaces não implementam nada. B é incorreta porque classes não estendem interfaces. E está incorreta porque métodos de interface são implicitamente public, desta maneira os métodos sendo implementados devem ser públicos também. 4. (10 Pontos) Quais das opções abaixo declaram uma classe abstrata compilável corretamente. Justifique sua respostas. A. public abstract class Canine {public void speak(); B. public abstract class Canine {public void speak(){ C. public class Canine {public abstract void speak(); D. public class Canine abstract {public abstract void speak(); Solução: SCch1ex1: B está correta. Classes abstratas não precisam ter métodos abstratos. A está incorreta porque métodos abstratos devem ser marcador desta maneira. C está incorreta porque não é possível ter um método abstrato a menos que a classe seja abstrata. D é incorreta porque a palavra abstract deve vir antes do nome da classe. 5. (10 Pontos) Qual afirmação é verdadeira? Justifique sua resposta. A. X estende Y é correto se e somente se X é uma classe e Y uma interface. B. X estende Y é correto se e somente se X é uma interface e Y uma classe. C. X estende Y é correto se X e Y são ambos classes ou ambos interfaces. D. X estende Y é correto para todas as combinações de X e Y sendo interfaces e/ou classes. Page 4

Solução: A. Opção A é errada porque uma classe implementa uma interface e não estende. B. Opção B é errada porque interfaces não estendem classes. C. Opção C é correta. D. Opção D é errada considerando as respostas anteriores. Page 5

6. Considere o programa Java mostrado na listagem 2. Este programa testa as classes mostradas no diagrama de classes da Figura 1. Implemente as classes Turma e Aluno do diagrama. O valor de cada implementação é: (a) (15 Pontos) Aluno.java (b) (15 Pontos) Turma.java A saída do programa deve ter o seguinte formato: Codigo da turma MAB710 Media da turma 6.666666666666667 Maior nota 7.0 Melhores alunos[ Aluno [nome=ana, matricula=1143, nota=7.0], Aluno [nome=joao, matricula=1141, nota=7.0]] Listagem 2: Listagem da Questão 6 public class TestaTurma { public static void main(string[] args) { Turma mab = new Turma("MAB710"); Aluno a1 = new Aluno("Joao", "1141", 7.0); Aluno a2 = new Aluno("Paulo", "1142", 6.0); Aluno a3 = new Aluno("Ana", "1143", 7.0); mab.adicionaaluno(a3); mab.adicionaaluno(a2); mab.adicionaaluno(a1); System.out.println("Codigo da turma " + mab.getcodigo()); System.out.println("Media da turma " + mab.mediaturma()); System.out.println("Maior nota " + mab.maiornota()); System.out.println("Melhores alunos " + mab.melhoresalunos ()); Solução: public class Aluno { Page 6

-nome: String -matricula: String -nota: double Aluno +Aluno(nome:String,matricula:String,nota:double) +getnota(): double +setnota(nota): void +getnome(): String +setnome(nome:string): void +getmatricula(): String +setmatricula(matricula:string): void +tostring(): String Turma -codigo: String -listapresenca: ArrayList<Aluno> +Turma(codigo:String) +getcodigo(): String +setcodigo(codigo:string): void +adicionaaluno(aluno:aluno): void +tamanhoturma(): int +mediaturma(): double +maiornota(): double +melhoresalunos(): ArrayList<Aluno> +tostring(): String Figura 1: Diagrama de classes da questão 6 private String nome; private String matricula; private double nota; public Aluno(String nome, String matricula, double nota ) { super(); this.nome = nome; this.matricula = matricula; this.nota = nota; public double getnota() { return nota; public void setnota(double nota) { this.nota = nota; public String getnome() { return nome; public void setnome(string nome) { this.nome = nome; public String getmatricula() { return matricula; public void setmatricula(string matricula) { this.matricula = matricula; @Override Page 7

public String tostring() { return "\naluno [nome=" + nome + ", matricula=" + matricula + ", nota=" + nota + "]"; import java.util.arraylist; public class Turma { private String codigo; private ArrayList<Aluno> listapresenca; public Turma(String codigo) { super(); this.codigo = codigo; listapresenca = new ArrayList < Aluno >(); public String getcodigo() { return codigo; public void setcodigo(string codigo) { this.codigo = codigo; public void adicionaaluno(aluno aluno) { listapresenca.add(aluno); public int tamanhoturma() { return listapresenca. size(); public double mediaturma() { double media = 0. 0; for (Aluno a: listapresenca) { media += a.getnota(); return media/ listapresenca. size(); public double maiornota() { Page 8

double maior = 0. 0; for (Aluno a: listapresenca) { i f (a.getnota()>maior) maior = a.getnota(); return maior; public ArrayList<Aluno> melhoresalunos() { ArrayList<Aluno> melhores = new ArrayList<Aluno>() ; double maior = maiornota(); for (Aluno a: listapresenca) { i f (a.getnota() == maior) { melhores.add(a); return melhores; @Override public String tostring() { return "Turma [codigo=" + codigo + ", listapresenca =" + listapresenca + "]"; Page 9