Baixe o app para aproveitar ainda mais
Prévia do material em texto
Discursivas - POO QUESTÃO: 1. Na orientação a objetos, na linguagem de programação Java, o Hashmap é um tipo de coleção que permite a busca de um objeto, por alguma informação que se tenha dele, em uma lista, com maior eficiência. O tipo de coleção ArrayList permite a busca de um objeto através de uma informação dele, porém a performance do algoritmo é prejudicada. Neste contexto, implemente uma classe qualquer que adiciona uma lista de objetos a um Hashmap, e no final, a lista deve ser varrida e impresso algum valor de cada objeto. Resposta Esperada:*O acadêmico deve criar um objeto do tipo Hashmap, podendo ser de qualquer tipo, conforme linha 11 do código-fonte. Devem ser adicionados objetos a esta lista, conforme linhas 13 e 14, e no final, deve ser impresso na tela algum valor de cada objeto da lista, como na linha 18. 2. Java é uma linguagem de programação que permite o desenvolvimento de aplicações que rodem ou funcionem em uma série de plataformas. Devido a essa versatilidade, a linguagem Java conta com três conhecidos ambientes de desenvolvimento: o JSE (Java Standard Edition), o JEE (Java Enterprise Edition) e o JME (Java Mobile Edition). Nesse contexto, disserte sobre o ambiente de desenvolvimento JME, explicando a sua aplicabilidade. Resposta Esperada: Java Mobile Edition (JME) – provê um conjunto de bibliotecas para a utilização em JVMs em dispositivos menores, como telefones celulares e microchips. Utiliza um subconjunto das bibliotecas da JSE em combinação com bibliotecas especialmente desenvolvidas para aplicações em dispositivos menores. 3. Da mesma forma que a linguagem de programação Java oferece comparação de igualdade entre objetos, existe um mecanismo que permite a definição dos critérios de ordenação para objetos que forem colocados em uma coleção ordenável. Para realizar tal operação, existem duas interfaces chamadas de Comparable e Comparator. Disserte sobre as diferenças entre estas duas interfaces e situações específicas de utilização das mesmas. Resposta Esperada: A Interface Comparable deve ser implementada pelo objeto que se deseja ordenar. Ela força a implementação do método compareTo(), que recebe outro objeto do mesmo tipo para comparação de acordo com o critério que se quer definir. A Interface Comparator deve ser implementada por um objeto externo à operação de ordenação, conhecido como provider. Este objeto implementa o método compare e recebe dois objetos para serem ordenados de acordo com determinado critério. Essa implementação é mais adequada quando não se tem acesso às fontes dos objetos a serem ordenados. 4. Uma linguagem de programação é composta por um vocábulo e um conjunto de regras gramaticais usadas para escrever programas de computador, sendo que cada linguagem possui suas próprias características e peculiaridades. A linguagem Java suporta oito tipos básicos, chamados tipos primitivos, que são nomeados por uma palavra-chave. Considerando os tipos primitivos suportados pela linguagem de programação Java, identifique as palavras-chave utilizadas para representá-los e também o tipo de dado que cada um permite armazenar. Resposta Esperada: * byte: permite armazenar números inteiros. * short: permite armazenar números inteiros. * int: permite armazenar números inteiros. * long: permite armazenar números inteiros. * +oat: permite armazenar números reais. * double: permite armazenar números reais. * char: permite armazenar caracteres com base no código UNICODE. * boolean: permite armazenar valores lógicos, true ou false. 5. Padrões de projeto são soluções testadas para construir softwares orientados a objetos, utilizando práticas e técnicas que ajudam a reduzir substancialmente a complexidade e os problemas recorrentes dos processos de desenvolvimento e design de software. O padrão de projeto Data Access Object (DAO) abstrai e encapsula os mecanismos de acesso a dados, utilizado para resolver o problema de mapeamento objeto relacional por intermédio de uma camada de isolamento entre a aplicação e o banco. Por definição, é preciso criar uma interface comum a todas as entidades que desejarem ser mapeadas para o banco, que estabelecerá as operações que cada uma realizará. Considerando essa interface comum, cite e descreva as cinco operações que o padrão de projeto DAO define. Resposta Esperada: Esta interface deverá incluir as seguintes operações: (i) save; (ii) get; (iii) list; (iv) remove; e (v) update: (i) salvar um objeto (ii) obter um objeto (iii) obter uma lista contendo todos os objetos (iv) remover um objeto (v) atualizar um objeto 6. O desenvolvimento de software é uma tarefa árdua e que necessita de muito controle para se obter um produto no tempo e custo planejados. Além disso, é importante que se analise e projete bem a arquitetura do software, possibilitando que uma futura manutenção não seja tão trabalhosa, através de código-fonte mais legível e reutilizável. Neste sentido, o paradigma da orientação a objetos surgiu para evitar muitos problemas existentes na programação procedural. Disserte sobre como e o porquê a programação orientada a objetos possibilita melhor legibilidade e reutilização de código-fonte. Resposta Esperada: A melhor legibilidade do código-fonte, seguindo as boas práticas da orientação a objetos, ocorre ao se evitar criação de variáveis indevidas, e principalmente em métodos que possuem uma única responsabilidade, sendo mais específicos e mais fáceis de se entender. Além disso, a reutilização de código ocorre justamente no uso correto de classes, e métodos com responsabilidades específicas, por exemplo, um método que realiza um cálculo, e este é chamado (invocado) em outros pontos do código-fonte. Neste sentido, temos um baixo grau de acoplamento e maior coesão. 7. Assim como outras linguagens de programação, o Java possui uma arquitetura robusta de tratamento de exceções, as quais são classificadas em verificadas e não verificadas. Uma exceção tratada evita que o programa seja interrompido em tempo de execução, estourando no usuário, ao invés de ter sido tratado pela própria lógica do programa. Neste contexto, descreva as diferenças entre exceção verificada e exceção não verificada, e implemente, em linguagem Java, um pequeno trecho de código-fonte com uma exceção verificada, utilizando os comandos de tratamento de exceção do Java que você aprendeu. 8. Padrões de projeto são soluções testadas para construir softwares orientados a objetos, utilizando práticas e técnicas que ajudam a reduzir substancialmente a complexidade e os problemas recorrentes dos processos de desenvolvimento e design de software. Um padrão de projeto bastante utilizado pelos desenvolvedores é o padrão Singleton, que garante a existência de apenas uma única instância de uma determinada classe, mantendo uma maneira global de acessá-la. Considerando a classe "Configuracao" ilustrada na figura anexa, cite e descreva as modificações necessárias para aplicar o padrão de projeto Singleton a esta classe, de maneira que esta tenha apenas uma instância de si mesma e forneça um ponto global de acesso a sua instância. Resposta Esperada : 9. Java é uma linguagem de programação que permite o desenvolvimento de aplicações que rodem ou funcionem em uma série de plataformas. Devido a essa versatilidade, a linguagem Java conta com três conhecidos ambientes de desenvolvimento: o JSE (Java Standard Edition), o JEE (Java Enterprise Edition) e o JME (Java Mobile Edition). Nesse contexto, disserte sobre o ambiente de desenvolvimento JEE, explicando a sua aplicabilidade. Resposta Esperada : JEE Plataforma/Ambiente de desenvolvimento voltado para redes, internet, intranets, aplicações de grande escala e afins. Toma como base o ambiente JSE. 10. O paradigma da programação orientada a objetos (poo) apresenta diversas vantagens com relação aos seus antecessores, dentre as quais podemos citar especialmente o aumento na manutenibilidade, reusabilidade, extensibilidade e confiabilidade das aplicações. Disserte sobre a maneira através da qual a poo e suas característicasresultam nestas vantagens. Resposta esperada: A manutenção das aplicações ocorre de maneira mais fácil, pois, através do polimorfismo e da alta coesão e baixo acoplamento, conseguimos alterar partes do código sem influenciar outras. A reusabilidade e a extensibilidade ocorrem através da herança, em que é possível adotar comportamento igual ou mesmo estender comportamentos escrevendo poucas linhas de código. A confiabilidade aumenta através da alta coesão e baixo acoplamento das aplicações. 11. O collections framework do Java possui alguns tipos que podem ser comparados com arrays, porém estes possuem mais recursos, eficiência e vantagens em relação ao array ou vetor normal. Além disso, o collections framework permite ordenar os objetos através de algum critério desejado, bastando implementá-lo. Um exemplo deste tipo de ordenação seria por nome, utilizando-se o atributo nome de uma classe Pessoa. Para desenvolver a comparação, deve ser feita a implementação da interface Comparable na classe desejada, além do método "compareTo". Neste contexto, desenvolva uma classe qualquer, na linguagem de programação Java, que realize a ordenação de uma lista de objetos através da interface Comparable. Apresente as duas classes criadas, uma com a implementação da interface Comparable, e a outra com um exemplo de execução da ordenação de uma lista do objeto do tipo da classe com implementação Comparable. 12. Toda aplicação JavaSE deve ter o que é conhecido como ponto de entrada. Visto que uma aplicação desenvolvida através do paradigma de programação orientada a objetos é composta por diversas classes, pelo menos uma delas deve ter a responsabilidade de iniciar o processo de instanciação e troca de mensagens. Considerando o código fonte da classe Principal mostrada na figura a seguir, crie o código fonte da classe Aluno, sabendo que a matrícula é um inteiro e que o método calcularMedia() sempre retorna -1, pois sua implementação ainda não foi definida. Resposta Esperada: O acadêmico deverá elaborar um código fonte como o da figura, sendo que a ordem dos elementos pode variar sem problemas e o modificador da classe não precisa ser public, podendo ser default: 13. A comparação de igualdade entre duas instâncias de uma mesma classe pode ser definida na linguagem de programação Java através do polimorfismo. A sobrescrição do método equals(), existente na classe Object é sinalizada através da annotation @override e permite que o desenvolvedor defina seus próprios critérios de comparação através de atributos. Considerando o que foi exposto e a existência de uma classe chamada de Cachorro que possui um atributo nome, disserte sobre o código fonte da figura a seguir, explicando o que acontece em cada linha. Resposta Esperada: Na linha 19 está a anotação override, indicando que estamos usando o polimorfismo. Na linha 20 está a assinatura do método. Nas linhas 21 e 22 estamos perguntando se a referência com a qual estamos comparando é a mesma. Se for, logicamente o equals retornará true. Nas linhas 23 e 24 é feita a pergunta se o objeto a ser comparado é null. Se ele for, o método retorna falso. Nas linhas 25 e 26, é feita a verificação do tipo da classe que está vindo como parâmetro. Se os tipos forem diferentes, o método retorna falso. Na linha 27, é feita conversão do object para Cachorro, para que se possa realizar a comparação do nome. Nas linhas 28 a 30, é feita a verificação de nome nulo. Se um dos nomes for nulo e o outro não, retorna-se falso. Finalmente, a linha 31 pergunta se o nome do objeto atual não é igual ao nome do objeto que veio como parâmetro. Se os dois forem diferentes, o método retorna falso e, caso a execução não entre em nenhuma das verificações anteriores, os nomes dos dois objetos são iguais e o método retorna true. 14. Para ser considerada uma linguagem de programação orientada a objetos (poo), a linguagem deve aderir aos princípios de encapsulamento, herança e polimorfismo, alicerces básicos da teoria da orientação a objetos. Existem diversas linguagens de programação no mercado que aderem a estes princípios, entre elas c++, Ruby e Phyton. Disserte sobre três vantagens que a linguagem de programação Java apresenta sobre as demais para o aprendizado da poo. Resposta Esperada: O Java segue os três princípios com o rigor adequado, enquanto outras linguagens são mais ?liberais? na aderência e podem prejudicar o aprendizado da teoria de poo. A sintaxe do Java é semelhante à do c e c++, além de diversas linguagens de programação existentes no mercado como c# e php terem inspirado seu modelo de funcionamento de objetos na maneira como o Java trabalha. Aprender Java é facilitar o aprendizado de outras linguagens de programação. Java é multiplataforma, ou seja, você pode programar em java em qualquer sistema operacional que tenha uma JVM desenvolvida para o mesmo.
Compartilhar