

Seu próximo nível começa aqui
Com a Assinatura Ilimitada, você tem tudo que precisa para sua aprovação.
Com a Assinatura Ilimitada, você combina prática, teoria e método em uma única assinatura com tudo que você precisa para sua aprovação.
Em uma linguagem de programação orientada a objetos, a habilidade de uma variável de objeto em assumir formas diferentes é chamada de:
Encapsulamento.
Abstração.
Herança.
Polimorfismo.
Interface.
Analise o seguinte trecho de código Java:
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayLista { public static void main(String[] args) { List<String> str = Arrays.asList("c", "a", "b"); str.sort(); System.out.println(str.toString()); } } |
O que será escrito na saída padrão após a execução?
[c, a, b]
[a, b, c]
['a', 'b', 'c']
["a", "b", "c"]
Mensagem de erro de compilação.
Analise as afirmativas abaixo a respeito de programação estruturada:
I. A programação estruturada exclui-se do conjunto de paradigmas de programação composto exclusivamente pelos modelos orientado a objetos, lógico e funcional.
II. A programação estruturada também pode ser denominada imperativa ou procedural.
III. No paradigma estruturado, o problema é dividido em problemas menores, de mais fácil solução, chamados de sub-rotinas ou funções.
IV. Toda sub-rotina ou função deve receber um ou mais parâmetros de entrada e deve retornar ao menos um valor de saída.
Marque a opção que contém as afirmativas CORRETAS.
I e II apenas.
II e III apenas.
I e III apenas.
II e IV apenas.
Todas as afirmações estão corretas.
Qual o retorno esperado após a execução do programa?
1
6
36
72
576
A linguagem Java possui inúmeros pacotes que podem ser utilizados por desenvolvedores para diferentes propósitos. Um pacote utilizado para o desenvolvimento de interfaces gráficas no Java e que possui como um de seus componentes o JFrame é o:
java.lang
javax.swing
java.util
java.io
javax.xml
O código
[[x <- data.frame(“id” = 1:5, “idade” = c(33,50,47,51,54), “nome” = c(“Yeshua”, “Mariah”, “Paul”, “John”, “Peter”)) x[3]
apresentará, ao ser executado, o resultado a seguir.
-id idade nome
1 1 33 Yeshua
2 2 50 Mariah
3 3 47 Paul
Certo
Errado
Qual das seguintes afirmações sobre a classe std::unique_ptr, introduzida na versão 11 da linguagem de programação C++, é verdadeira?
O usuário é responsável por liberar a memória ocupada por objetos do tipo std::unique_ptr usando o comando delete para evitar um vazamento de memória.
Múltiplas cópias do mesmo objeto do tipo std::unique_ptr podem coexistir, o que é chamado de ponteiro compartilhado.
Um objeto do tipo std::unique_ptr pode ser nulo, assim como um ponteiro padrão da linguagem.
Um objeto do tipo std::unique_ptr não pode apontar para vetores ou listas.
Um objeto do tipo std::unique_ptr usa mais memória do que um ponteiro padrão da linguagem, já que precisa armazenar o número de referências ao objeto.
A Programação Orientada a Objetos baseia-se na definição de classes e na criação de objetos a partir dessas classes, durante a execução do programa. Neste contexto, considere a ilustração a seguir:

Com base na imagem e à luz dos fundamentos da orientação a objetos, considere as seguintes definições:
I- É possível observar o conceito do polimorfismo na figura, pois os três animais realizam o mesmo método, ainda que de modo distinto.
II- Os três objetos, apesar de serem de espécies distintas, possuem alguns atributos e métodos em comum, o que caracteriza o conceito de herança.
III- Ao desconhecer os detalhes internos da ação de falar nos animais, estamos diante de um exemplo de proteção.
IV- Através dos balões de diálogos presentes na figura e a forma como foram gerados, verifica-se o encapsulamento dos objetos.
Assinale a alternativa que traz os itens CORRETOS.
Somente as afirmações I e II.
Somente as afirmações I e III.
Somente as afirmações I e IV.
Somente as afirmações II e III.
A linguagem C possui um recurso denominado “ponteiro”. Este tipo de recurso funciona como uma variável que aponta para uma posição específica da memória.
Assinale a alternativa que apresenta, corretamente, a declaração de um ponteiro para um inteiro.
p = &pointer
int #p
int *p
pointer(int(p))
pointer.int = p
Uma das principais diferenças entre linguagens de programação interpretadas e compiladas é a forma como o código é processado e executado. Enquanto as linguagens compiladas passam por um processo de compilação, que transforma o código fonte em código de máquina executável, as linguagens interpretadas executam o código fonte diretamente em tempo de execução. Com base nessa diferença, qual das seguintes afirmações é verdadeira sobre as vantagens das linguagens de programação interpretadas em relação às linguagens compiladas?
Linguagens interpretadas geralmente têm uma execução mais lenta do que as linguagens compiladas, pois o código precisa ser processado em tempo de execução.
Código compilado é geralmente mais fácil de depurar do que código interpretado, pois o processo de compilação pode detectar erros de sintaxe e semântica no código fonte antes da execução.
Linguagens interpretadas são geralmente menos portáteis do que linguagens compiladas, pois dependem da disponibilidade do interpretador em cada sistema operacional em que são executadas.
Nas linguagens interpretadas, o código pode ser modificado e executado em tempo de execução, sem a necessidade de recompilar o código.
Código compilado geralmente tem um tamanho menor do que código interpretado, pois não precisa incluir o interpretador junto com o programa executável.
Considere o trecho de código abaixo escrito em Python (versão 3.11.3) para resposta da Questão 25.
cesta = [{
‘fruta ': 'abacaxi ',
‘quantidade ': 7,
'valor': 5.5
},{
'fruta': 'melancia',
'quantidade': 5,
'valor': 3.5
},{
'fruta': 'laranja',
'quantidade': 12,
'valor': 2.5
}]
A sintaxe correta para dobrar o valor da fruta abacaxi é
cesta[0]['valor'] *= 2.
cesta[1]['valor'] *= 2.
cesta['abacaxi']['valor'] *= cesta['abacaxi']['valor'].
cesta['abacaxi']['valor'] = cesta['abacaxi']['valor'] * 2.
O código Java a seguir foi escrito considerando a openJDK 17.0.3.
1▼ 2 3▼ 4 5 6 7 8▼ 9 10 11 12 13 14 15 | public class Main { . --public static float calc (int z, int x, int y){ ----return x / (y-z) * z; ----⋮ --} ----⋮ --public static void main(String[] args) { ----int y = 6; ----int x = 9; ----int z = 3; ----System.out.print(calc(x,y,z)); --} } |
Ao executar este trecho de código o resultado mostrado na tela será:
1
3
-3
9
-9
Servlets Java baseados na classe HttpServlet estão sujeitos a lidar com múltiplas requisições simultâneas, cada qual sendo processada por um thread distinto. Como boa prática de programação, isso implica que
deve ser implementado acesso sincronizado a recursos compartilhados, tais como arquivos e conexões a bancos de dados.
se o método doPost for implementado por meio de override, então doGet não deve ser implementado.
deve ser implementado um controle de sessão baseado em cookies.
deve ser utilizado o protocolo HTTPS e não o HTTP, pois o primeiro lida melhor com múltiplas requisições simultâneas.
deve ser implementado o método doTrace por meio de override.
É praticamente impossível falar em orientação a objetos sem relacioná-la ao conceito de classes. Analise o seguinte código e selecione a alternativa que mostra a relação entre as duas classes.
1 class Veiculo :
2 __ def __init__ (self, tipo, chassi, marca, modelo, ano):
3 ____ self.tipo = tipo
4 ____ self.chassi = chassi
5 ____ self.marca = marca
6 ____ self.modelo = modelo
7 ____ self.ano = ano
8 class Motocicleta(Veiculo):
9 __ def __init__ (self, tipo, chassi , marca, modelo, ano, cilindrada):
10 ____ super().__init__(tipo, chassi, marca, modelo, ano)
11 ____ self.cilindrada = cilindrada
Polimorfismo
Atributos
Métodos
Encapsulamento
Herança
Você foi requisitado(a) para auxiliar na solução de um novo controle de estoque. Você decidiu utilizar a classe Matemática para realizar as operações matemáticas necessárias para tal controle.
class Matematica {
public int multiplicacao(int a, int b) {
return a * b;
}
public double multiplicacao(double a, double b) {
return a * b;
}
public int exponenciacao(int a, int b) {
int resultado = 1;
for (int i = 0; i < b; i++) {
resultado *= a;
}
return resultado;
}
}
Qual é o conceito apresentado pelos métodos multiplicação e exponenciação na classe Matemática?
Herança.
Pacotes.
Sobrecarga de método
Polimorfismo.
Interface.
Considere os programas em C# e em PHP a seguir:
C# using System; namespace TratamentoExcecao ( class Program ( static void Main(:string[] arqs) ( try( double num = 10; double den = 0; double r = FazDivisao(num, den); Console.WriteLine($"Resultado da divisao: {r}"); } catch (DivideByZeroException ex) { Console.WriteLine($"Erro: (ex.Message}"); } catch (Exception ex) { Console.WriteLine($"Erro desconhecido: {ex.Message}"); } }
static double FazDivisao(double n, double d) ( if (d==0) ( ......I } return n / d; } } } | PHP <?php function divide($a, $b) { if ($b === 0) { ......II } return $a / $b; } try { $num1 = 10; $num2 = 0;
$resultado = divide($num1, $num2); echo "O resultado da divisão é: " . $resultado; } catch (Exception $e) { echo "Erro: " . $e->getMessage (); } ?> |
Em condições ideais, para que cada um dos programas possa ser executado fazendo o tratamento de exceção relativo à divisão e sejam impressas as frases exatamente iguais, as lacunas I e II devem ser corretamente preenchidas com:
Lacuna I | Lacuna II |
throw new Exception ("Divisão por zero não é válida.") | throw new Exception ("Divisão por zero não é válida.") |
Lacuna I | Lacuna II |
throw new DivideByZeroException("Divisão por zero não é válida.") | throw new DivideByZeroException("Divisão por zero não é válida.") |
Lacuna I | Lacuna II |
throw new DivideByZeroException("Divisão por zero não é válida.") | throw new Exception ("Divisão por zero não é válida.") |
Lacuna I | Lacuna II |
throw new Exception ("Divisão por zero não é válida.") | throw new DivideByZeroException("Divisão por zero não é válida.") |
Lacuna I | Lacuna II |
throw new DivideByZeroException("Divisão por zero não é válida.") | throw new Exception_DivideByZero("Divisão por zero não é válida.") |
Classes em linguagens com suporte a orientação a objetos como C++, Java, Python etc. têm, entre outros usos, o de prover acesso controlado a informações, encapsulando as mesmas. Suponha que um programador deseja criar uma classe foo que armazena localmente um valor x_foo, que não é acessível de forma alguma por código externo a foo. Suponha ainda que foo possui um método público mx_foo(), que pode alterar o valor de x_foo a cada vez que é chamado, e que a cada chamada de mx_foo() o valor inicial de x_foo visto por este método é aquele deixado pela chamada de mx_foo() imediatamente anterior à chamada corrente em questão. Isso:
Não é possível de ser implementado em linguagens com suporte a orientação a objetos.
É passível de implementação se a linguagem de programação permitir declaração de variáveis locais em métodos da classe foo.
É passível de implementação se a linguagem de programação permitir a declaração de variáveis locais estáticas na classe foo.
É passível de implementação se a linguagem de programação permitir declaração de variáveis externas na classe foo.
É passível de implementação em uma linguagem de programação que permita declaração de variáveis locais automáticas em métodos da classe foo.
No âmbito da programação orientada a objetos, utiliza-se o conceito de polimorfismo, sobre o qual é correto afirmar que:
associa-se o mesmo nome para mais de um método, normalmente contendo códigos distintos entre si.
o número de atributos e de métodos deve ser o mesmo em todas as classes do programa.
deve haver um único nome para todos atributos e métodos contidos no programa.
cada classe somente pode comportar um único método.
os métodos com o mesmo nome devem ser compilados em compiladores distintos entre si.
Sobre o conceito de herança em programação orientada a objetos, assinale a alternativa correta.
Proteger os atributos e métodos da classe
Possibilitar o compartilhamento de atributo, métodos e outros recursos entre classes
Controlar atributos de outras classes
Definir métodos em outras classes
O Diagrama de Classes do UML permite apresentar, de maneira visual, as classes presentes em um sistema desenvolvido, seguindo o paradigma de orientação a objetos. Considerando os atributos de uma classe, são utilizados símbolos para representar os modificadores de acesso deles, também conhecidos como “visibilidade dos atributos”. O símbolo que representa o modificador de acesso “protegido” (protected) é o:
–
+
#
~
/