teste-a - técnico lisboa - autenticação · ... uma classe abstrata pode ser instanciada se...

10

Upload: phungnhan

Post on 13-Dec-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada
Page 2: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

2/10

1.1. (1.5 val.) Os mecanismos de herança entre classes e de composição de objetos são, por vezes, apresentados comoalternativos, face à disponibilização de funcionalidade a uma classe. Compare-os, em termos de potencialidade eflexibilidade. Contraste as diferenças e vantagens relativas no contexto da aplicação do padrão de desenho Strategy.

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

1.2. (1.5 val.) Relacione o mecanismo de herança e o conceito de polimorfismo e diga de que forma potenciam odesenvolvimento incremental e evitam a repetição de código. Na discussão, foque os aspetos positivos e possíveislimitações. Que conceitos estão disponíveis em Java para realizar aqueles mecanismos? Ilustre com um exemplo.

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

Page 3: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

LEIC-T • LERC • MEIC-T • 2011/2012 • 1º Semestre Programação com Objetos • 2012/01/07 11h00m 3/10

1.3. (1.5 val.) Tanto o padrão de desenho State como o padrão de desenho Strategy se baseiam na delegação decomportamento por parte do cliente nas instâncias de classes previstas pelo padrão (respetivamente, o estado e aestratégia). Discuta as semelhanças e as diferenças entre os dois padrões, tanto em termos da arquitetura prevista, como daintenção e das consequências da utilização de cada padrão. Apresente exemplos ilustrativos.

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

1.4. (1.5 val.) O padrão de desenho Visitor permite abstrair a aplicação de uma operação a uma estrutura de objetos. Digaqual é o princípio de funcionamento do padrão e que vantagens apresenta a sua utilização. Quais são os problemasintroduzidos pela utilização do padrão? Dê um exemplo de aplicação.

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

__________________________________________________________________________________________________

Page 4: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

4/10

1.5. Considere o seguinte programa em Java:

public class Chicken { private Stomach _stomach = new Hungry(this); public void eat() { _stomach.eat(); } public void sleep() { _stomach.sleep(); } public void setStomach(Stomach stomach) { _stomach = stomach; }}

public abstract class Stomach { protected Chicken _chicken; protected Stomach(Chicken chicken) { _chicken = chicken; } public void eat() { System.out.println("..."); } public void sleep() { System.out.println("..."); }}

public class Hungry extends Stomach { public Hungry(Chicken chicken) { super(chicken); System.out.println("I'm hungry!!"); }

public void eat() { System.out.println("Eating..."); _chicken.setStomach(new Sated(_chicken)); } public void sleep() { System.out.println("I'm too hungry to sleep!!"); }}

public class Sated extends Stomach { public Sated(Chicken chicken) { super(chicken); System.out.println("I'm sleepy!!"); } public void sleep() { System.out.println("ZzZz..."); _chicken.setStomach(new Hungry(_chicken)); }}

public class Farm { public static void main(String args[]) { Chicken chicken = new Chicken(); chicken.eat(); chicken.sleep(); chicken.sleep(); }}

1.5.1. (1.0 val.) Qual o resultado que se obtém quando se executa o programa? (represente mudanças de linha com \n)

__________________________________________________________________________________________________

__________________________________________________________________________________________________

1.5.2. (0.5 val.) Que padrão de desenho é usado no programa?

__________________________________________________________________________________________________

Page 5: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

LEIC-T • LERC • MEIC-T • 2011/2012 • 1º Semestre Programação com Objetos • 2012/01/07 11h00m 5/10

1.5.3. (1.5 val.) Desenhe o diagrama de sequência UML correspondente à execução do programa, incluindo as etapas de criação dos objetos. O diagrama de sequência deve conter os nomes das mensagens trocadas (não é necessário representar os argumentos dessas mensagens nem as de retorno; represente todas as chamadas ao método println).

Page 6: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

6/10

