Baixe o app para aproveitar ainda mais
Prévia do material em texto
INFORMAÇÕES SOBRE A AVALIAÇÃO AV2 AVALIAÇÃO - 20 PONTOS - Teórica INFORMAÇÕES DOCENTE CURSO: ADS/SI/C.Comp. DISCIPLINA: POO TURNO MANHÃ TARDE NOITE PERÍODO/ SALA: X PROFESSOR (A): Michelle Hanne Soares de Andrade INFORMAÇÕES DISCENTE ALUNO(A): RA: DATA: NOTA: INSTRUÇÕES: 1) Respostas deverão ser NECESSARIAMENTE registradas à caneta azul ou preta, de corpo transparente. Respostas à lápis e com caneta ”escreve e apaga” não serão corrigidas. 2) Caso seja identificada rasura ou duplo preenchimento da questão objetiva, a questão será anulada. 3) Nas questões discursivas, quando aplicável/necessário, deve ser apresentada a memória dos cálculos (ou o raciocínio desenvolvido). 4) Desenvolva a prova discursiva com letra legível. Caso a caligrafia impossibilite o entendimento do conteúdo, o mesmo não será corrigido. 5) Não será permitido o uso de celulares, relógios digitais ou de qualquer outro aparelho eletrônico durante a realização da prova, exceto o uso de calculadora portátil no caso de disciplinas que a autorizam. 6) Será eliminado do processo avaliativo, com atribuição de nota 0 (zero), o aluno que, durante a prova, utilizar meios ilícitos, como por exemplo: comunicação com outros alunos, consulta a qualquer tipo de material extraprova e uso de aparelhos eletrônicos não autorizados. Também não poderá haver empréstimo de qualquer material. Boa Prova! Gabarito para as questões de múltipla escolha Questões 01 a 05 - Múltipla Escolha – Valor: 3 pontos cada questão Alternativas Questão 01 Questão 02 Questão 03 Questão 04 Questão 05 A x x B C x D x E x 1 Questão 1) De acordo com o diagrama de classes UML, assinale a alternativa que se relaciona diretamente com o conceito de Polimorfismo da Programação Orientada a Objetos. a) A relação entre as classes “Veículo” e “Roda”. b) Os atributos “aro: Integer” e “cor: String” da classe “Roda”. c) O método “solicita_compra()” das classes “Peça” e “Veículo”. d) O atributo “nome: String” da classe “Peça”. e) O atributo “ano: Integer” da classe “Veículo”. Questão 2) UML é uma linguagem padrão para desenvolver e documentar projetos de software e permite que desenvolvedores visualizem os produtos de seus trabalhos em diagramas padronizados. Ela surgiu como proposta de ser uma linguagem para modelagem de dados que usava diversos artefatos para representar o modelo de negócio e um desses artefatos é o diagrama de classe. Pressman, R. S. Engenharia de Software. 6 ed. Porto Alegre: Bookman, 2006 (adpatado). Se um projeto não tem a documentação apropriada, ou se está com a documentação desatualizada, uma opção é a engenharia reversa que possibilita mapear códigos para diagramas UML. A seguir, é apresentado um código na linguagem de programação JAVA. 2 Utilizando a engenharia reversa nesse trecho de código, o diagrama UML de Classes correspondente é 3 4 Questão 3) O paradigma de programação orientada a objetos envolve a identificação e abstração de entidades, de acordo com o escopo de um sistema. Selecione a alternativa que mostra um tipo de relacionamento estrutural que especifica quais objetos de uma classe estão conectados a objetos de outra. a) Encapsulamento b) Composição c) Generalização d) Associação e) Agregação. Questão 4) A herança, na programação orientada a objetos, é uma forma de reutilização de software em que uma nova classe é criada absorvendo membros de uma classe existente e aprimorada com capacidades novas ou modificadas, introduzindo uma de suas principais capacidades. Em relação à herança, assinale a afirmativa correta. a) A classe existente é chamada de subclasse; e a nova classe de superclasse. b) Uma de suas desvantagens é que uma subclasse não pode adicionar os seus próprios campos e métodos. c) Para evitar inconsistências durante o desenvolvimento de sistemas, jamais um objeto de uma classe pode ser um objeto de outra classe. d) As relações de herança não formam estruturas hierárquicas, uma vez que são classificadas como estruturas puramente lineares, ou seja, todas as classes estão sempre no mesmo nível. e) Com a herança, o programador pode economizar tempo durante o desenvolvimento de um programa. Questão 5) Programação orientada a objetos é um paradigma de programação baseado no conceito de objetos. Considerando as estruturas utilizadas na programação orientada a objetos, relacione adequadamente as colunas a seguir. 1. Classe. 2. Objeto. 3. Método. 4. Atributo. ( ) Define-se dentro de uma classe para descrever o comportamento de um objeto. Programadores podem reutilizar ou manter a funcionalidade encapsulada dentro de um objeto. ( ) Tipo de dados definido pelo usuário que atua como um modelo para objetos, atributos e métodos individuais ( ) Define-se na classe e representa o estado de um objeto; pertence à própria classe. 5 ( ) Instância de uma classe criada com dados definidos; pode corresponder a objetos do mundo real ou a uma entidade abstrata. A sequência está correta em a) 3, 1, 4, 2. b) 1, 3, 2, 4. c) 3, 2, 1, 4. d) 2, 4, 3, 1. e) 4, 1, 2, 3. Questão 6) Em linguagens orientadas a objetos, o polimorfismo refere-se à ligação tardia de uma chamada a uma ou várias implementações diferentes de um método em uma hierarquia de herança. (5 pontos) Neste contexto, considere as seguintes classes descritas na Linguagem Java. public class PosComp1 { public int Calcula() { return 1; } } public class PosComp2 extends PosComp1 { @Override public int Calcula() { return 2; } } public class PosComp3 extends PosComp2 { @Override public int Calcula() { return 3; } } Se estas classes forem utilizadas a partir do programa main a seguir: public class Main { public static void main(String[] args) { int Result = 0; PosComp1[] Objs = new PosComp1[3]; Objs[0] = new PosComp1(); Objs[1] = new PosComp2(); Objs[2] = new PosComp3(); for (int i = 0; i < 3; i++) { Result += Objs[i].Calcula(); } 6 System.out.println(Result); } } Explique o que está ocorrendo no programa main() e mostre o que será impresso no terminal. A saída do programa será "6". Isso ocorre porque o programa cria um array de objetos do tipo PosComp1 chamado Objs. Em seguida, três objetos são instanciados: um objeto PosComp1, um objeto PosComp2 e um objeto PosComp3. Em seguida, o programa entra em um loop que itera sobre os elementos do array Objs e chama o método Calcula() de cada objeto. O método Calcula() é polimórfico, o que significa que sua implementação é determinada pelo tipo real do objeto. Nesse caso, o método Calcula() retorna 1 para o objeto PosComp1, 2 para o objeto PosComp2 e 3 para o objeto PosComp3. O resultado de cada chamada ao método Calcula() é somado à variável Result. No final do loop, o valor final de Result é 6. Finalmente, o programa imprime o valor de Result (que é 6) na saída padrão. 7 8
Compartilhar