- Concepção de (três) classes em Java que
integram
alguns conceitos básicos da Programação com
Objectos, como a herança e a redefinição de
métodos.
- Utilização das ferramentas que permitem
compilar (javac), executar (java) e facilitam a
produção de documentação de programas
(javadoc).
Aplicando os conceitos de Programação com Objectos
que
já conhece, concretize as classes Operadora, Telemovel
e TelemovelPrePago, cuja funcionalidade se
descreve de seguida:
- Classe Operadora: Esta classe representa uma operadora
de
telecomunicações móveis. Uma operadora contabiliza
o número total de minutos de conversação gastos
pelos clientes, bem como o número total de mensagens escritas
entregues. Quando uma operadora é criada todos estes valores
são inicializados a zero.
Esta classe deve ainda implementar os seguintes métodos:
- obtemMinutosConsumidos, que devolve o número
total de minutos de conversação;
- obtemMensagensEnviadas, que devolve o número
total de mensagens enviadas;
- estabeleceChamada, que recebe o tempo de
conversação em minutos (valor inteiro) e actualiza o
contador respectivo;
- entregaMensagem, que incrementa o contador relevante.
- Classe Telemovel: Esta classe representa um
telemóvel. Um telemóvel tem uma marca, que corresponde a
uma cadeia de caracteres arbitrária, e uma dada Operadora. Garanta a
existência
de um construtor desta classe que permita especificar a marca do
telemóvel e a sua Operadora.
Um telemóvel pode tocar, telefonar ou enviar
uma mensagem. Assim, esta classe deverá conter os
métodos:
- toca deverá simplesmente imprimir para o
ecrã a seguinte cadeia de caracteres: “TRIM TRIM”;
- telefona recebe um valor correspondente ao tempo de
conversação em minutos (valor inteiro) e deverá
invocar o método estabeleceChamada da operadora associada ao
telemóvel;
- enviaMensagem deverá simplesmente invocar o
método entregaMensagem da operadora;
- obtemMarca que devolve a marca do telemóvel.
- Classe TelemovelPrePago: Esta classe representa um
telemóvel pré-pago. Um telemóvel pré-pago
é, para todos os efeitos, um telemóvel, no entanto,
existem diferenças importantes. Em primeiro lugar, um
telemóvel pré-pago guarda um valor correspondente ao seu
saldo. Quando é criada uma instância desta classe, o valor
do saldo é inicializado a 10. Ao invocar o método telefona,
para além do comportamento descrito para o telemóvel
genérico, o valor do saldo deverá ser decrementado tanto
quantos os minutos consumidos. Se o valor de saldo não for
suficiente para completar a chamada, serão apenas consumidos os
minutos que o saldo permita, devendo este valor reflectir-se no consumo
comunicado à operadora. O envio de mensagens não consome
saldo, isto é, o envio de mensagens é gratuito, mas um
telemóvel pré-pago só pode enviar uma mensagem se
o seu saldo não for nulo. Assim, a tentativa de enviar uma
mensagem quando o saldo é zero não terá qualquer
efeito. Esta classe deverá ainda disponibilizar os
métodos obtemSaldo, que devolve o valor de saldo actual
e carregaTelemovel, que recebe um valor inteiro (carregamento)
e incrementa o valor do saldo tanto quanto a quantia indicada.
- Todas as classes referidas devem ter na sua interface um
método público estático obtemAutoria. Este
método
não deve receber qualquer parâmetro e deve devolver um
vector de inteiros (tipo int[]). O primeiro elemento do vector deve
estar preenchido com o número do grupo que realizou o
exercício e os restantes elementos devem corresponder aos
números dos alunos que realmente colaboraram na
execução deste trabalho. Se este trabalho tiver sido
executado por um único aluno, este método deve devolver
um vector com dois inteiros.
A classe Operadora deve ainda possuir um método
estático main. Neste método, declare e crie um
objecto da classe Operadora declare 12 objectos
da classe Telemovel. Construa os primeiros 6 como sendo
telemóveis genéricos e os restantes como
telemóveis pré-pagos. Cada telemóvel está
associado ao objecto Operadora criado. A marca de cada um dos
telemóveis deverá ser “XPTOn”, em que n
corresponde à ordem de criação de cada um dos
objectos, iniciando a contagem para n = 1. Para cada uma das
instâncias criadas, imprima o resultado da
invocação do método obtemMarca e invoque
ainda os métodos telefona(10), enviaMensagem e toca.
Na avaliação será tido em conta:
- A qualidade dos comentários que acompanham a
definição de todas as classes e métodos
(máximo 5 valores);
- O correcto funcionamento do programa (máximo 15 valores).
Serão aplicadas as penalizações genéricas associadas ao processo de submissão.