Buscar

1a Lista De Exercicios java intermediario

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1ª Lista de Exercícios - Linguagem Java (Intermediário) 
Instruções: Para cada uma das questões, entenda, analise, elabore uma solução e a implemente em Java. 
Sempre que necessário pesquise no material didático fornecido, na bibliografia sobre o tema e na Web, ou 
solicite ajuda ao professor. 
class Pessoa { 
 private String nome; 
 public Pessoa(String nome) { 
 this.nome = nome; 
 } 
 public String toString() { 
 return "Nome: " + nome; 
 } 
} 
 
1. Com base na classe Pessoa acima, 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; e (c) um método toString() que retorne uma String contendo a matrícula e o nome do aluno. 
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; 
 } 
} 
 
2. Quais as formas de reuso de classes estudadas? Cite as principais diferenças e semelhanças e dê exemplos. 
Semelhanças: 
Delegação e Herança são formas de reuso de classes, permitindo a associação entre classes. 
 
Diferenças: 
Característica Delegação Herança 
Tipo Tem-um ou tem-vários É-um 
Implementação Declaração de variável de 
instância como variável de 
referência (o tipo é uma classe) 
Uso da palavra extends seguido 
do nome da superclasse 
Quantidade Pode haver várias delegações em 
uma classe 
Só pode haver uma superclasse 
direta para cada classe 
 
Exemplos: 
A classe Aluno herdou (ou estendeu) a classe Pessoa: Aluno é uma Pessoa. 
A classe Pessoa delegou (se associou) à classe String a manipulação dos caracteres no nome: Pessoa tem um 
nome. 
 
3. Quais são os quatro níveis de acesso e quais modificadores são usados para cada um? Com funcionam as 
restrições impostas por modificadores de acesso, quando a delegação é adotada? Exemplifique. 
Nível Modificador de Acesso Descrição 
Público Public Dá acesso irrestrito a partir de 
qualquer classe, em qualquer 
pacote. Se o pacote for outro, deve 
haver uma instrução import para a 
classe a ser usada ou o nome da 
classe deve ser completamente 
qualificado. 
Protegido protected Dá acesso irrestrito às classes do 
mesmo pacote e às classes filhas 
para acesso às variáveis herdadas. 
De Pacote ou padrão Não há modificador Dá acesso irrestrito às classes do 
mesmo pacote. 
Privado Private Restringe o acesso à própria classe. 
 
Quando há delegação, ou mesmo herança, os modificadores de acesso devem ser considerados em conjunto. 
Exemplos: 
Na classe Pessoa, o nome foi definido como privado e só pode ser acessado da própria classe Pessoa. Se 
tivesse sido definido como de pacote, isto é, sem nenhum modificador de acesso, poderia ser acessa a partir 
de todas as classes do mesmo pacote. Se tivesse sido declarado como protegido, poderia ser acessado da 
própria classe Pessoa e também de suas subclasses, como a classe Aluno, e das demais classes localizadas no 
mesmo pacote de Pessoa. Se tivesse sido definido como público, o acesso ao nome seria irrestrito. 
4. Aprofunde o estudo sobre delegação, dando um novo exemplo. 
Pessoa tem um Endereço; Veículo tem um Proprietário. 
5. Aprofunde o estudo sobre herança, dando um novo exemplo. 
Carro é um Veículo; Moto é um Veículo 
6. 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. 
 
7. O que podemos afirmar sobre construtores? Cite as principais diferenças e semelhanças de um construtor 
para um método convencional e dê exemplo. 
Trata-se de uma rotina executada quando um objeto é criado. 
Diferenças e Semelhanças: 
Característica Construtor Método 
Nome O mesmo da classe Qualquer nome válido 
Retorno Não tem (nem void) Qualquer tipo (primitivo ou classe) 
disponível 
Parâmetros Pode ter nenhum, um ou vários Pode ter nenhum, um ou vários 
Execução Uma vez para cada objeto Quantas vezes forem necessárias 
Acionamento Na criação de objetos com a 
palavra new ou a partir de outro 
construtor com as palavras this 
(construtor da própria classe) ou 
super (construtor da superclasse). 
De qualquer local de onde o acesso 
for permitido. 
Sobrecarga Pode ser sobrecarregado Pode ser sobrecarregado 
Sobreposição Não se aplica Pode ser sobrescrito 
 
8. Para a declaração de uma variável de instância x, que permite que x seja acessível DIRETAMENTE a partir de 
todas as classes do mesmo pacote e apenas destas, qual modificador de acesso devemos ter? Justifique e 
demonstre por meio de um exemplo. 
Nenhum. 
Exemplo: int x declara uma variável x que pode ser acessada diretamente de todas as classes do mesmo 
pacote. 
9. Para a declaração de uma variável de instância y, que permite que y seja acessível DIRETAMENTE a partir de 
todas as classes de qualquer pacote, qual modificador de acesso devemos ter? Justifique e demonstre por 
meio de um exemplo. 
public. 
Exemplo: public int y declara uma variável acessível de qualquer outra, localizada em qualquer pacote. 
10. Para a declaração de uma variável de instância y, que NÃO permite que y seja acessível DIRETAMENTE partir 
de qualquer outra classe, independente de pacote, qual modificador de acesso devemos ter? Justifique e 
demonstre por meio de um exemplo. 
private. 
Exemplo: private int y declara uma variável acessível apenas da própria classe. 
11. O que é e como se dá a sobreposição de métodos? Qual a diferença para sobrecarga de métodos? O método 
toString é um exemplo de sobrecarga ou de sobreposição? Explique. 
Na sobreposição, cria-se um método em uma classe filha ou filha da filha, etc. com o mesmo nome, tipo de 
retorno e lista de parâmetros de um outro criado em uma classe hierarquicamente superior (mãe, mãe da 
mãe, etc.) 
Característica Sobreposição Sobrecarga 
Nome O mesmo O mesmo 
Parâmetros O(s) mesmo(s) Diferentes 
Tipo de retorno O mesmo Pode ser diferentes ou iguais 
Localização Não pode ser na mesma classe, 
mas abaixo hierarquicamente 
Pode ser na mesma classe ou 
abaixo hierarquicamente. 
 
O toString, que é originalmente criado na classe Object, é um exemplo de sobreposição. Cria-se um método 
público, que retorne uma String, sem parâmetros, chamado toString. 
12. Explique e dê um exemplo de uso de cada uma das seguintes palavras-chaves: this, super, static. 
this: uma referência ao objeto corrente. Exemplo: no construtor da classe Pessoa, usa-se a palavra this para 
acessar a variável de instância, visto que há uma variável local defina como parâmetro com o mesmo nome. 
super: uma referência à superclasse direta. Exemplo: no método toString de Aluno, há uma chamada ao 
método de mesmo nome definido na superclasse. 
static: modificador usado para criar membros de classe. Exemplos: se quiséssemos criar uma variável para 
armazenar a quantidade de objetos da classe Pessoa, poderíamos definir uma variável estática (ou de classe) 
quantidade. 
13. Qual método é usado como ponto de entrada para execução de uma classe? Exemplifique. 
public static void main(String[] args) { … } 
O método main, da forma como está declarado acima, serve como ponto de entrada para a execução, isto é, a 
JVM inicia a execução de uma classe por ele.

Continue navegando