Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Universidade Federal do Ceará
Campus de Quixadá
Curso de Engenharia de Software
Disciplina Programação Orientada a Objetos – ES006 Semestre 2011/2
Professor Lincoln Souza Rocha
Lista de Exercício
1) A Programação Orientação a Objetos (POO) é um paradigma de programação largamente
utilizado nos dias de hoje. Na POO a unidade de modularização é a classe. Sobre a POO
responda o que se pede:
a. Descreva o que você entende por classe deixando claro qual é a diferença entre classe e
objeto.
b. Na OO os objetos devem colaborar entre si para realizar algum processamento útil no
sistema. Essa colaboração é feita através da troca de mensagens entre os objetos
participantes da colaboração. Descreva, dando exemplo, como essa troca de mensagens
entre objetos ocorre na linguagem Java.
c. Uma classe é composta por: atributos (campos ou propriedades), construtores e métodos
(operações). Explique cada um desses conceitos. Faça uma relação entre atributos,
métodos e o estado de um objeto.
01 public abstract class ContaAbstrata {
02
03 protected String numero;
04 protected double saldo;
05
06 public ContaAbstrata(String numero) {
07 this.numero = numero;
08 saldo = 0;
09 }
10
11 public void creditar(double valor) {
12 saldo = saldo + valor;
13 }
14
15 public abstract void debitar(double valor);
16
17 public String obterNumero() {
18 return numero;
19 }
20
21 public double obterSaldo() {
22 return saldo;
23 }
24 }
2) Com base no trecho de código acima (classe ContaAbstrata) responda o que se pede:
a) Informe: i) o nome da classe; ii) o nome, o tipo e a visibilidade dos campos; iii) o nome, a
visibilidade, os parâmetros e o tipo de retorno dos métodos; iv) todas as variáveis locais.
b) Essa classe possui construtor? Se sim, qual é a sua assinatura dele?
c) Essa classe é abstrata? Justifique sua resposta.
d) Objetos oriundos dessa classe podem sofrer alterações no seu estado interno através de
chamadas a qual(is) método(s)?
3) Utilizando os conceitos de herança e polimorfismo responda e de acordo com as figuras 1, 2 e 3
o que se pede:
Figura 1
Figura 2
Figura 3
a. Os trechos de código abaixo estão corretos? Justifique a sua resposta.
Trecho de Código 01
01 A’ a = new A();
02 a.fazAlgo();
Trecho de Código 02
01 B b = new B();
02 b.fazAlgo();
Trecho de Código 03
01 C c = new C’’();
02 c.fazAlgo();
b. Observando o corpo do método fazAlgo() das classes C, C’ e C’’, o trecho de
código 04 está correto? Justifique sua resposta. Descreva a seqüência de impressões que
serão feitas após a execução do trecho de código 04. Qual é o tipo estático da variável c
do trecho de código 04. E quais são os tipos dinâmicos?
Classe C
public class C {
public void fazAlgo() {
System.out.println("Classe C");
}
}
Classe C’
public class C’ {
public void fazAlgo() {
System.out.println("Classe C’");
}
}
Classe C’’
public class C’’ {
public void fazAlgo() {
System.out.println("Classe C’’");
}
}
Trecho de Código 04
01 C c = new C’();
02 c.fazAlgo();
03 c = new C’’();
04 c.fazAlgo();
05 c = new C();
06 c.fazAlgo();