wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Revisão de POO e Introdução aos Padrões de Projeto

Total questions: 10

Worksheet time: 10mins

Name
Class
Date
1.

Qual é o principal conceito por trás da herança na Programação Orientada a Objetos (POO) e seu maior benefício?

a)

O encapsulamento de dados, permitindo que os membros private de uma superclasse sejam acessados diretamente pela subclasse.

b)

O relacionamento tem um (composição), que permite que um objeto contenha como membros referências a outros objetos.

c)

Uma forma de reutilização de software, onde uma nova classe absorve membros de uma classe existente e é aprimorada, economizando tempo no desenvolvimento.

d)

A vinculação dinâmica, que resolve chamadas de método em tempo de compilação (vinculação estática).

2.

Em POO, é fundamental distinguir entre o relacionamento "é um" e o relacionamento "tem um". Qual afirmação define corretamente a aplicação desses relacionamentos?

a)

O relacionamento é um representa a composição (por exemplo, um Empregado é um ClienteDaEmpresa).

b)

O relacionamento é um representa a herança, onde um objeto de uma subclasse também pode ser tratado como um objeto de sua superclasse, mas não o contrário.

c)

O relacionamento tem um representa a herança, e o é um representa a especialização (polimorfismo).

d)

O relacionamento tem um representa a herança, onde a superclasse é mais específica que a subclasse.

3.

O polimorfismo permite que um programa manipule objetos que compartilham uma superclasse como se todos fossem objetos da superclasse. Em um cenário onde uma variável do tipo Superclasse (por exemplo, Animal) contém uma referência a um objeto do tipo Subclasse (por exemplo, Pássaro), e o método mover() é invocado, o que determina o método real a ser executado?

a)

O tipo da variável (Superclasse), pois o compilador verifica a declaração do método nesse tipo.

b)

A palavra-chave final utilizada na superclasse, que força a vinculação estática em tempo de compilação.

c)

A implementação do método na classe Object, pois todas as classes herdam dele.

d)

O tipo do objeto que a variável referencia (o objeto Subclasse), pois em tempo de execução o processo de vinculação dinâmica seleciona a versão correta do método.

4.

Qual das seguintes características é VERDADEIRA ao descrever a distinção ou o uso das classes abstratas e das interfaces em Java?

a)

Interfaces podem especificar detalhes de implementação, como declarações de métodos concretos e variáveis de instância.

b)

Classes abstratas podem ser usadas para instanciar objetos, contanto que contenham pelo menos um método concreto.

c)

Interfaces são geralmente utilizadas quando há uma implementação padrão que classes não relacionadas podem herdar.

d)

O Java só suporta a herança simples (estender apenas uma superclasse), mas permite que uma classe implemente várias interfaces para processar objetos de classes não relacionadas polimorficamente.

5.

Em uma hierarquia de herança em Java, como os membros declarados com o modificador de acesso protected na superclasse se comportam em relação à subclasse e a outras classes?

a)

Podem ser acessados por membros dessa superclasse, por membros de suas subclasses e por membros de outras classes no mesmo pacote.

b)

São acessíveis apenas dentro da própria superclasse, assim como os membros private.

c)

Retêm seu modificador de acesso original, mas só podem ser referenciados pelos métodos public herdados.

d)

Aumentam a fragilidade do software, pois o acesso direto a essas variáveis na subclasse é considerado uma prática ruim de engenharia de software.

6.

Padrões de projeto são descritos como soluções típicas para problemas comuns em projeto de software. Qual das alternativas abaixo estabelece a distinção correta entre um Padrão de Projeto e um Algoritmo, conforme a analogia apresentada nas fontes?

a)

Ambos são como receitas culinárias, mas o padrão é mais focado em linguagens de programação.

b)

O algoritmo é como uma receita (etapas claras para uma meta), e o padrão é como uma planta de obras (descrição de alto nível, onde a ordem exata de implementação depende do desenvolvedor).

c)

Um algoritmo é uma planta de obras (alto nível), enquanto o padrão é uma receita passo-a-passo (etapas claras).

d)

O padrão sempre define um conjunto claro de ações para atingir uma meta, e o algoritmo é a descrição de alto nível da solução.

7.

Os padrões de projeto podem ser categorizados pelo seu propósito. Qual é o principal foco dos Padrões Criacionais?

a)

Explicar como montar objetos e classes em estruturas maiores, mantendo-as flexíveis e eficientes.

b)

Cuidar da comunicação eficiente e da atribuição de responsabilidades entre objetos.

c)

Focar em soluções que se aplicam apenas a uma única linguagem de programação (padrões idiomáticos).

d)

Fornecer mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização de código.

8.

O conceito de padrões foi originalmente descrito por Christopher Alexander, mas foi aplicado à programação orientada a objetos (POO) em 1994, resultando no livro conhecido como "livro GoF". Qual grupo de autores é responsável pela publicação desse livro que detalhou 23 padrões de POO?

a)

Oleksandr Shvets, Olga Skobeleva, Christopher Alexander, e Richard Helm.

b)

Erich Gamma, John Vlissides, Ralph Johnson, e Richard Helm.

c)

Ralph Johnson, Christopher Alexander, Alan Turing, e John Vlissides

d)

A Gangue dos Quatro foi um grupo de desenvolvedores anônimos que catalogaram soluções típicas.

9.

Qual afirmação descreve de forma mais precisa o propósito fundamental de um Padrão de Projeto no contexto do desenvolvimento de software?

a)

Padrões de projeto são um conjunto claro de ações, como um algoritmo ou uma receita, que visa atingir uma meta específica.

b)

Padrões de projeto são um pedaço de código específico que pode ser copiado e colado em diferentes programas para resolver problemas de projeto.

c)

Padrões de projeto são soluções típicas e reutilizáveis para problemas comuns e recorrentes que surgem no projeto (design) de software, servindo como uma descrição de alto nível de uma solução.

d)

Padrões de projeto são soluções de baixo nível (idiomáticas) que se aplicam unicamente a uma linguagem de programação específica.

10.

Considerando que Padrões de Projeto são "soluções típicas para problemas comuns em projeto de software", em qual fase ou atividade de processo de desenvolvimento de software o uso de padrões de projeto é mais diretamente e intensamente aplicado?

a)

Fase de Codificação/Implementação (onde o código é escrito e os algoritmos são implementados).

b)

Fase de Teste e Validação (onde a funcionalidade é verificada e os Code Smells são identificados).

c)

Fase de Análise de Requisitos (onde o problema e o domínio são definidos, antes de qualquer consideração sobre a arquitetura).

d)

Fase de Projeto/Design (onde as classes e objetos são estruturados e as responsabilidades são assinaladas para manter as estruturas flexíveis e eficientes).