Prévia do material em texto
Avaliação Minicurso Uniasselvi – Orientação a Objetos 2024.1
1. A programação orientada a objetos não é apenas uma forma de programar,
mas também um jeito de pensar em um problema utilizando conceitos do mundo
real, não apenas conceitos computacionais. Considerando os conceitos da
programação orientada a objetos, analise as afirmações abaixo.
Considere as seguintes afirmações sobre programação orientada a objetos:
I. O objeto tem determinadas propriedades que o caracterizam e que são
armazenadas no próprio objeto. As propriedades de um objeto são chamadas de
instâncias.
II. As mensagens são informações enviadas ao objeto para que ele se comporte de
uma determinada maneira. Um programa orientado a objetos em execução consiste
em envios, interpretações e respostas às mensagens. São os métodos, os
procedimentos residentes nos objetos, que determinam como eles irão atuar ao
receber as mensagens.
III. A herança é um mecanismo para o compartilhamento de métodos e atributos
entre classes e subclasses, permitindo a criação de novas classes através da
programação das diferenças entre a nova classe e a classe-pai.
IV. O encapsulamento é um mecanismo que permite o acesso aos dados de um
objeto somente através dos métodos desse. Nenhuma outra parte do programa pode
operar sobre os dados do objeto. A comunicação entre os objetos é feita apenas
através de troca de mensagens.
Assinale a alternativa CORRETA:
A) III e IV.
B) I e II.
C) II e IV.
D) II e III.
Questão 1 de 5
2. O polimorfismo é um dos pilares da programação orientada a objetos,
permitindo que objetos de diferentes classes sejam tratados através da mesma
interface. Isso é alcançado através da sobrescrita de métodos, em que métodos com
o mesmo nome podem ter diferentes comportamentos em classes diferentes. O
polimorfismo facilita a extensão e a manutenção do código, promovendo a
flexibilidade e a reutilização.
Suponha que você está desenvolvendo um sistema de gerenciamento de animais em
um zoológico. Você criou uma classe base Animal e duas subclasses, Cachorro e
Gato, para representar diferentes tipos de animais. Cada subclasse implementa o
método fazer_som de maneira diferente.
class Animal:
def fazer_som(self):
pass
class Cachorro(Animal):
def fazer_som(self):
return "Latido"
class Gato(Animal):
def fazer_som(self):
return "Miau"
Avalie as seguintes afirmações sobre polimorfismo e o código apresentado:
I. O método fazer_som é um exemplo de polimorfismo, pois é definido na classe
Animal e sobrescrito nas classes Cachorro e Gato.
II. A classe Animal não pode ser instanciada diretamente, pois o método fazer_som
não possui implementação.
III. O polimorfismo permite que um objeto da classe Cachorro ou Gato seja tratado
como um objeto da classe Animal.
IV. O método fazer_som na classe Cachorro deve chamar super().fazer_som() para
garantir o comportamento correto.
Assinale a alternativa CORRETA:
A) Apenas as afirmativas I e IV estão corretas.
B) Apenas as afirmativas I, II e III estão corretas.
C) Apenas as afirmativas II e IV estão corretas.
D) Apenas as afirmativas I e III estão corretas.
Questão 2 de 5
3. Na programação orientada a objetos, a herança é um mecanismo que permite
que uma classe herde atributos e métodos de outra classe. Existem diferentes tipos
de herança, cada uma com suas características e usos específicos. Os principais
tipos são: herança simples, onde uma classe herda de uma única classe base;
herança múltipla, onde uma classe pode herdar de mais de uma classe base;
herança multinível, onde uma classe herda de uma classe que já é derivada de
outra; e herança hierárquica, onde uma classe serve como base para múltiplas
subclasses.
Qual das seguintes afirmações descreve corretamente a herança múltipla?
A) Uma classe herda atributos e métodos de uma classe que já é derivada de
outra classe.
B) Uma classe serve como base para múltiplas subclasses.
C) Uma classe herda atributos e métodos de uma única classe base.
D) Uma classe herda atributos e métodos de mais de uma classe base.
Questão 3 de 5
4. A herança múltipla é um conceito em orientação a objetos onde uma classe
pode herdar características (atributos e métodos) de mais de uma classe. Apesar de
ser útil em alguns contextos, a herança múltipla pode causar problemas como o
problema do diamante, em que uma classe herda de duas classes que, por sua vez,
herdam de uma classe comum. Isso pode levar a ambiguidades sobre qual método
ou atributo deve ser utilizado.
Suponha que você está desenvolvendo um sistema para um simulador de animais.
Você criou uma classe Animal, e duas classes Mamifero e Ave, que herdam de
Animal. Em seguida, você cria uma classe Morcego que herda tanto de Mamifero
quanto de Ave. O problema do diamante ocorre quando Morcego herda métodos ou
atributos comuns de Mamifero e Ave, que foram herdados de Animal.
class Animal:
def __init__(self, nome):
self.nome = nome
def mover(self):
return "Movendo-se"
class Mamifero(Animal):
def __init__(self, nome):
super().__init__(nome)
def mover(self):
return "Correndo"
class Ave(Animal):
def __init__(self, nome):
super().__init__(nome)
def mover(self):
return "Voando"
class Morcego(Mamifero, Ave):
def __init__(self, nome):
super().__init__(nome)
def mover(self):
return "Voando e Correndo"
Avalie as seguintes afirmações sobre herança múltipla e o problema do diamante no
código apresentado:
I. A classe Morcego herda atributos e métodos de ambas as classes Mamifero e Ave.
II. O problema do diamante é resolvido em Python usando a ordem de resolução de
método (MRO) para determinar qual método herdar.
III. A chamada a super() no construtor da classe Morcego invoca o construtor da
classe Mamifero.
IV. A classe Animal deve ser explicitamente chamada na classe Morcego para evitar
o problema do diamante.
A) Apenas as afirmativas I e II estão corretas.
B) Apenas as afirmativas I e IV estão corretas.
C) Apenas as afirmativas I, II e III estão corretas.
D) Apenas as afirmativas II e IV estão corretas.
Questão 4 de 5
5. O conceito de herança na programação orientada a objetos permite que uma
classe (subclasse) herde atributos e métodos de outra classe (superclasse). Isso
promove a reutilização de código e facilita a manutenção do sistema. Além disso, a
herança possibilita a especialização de classes, permitindo que subclasses
implementem comportamentos específicos.
Suponha que você está desenvolvendo um sistema para uma escola de
programação. Você criou uma classe base Curso e duas subclasses,
CursoPresencial e CursoOnline, para representar os diferentes tipos de cursos
oferecidos.
class Curso:
def __init__(self, nome, duracao):
self.nome = nome
self.duracao = duracao
def descricao(self):
return f"Curso: {self.nome}, Duração: {self.duracao} horas"
class CursoPresencial(Curso):
def __init__(self, nome, duracao, local):
super().__init__(nome, duracao)
self.local = local
def descricao(self):
return f"{super().descricao()}, Local: {self.local}"
class CursoOnline(Curso):
def __init__(self, nome, duracao, plataforma):
super().__init__(nome, duracao)
self.plataforma = plataforma
def descricao(self):
return f"{super().descricao()}, Plataforma: {self.plataforma}"
Avalie as seguintes afirmações sobre a herança e o código apresentado:
I. A classe CursoPresencial herda os atributos nome e duração da classe Curso.
II. O método descricaona classe CursoOnline sobrescreve o método descricao da
classe Curso.
III. A função super() é usada para chamar o construtor da superclasse dentro das
subclasses.
IV. A classe Curso é uma subclasse de CursoOnline.
Assinale a alternativa CORRETA:
A) Apenas as afirmativas I e IV estão corretas.
B) Apenas as afirmativas II e IV estão corretas.
C) Apenas as afirmativas I, II e III estão corretas.
D) Apenas as afirmativas I e II estão corretas.
Esta é a última questão de sua avaliação.
Depois de clicar em "Responder e Concluir »" não será possível fazê-la novamente.