Programação Orientada por Objectos
OT3: Herança e Polimorfismo
1. Considere a hierarquia representada na figura abaixo, onde as caixas a tracejado
contêm, como comentários, a implementação das funções membro.
A
C
B
int a;
int b;
int c;
m1()
m2()
m1()
return a+b;
return c;
return a;
a) Defina as classes A, B e C, incluindo construtores.
b) Indique os sucessivos valores porque passam as variáveis de instância durante a
construção de um objecto da classe C.
c) Todos os objectos desta hierarquia deverão saber responder à mensagem isC(),
que responde true se o receptor é uma instância de C, responde false caso
contrário. Implemente esta funcionalidade.
2. Para o desenvolvimento de um determinado jogo é necessário implementar:
a) A classe Jogador. Esta classe tem como membros de dados nome e número, que
deverá ser único, i.e., em cada instante, não deverá haver dois objectos desta
classe com o mesmo número. A classe deve implementar ainda a função joga()
que escreve "Jogador.joga” no ecrã.
b) A classe JogadorAutomatico. Esta classe é uma sub classe de Jogador e
implementa a sua versão da função joga() que escreve "JogadorAutomatico.joga" no
ecrã.
c) A classe Jogo. Esta classe tem como membro de dados um array de jogadores.
Num jogo, no máximo só poderão existir 4 jogadores, independentemente de
serem automáticos ou não. A classe implementa a função membro jogo(). Esta
função percorre uma única vez o array de jogadores. Por cada jogador, escreve o
nome e invoca a função joga(). Defina a classe Jogo.
3. Considere a classe ContaOrdem que modela o funcionamento (simplificado) de
contas bancárias.
http://w3.ualg.pt/~jvo/poo
POO OT 3 - 1/2
Programação Orientada por Objectos
i)
Proponha um conjunto de atributos, propriedades ou características que
habitualmente definem as contas à ordem. São exemplos, para além do seu
saldo, o número. Represente esses atributos numa classe, em UML.
ii)
É necessário manter um registo de todos os movimentos efectuados uma
conta, desde a sua criação. Considere que um movimento é caracterizado por
um número de ordem; tipo, que poderá ser levantamento ou depósito; data;
descrição e valor. Construa um diagrama em UML, que modele o
pretendido.
iii)
Implemente o diagrama de classes identificado nas alíneas anteriores. Após
ter aberto duas contas, atribuídas a 2 titulares diferentes e ambas com saldo
inicial nulo, teste as suas classes com os seguintes movimentos:
data
1/9/02
1/10/02
110/02
2/10/02
10/10/02
movimento valor (euros)
levantamento
1000
depósito
1000
depósito
200
levantamento
50
Transferência
50
Origem
A
A
A
A
A
Conta
Destino
B
seguidamente visualize o extracto de movimentos da conta A e o saldo da
conta B, os quais devem indicar o número da conta e o nome do titular.
4. Implemente o diagrama de classes necessário à resolução de instâncias do seguinte
problema (exemplo 2 da aula teórica 4).
Para a implementação de um editor gráfico é necessário guardar e manipular figuras
geométricas a duas dimensões. O editor suporta rectas (definidas por dois pontos
representativos), triângulos (representados por três pontos representativos),
rectângulos (representados por quatro pontos representativos), polígonos
(representados por um número finito de pontos representativos) e circunferências
(representadas por um ponto e um raio). Todas as figuras geométricas deverão ser
capazes de responder o seu perímetro – O perímetro de uma circunferência, pc, é
dado por pc=2Πr, o perímetro de qualquer outra figura fechada é dado pela soma do
comprimento dos seus lados. Adicionalmente, um rectângulo deverá saber responder
se é, ou não, um quadrado e um triângulo deverá saber se é, ou não, um triângulo
rectângulo.
http://w3.ualg.pt/~jvo/poo
POO OT 3 - 2/2
Download

OT3: Herança e Polimorfismo 1. Considere a hierarquia