Programação com Objectos

Propaganda
1/7
Programação com Objectos
1º Teste Tipo • 1º Semestre
(90 minutos)
Nome: _____________________________________________
Primeira Parte (7 valores)
PERGUNTA
NOTA
Segunda Parte (3 valores)
PERGUNTA
1.1
2.1
1.2
2.2
1.3
2.3
1.4
2.4
RESPOSTA
2.5
1ª PARTE
2ª PARTE
certas 0.6 / erradas -0.15 / ausentes 0
Para alterar uma resposta: riscar a resposta antiga e
escrever à frente a nova resposta. Considera-se
ausência de resposta a apresentação de várias repostas
a uma pergunta, mesmo que uma delas esteja certa.
Consideram-se não respondidas as perguntas cujas
respostas não estejam assinaladas nesta tabela.
2/7
1.1. (3.0) Considere o seguinte domínio:
Uma editora gere vários tipos de publicação (livros, revistas e tabloides), cada um composto por várias peças (artigos,
fotografias e publicidade). Podem ser criados mais tipos, tanto de publicação, como de peça. Nem todos os tipos de peça se
podem incluir todas em todas as publicações: nos livros, apenas são incluídos artigos; nas revistas, podem ser inseridos
artigos e fotografias; nos tabloides, todas as peças podem aparecer. Todas as publicações e peças são identificadas por um
número inteiro. As publicações e peças têm ainda a indicação de qual é o título e de quem é o autor. A editora mantém
sobre os seus autores um registo, no qual inclui (sobre cada um) o nome e o número de telefone.
A forma de disponibilização de publicações, i.e., papel, web, meios móveis, etc., permite oferecer variedade ao
consumidor, mas complica a definição de uma arquitetura flexível para a aplicação. Inicialmente, estão definidos dois
formatos: textual e estruturado. No formato textual, os atributos das publicações são apresentados sucessivamente e as
peças e seus atributos são também simplesmente apresentados de forma textual simples (as fotografias são representadas
pelo seu título). No formato estruturado, em XML, cada publicação é iniciada e terminada por uma “tag” que a caracteriza
(respetivamente, <book>, <magazine>, etc. e </book>, etc.), o mesmo se passando com as peças. Os atributos são
apresentados como atributos XML (e.g., para o autor de um livro: <book author="anónimo">). Os elementos internos são
ancorados dentro dos externos, como é habitual em XML. A solução de apresentação deve permitir flexibilidade na
definição de novas formas de apresentação sem impacto no código existente.
Desenhe o diagrama de classes UML correspondente ao domínio apresentado. Represente todas as classes (seus nomes,
métodos e atributos). Indique também as relações de herança, associação e agregação.
3/7
1.1. (espaço adicional)
4/7
1.2. (1.0 val.) Modele e implemente a classe Table que contém um número fixo de inteiros (especificado na altura da
criação das suas instâncias). Essa classe possui um método (print) que permite imprimir todo o conteúdo, aplicando uma
transformação a cada valor. A transformação aplicada varia de acordo com o tipo do objecto Transform, passado como
como argumento de print. As potenciais transformações têm um método transform (aceita um inteiro e devolve outro
inteiro) que permite modificar um valor inteiro de uma forma específica. Defina os conceitos Table e Transform. Defina
ainda duas transformações: uma que calcula o sucessor de cada inteiro (Successor); e outra que calcule o quadrado de
cada um dos valores da tabela (Square). Pode realizar outros conceitos/métodos que julgue necessitar. Evite repetições de
código.
5/7
1.2. (espaço adicional)
6/7
1.3. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados como
alternativos, face à disponibilização de funcionalidade ao código de uma classe. Compare-os, em termos de potencialidade
e flexibilidade.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
1.4. (1.5 val.) Relacione o mecanismo de herança e o conceito de polimorfismo e diga de que forma potenciam o
desenvolvimento incremental e evitam a repetição de código. Na discussão, foque os aspetos positivos e possíveis
limitações. Que conceitos estão disponíveis em Java para realizar aqueles mecanismos? Ilustre com um exemplo.
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
__________________________________________________________________________________________________
7/7
2.1. Considere o diagrama UML da figura 1 (à direita). Qual das seguintes afirmações está correta?
(a) a implementação de doThat tem de estar necessariamente em A
(b) doThat não está definido para B
(c) doIt pode ser diretamente invocado através de referências para I
(d) A fornece a implementação para métodos declarados por I
(e) A é uma classe derivada de B
2.2. Em Java, qual das seguintes frases está correta?
(a) uma classe interna não pode ser anónima
(b) uma exceção pode ser apanhada e relançada
(c) uma classe anónima não pode implementar uma interface
(d) os métodos de classes anónimas não podem lançar exceções
(e) uma classe abstrata pode ser instanciada se definir pelo menos um
construtor
Figura 1
(todos os métodos estão implementados)
2.3. Em Java, um método declarado private...
(a) não pode chamar outros métodos
(b) não pode ser redefinido
(c) não pode ser declarado static
(d) não pode ser usado por construtores
(e) pode ser acedido por classes da mesma package
2.4. Em Java, o mecanismo de redefinição de métodos...
(a) não pode ser utilizado por classes anónimas
(b) permite redefinir numa subclasse qualquer método de uma superclasse
(c) funciona apenas se os métodos não forem declarados static
(d) não funciona para métodos públicos
(e) nenhuma das anteriores
2.5. Em Java, a utilização da palavra protected...
(a) indica que apenas as classes da mesma package podem aceder ao membro da classe em causa
(b) permite definir um atributo como sendo constante
(c) permite acesso aos membros da classe assim declarados, por parte de classes dela derivadas, definidas em outras packages
(d) permite garantir que um método assim declarado não altera o objeto sobre o qual é chamado
(e) impede o acesso aos membros assim declarados (i.e., apenas a própria classe lhes tem acesso)
NÃO ESQUECER DE PREENCHER A FOLHA DE ROSTO
Download