Universidade da Beira Interior
Programação Orientada a Objectos
Cursos: 1º ciclo: Eng.ª Informática, Tecnologias e Sistemas de Informação, Bioengenharia
2ª Frequência, 2013/01/11
SEM CONSULTA
Duração: 2 horas, 10.0 valores
1 – Considere a classe Movimento, esquematizada abaixo:
Um movimento tem uma data, (ano, mês e dia), um valor, uma descrição e um tipo. O valor do atributo tipo será
o carácter D se o movimento foi de débito e será C, se o movimento foi de crédito.
public class Movimento {
private int dia;
private int mes;
private int ano;
private double valor;
private String descricao;
private char tipo; // D se débito, C se crédito
public Movimento (int dia, int mes, int ano, double valor,
String descricao, char tipo ){…}
public
public
public
public
public
public
public
public
public
public
public
public
public
public
public
}
int getDia (){…}
int getMes (){…}
int getAno (){…}
double getValor (){…}
String getDescricao (){…}
char getTipo(){…}
void setDia(int dia){…}
void setMes(int mes){…}
void setAno(int ano){…}
void setValor(double valor){…}
void setDescricao(String descricao){}
void setTipo(char tipo){…}
String toString (){…};
boolean equals (Object o){…}
Object clone(){…}
a) Construa o método toString para a classe Movimento. Caso o movimento seja de débito, deverá colocar o
caracter ‘-‘ a seguir ao valor. Caso o movimento seja de crédito, deverá colocar o carácter ‘+’ a seguir ao valor.
b) Construa uma classe teste, onde num método main, testa a classe Movimento. Deverá criar um movimento de
crédito, um movimento de débito, testar os métodos equals, clone e toString. Deverá indicar o output do
programa que criar.
2 – Considere a classe ContaBanco, que tem como atributos o nome do titular da conta, um número de conta
atribuído sequencialmente de forma automática, um saldo e uma lista de Movimentos (considere um objecto do
tipo java.util.Vector<Movimento>).
a) Construa a classe ContaBanco, definindo os atributos e os métodos de consulta e modificação (getters e
setters).
b) Defina o construtor sem parâmetros e o construtor que recebe como parâmetros o nome do titular, o
saldo e uma lista de movimentos.
c) Defina o método toString para a classe ContaBanco.
d) Defina o método equals para a classe ContaBanco.
e) Construa um método que adicione um Movimento à lista de movimentos da classe ContaBanco. O saldo
da conta deverá ser alterado de acordo com o tipo e valor do movimento.
f) Construa um método para a classe ContaBanco, que dado um ano e um mês, calcule o valor total dos
movimentos durante esse mês/ano. (Total de movimentos = somatório dos créditos – somatório dos
débitos);
g) Reescreva o método da alínea e) de forma a ter o seguinte comportamento: se como resultado do
movimento, o saldo da conta ficar negativo então o movimento não será adicionado e deverá ser gerada
uma excepção do tipo “SaldoException”. Deve associar à excepção a mensagem de erro “Erro: saldo
negativo”.
h) Construa a classe de excepção SaldoException.
i) Construa um método público e estático (public static) que receba como parâmetro um vector de contas
de banco (objecto do tipo Vector<ContaBanco>). O método deverá reduzir em 100 euros o saldo de
todas as contas do vector. Essa redução deverá ser feita usando o método da alínea g). Isto significa que
apenas será feita se o saldo não ficar negativo.
3 – Uma ContaInvestimento é uma ContaBanco que rende juros ao fim de certo período de tempo, isto é, ao fim
de um certo número de dias. A classe ContaInvestimento tem como atributos a data de criação (objecto do tipo
java.util.GregorianCalendar) o prazo da conta (isto é, o número de dias decorridos os quais a conta rende juros)
e a taxa de juro aplicada à conta (um double).
a) Construa a classe ContaInvestimento definindo os atributos e um construtor que receba como
parâmetros um objecto do tipo ContaBanco, a data de criação da conta, o prazo e a taxa de juro.
b) Construa o método toString para a classe ContaInvestimento.
4 – O que é o estado de um objeto?
5 – O que é o comportamento de um objeto?
6 – Diga qual a diferença entre uma classe abstracta e uma interface. Construa um pequeno exemplo de uma
classe abstracta e um pequeno exemplo de uma interface.
Classe java.util.Vector:
Vector()
void addElement(Object element)
void insertElementAt(Object obj, int position)
void removeElementAt(int position)
void setElementAt(Object obj, int position )
Object elementAt(int position)
void clear()
Object clone()
boolean equals (Object element)
boolean contains(Object element)
Object firstElement()
Object lastElement()
int indexOf(Object element)
int indexOf(Object element, int position )
boolean isEmpty()
int size()
String toString ()
Download

2ª Frequência - Departamento de Informática da Universidade da