2a Prova de Características das Linguagens de Programação – ano 2007 – 20 período 1a questão (1,5 pontos): i) Disserte sobre as vantagens e desvantagens de Java relativamente às outras linguagens de computação; ii) Apresente as diferenças mais marcantes entre Java e a linguagem de computação apresentada por você em seu primeiro trabalho. 2a questão (3 pontos): Programe um servidor (echo server) em Java que simplesmente reproduza um texto a ele enviado por um cliente. O seu servidor deve implementar múltiplos threads, para evitar que um cliente faça um outro cliente esperar indefinidamente. 3a questão (2 pontos): Considere o código a seguir de um applet, denominado UpdateApplet, que mantém um thread para automaticamente atualizar o seu display em intervalos regulares. public class UpdateApplet extends java.applet.Applet implements Runnable { private Thread updateThread; int updateInterval = 1000; public void run() { while ( true ) { try { Thread.sleep( updateInterval ); } catch (InterruptedException e ) { return; } repaint(); } } public void start() { if ( updateThread == null ) { updateThread = new Thread(this); updateThread.start(); } } public void stop() { if ( updateThread != null ) { updateThread.stop(); updateThread = null; } } } Usando herança, codifique um applet, denominado Clock, que simplesmente mostre na tela, em intervalos regulares de 1 segundo, o tempo corrente do sistema. Sugestão: use a classe Java.util.Date. Atenção: nas questões 4 e 5, cada opção errada assinalada descontará uma opção corretamente assinalada! 4a questão (2,0 pontos): Assinale a(s) afirmação(ões) correta(s) : a) Herança é quando uma classe herda de outra classe, apenas alguns métodos que lhe interessa; b) Polimorfismo é o recurso de determinadas linguagens orientadas a objeto que permitem a um único objeto tomar a forma, em sua totalidade, de diferentes objetos, dependendo do contexto; c) Overload de um método é quando o método torna-se excessivamente carregado de código, impactando o uso da cpu ou, até mesmo, podendo causar um overflow na pilha do sistema; d) Encapsulamento é quando desejamos evitar que a implementação de um método seja de conhecimento geral, isto é, sejam visíveis a partir de outros objetos. Para implementar esta característica as linguagens orientadas a objeto fornecem modificadores de acesso que, quando aplicados a variáveis de instância e métodos, alteram o grau de visibilidade destes; e) Abstração é a característica das linguagens orientadas a objeto que nos permite não considerar certas dificuldades de implementação, concentrando-nos apenas nos aspectos para os quais a linguagem nos oferece os recursos necessários à implementação dos objetos desejados; f) Hierarquia é quando uma classe determina a uma subclasse quais as variáveis de instância a que ela pode ter acesso e quais os métodos que ela pode executar. g) Persistência é a característica de algumas linguagens orientadas a objeto que possuem variáveis globais. Em função desta característica estas variáveis globais podem “persistir”, isto é, permanecerem ativas, durante todo o tempo de execução do programa. 5a questão (1,5 pontos): Considere o modelo para tratamento de eventos da AWT denominado Delegation Model (1.1 AWT Event Model). Considerando as afirmações abaixo, relativamente ao Delegation Model, assinale a(s) opção(opções) correta(s). Afirmações sobre o AWT Delegation Model 1. Vários objetos receptores (listeners) de eventos podem receber (tratar) eventos de todos os tipos gerados (emitidos) por diversos objetos geradores de eventos; 2. Eventos de um determinado tipo só podem ser tratados por manipuladores de eventos que sejam todos instâncias de uma única classe; 3. É opcional registrar uma instância de uma classe manipuladora de eventos como uma receptora de eventos para eventos gerados por um componente específico; 4. Tratadores de eventos (Event handlers) só podem ser instâncias de classes específicas, associadas aos tipos de eventos gerados; 5. No comando “class” do tratador de eventos (event handler) deve-se obrigatoriamente incluir um trecho de código, indicando que a classe tratadora de eventos implementa a interface receptora (listener) correspondente ao tipo de evento que se deseja tratar; Boa Sorte! Prof. Oscar Luiz Monteiro de Farias