1.6. 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. As peças não são todasapresentáveis em todas as publicações: nos livros, apenas são incluídos artigos; nas revistas podem ser inseridos artigos efotografias; nos tabloides, todas as peças podem aparecer. Todas as publicações e peças são identificadas por um númerointeiro. 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 seusautores 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 aoconsumidor, mas complica a definição de uma arquitetura flexível. Inicialmente, estão definidos dois formatos: textual eestruturado. No formato textual, os atributos das publicações são apresentados sucessivamente e cada peça e seus atributostambém é simplesmente apresentada de forma textual simples (as fotografias são representadas pelo seu título). No formatoestruturado, 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 atributosXML (e.g., para o autor de um livro: <book author="anónimo">). Os elementos internos são ancorados dentro dosexternos, como é habitual em XML. A solução deve permitir flexibilidade na definição de novas formas de apresentaçãosem impacto no código existente.

Para suportar o processo de edição, todas as publicações e peças implementam os métodos de suporte à manutenção dosseus atributos e objetos que contêm. Implementam ainda os métodos que correspondem ao suporte para a flexibilidade deapresentação dos dados (obedecendo às restrições acima).

1.6.1. (2.0 val.) 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.

Page 7: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

LEIC-T • LERC • MEIC-T • 2011/2012 • 1º Semestre Programação com Objetos • 2012/01/07 11h00m 7/10

1.6.1. (espaço adicional)

Page 8: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

8/10

1.6.2. (4.0 val.) Implemente em Java todas as classes do domínio apresentado, bem como os seus atributos e métodos(exceto getters e setters). Os atributos identificados devem ser suficientes para suportar a funcionalidade e os métodosdevem conter implementações que permitam verificar inequivocamente que a funcionalidade desejada (especialmente aque diz respeito às relações entre objetos) está correta. Não implemente o código correspondente à saída textual simples.

Page 9: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

LEIC-T • LERC • MEIC-T • 2011/2012 • 1º Semestre Programação com Objetos • 2012/01/07 11h00m 9/10

1.6.2. (espaço adicional)

Page 10: teste-a - Técnico Lisboa - Autenticação · ... uma classe abstrata pode ser instanciada se definir pelo menos ... Em Java, a interface java.lang.Comparable... (a)é implementada

10/10

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. Que padrão de desenho permite especificar numa classe o esqueleto de um algoritmo, deixando para as subclasses a concretização dos seus passos?

(a) Strategy(b) Adapter(c) Visitor

(d) Template Method(e) Command

2.3. O padrão de desenho Adapter...(a) permite ajustar a interface e o comportamento de um objeto(b) permite adicionar funcionalidade a um objeto adaptando a sua

interface(c) não pode ser aplicado em conjunto com padrão Template Method(d) permite aplicar uma operação a uma estrutura de objetos(e) permite estabelecer o esqueleto de um algoritmo

2.4. O padrão de desenho Observer...(a) representa a construção de uma coleção(b) permite gerir as dependências de outros objetos relativamente ao estado de um objeto(c) permite abstrair a criação de famílias de objetos para uma aplicação(d) permite tratar famílias de objetos e seus grupos indiscriminadamente(e) permite que o comportamento de um objeto mude quando o seu estado muda

2.5. Relativamente ao padrão de desenho Decorator...(a) é possível adicionar, no decorador, comportamento adicional, desde que a interface original seja mantida(b) não é possível adicionar, no decorador, comportamento adicional, mesmo que a interface original seja mantida(c) a interface original só é mantida se não for adicionado comportamento adicional(d) a adição de comportamento adicional condiciona a redefinição da interface(e) o ajuste da interface é realizado pelo comportamento adicional

2.6. 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

2.7. 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.8. 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.9. 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)

2.10. Em Java, a interface java.lang.Comparable ...(a) é implementada pela classe java.lang.Object(b) permite verificar a igualdade entre dois objetos de quaisquer tipos(c) não deve ser implementada por classes cujas instâncias sejam armazenadas em mapas do tipo java.lang.TreeMap(d) permite usar o método Collections.sort sobre uma lista que contenha instâncias de uma classe que a implementa(e) deve ser implementada por classes cujas instâncias sejam armazenadas em mapas do tipo java.lang.HashMap

Figura 1(todos os métodos estão implementados)