Prévia do material em texto
IMPORTANTE Data limite para aplicação desta prova: 15/04/2023 UNIP EAD Código da Prova: 123394181159 Curso: SUP TEC EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Série: 3 Tipo: Bimestral - Substitutiva Aluno: 2298106 - ROBERTO SOUZA DA SILVA I - Questões objetivas – valendo 5 pontos II - Questões discursivas – valendo 5 pontos Gerada em: 14/04/2023 às 18h01 ------------------------------------------------------------------------------------------------------------ Instruções para a realização da prova: 1. Leia as questões com atenção. 2. Confira seu nome e RA e verifique se o caderno de questão e folha de respostas correspondem à sua disciplina. 3. Faça as marcações primeiro no caderno de questões e depois repasse para a folha de respostas. 4. Serão consideradas somente as marcações feitas na folha de respostas. 5. Não se esqueça de assinar a folha de respostas. 6. Utilize caneta preta para preencher a folha de respostas. 7. Preencha todo o espaço da bolha referente à alternativa escolhida, a caneta, conforme instruções: não rasure, não preencha X, não ultrapasse os limites para preenchimento. 8. Preste atenção para não deixar nenhuma questão sem assinalar. 9. Só assinale uma alternativa por questão. 10. Não se esqueça de responder às questões discursivas, quando houver, e de entregar a folha de respostas para o tutor do polo presencial, devidamente assinada. 11. Não é permitido consulta a nenhum material durante a prova, exceto quando indicado o uso do material de apoio. 12. Lembre-se de confirmar sua presença através da assinatura digital (login e senha). Boa prova! ------------------------------------------------------------------------------------------------------------ Questões de múltipla escolha Disciplina: 685760 - PROGRAMAÇÃO ORIENTADA A OBJETOS I Questão 1: Dada a seguinte tela de saída: Considerando as três propostas de programa a seguir: Programa I static void Main(string[] args) { int a=345, b=543, c=435; Console.WriteLine("seq\n{1}\n{0}\n{2}", b,a,c); Console.ReadKey(); } Programa II b) static void Main(string[] args) rsouz Retângulo rsouz Destacar rsouz Destacar rsouz Destacar { int a=345, b=543, c=435; Console.WriteLine("seq\n{0}\n{1}\n{2}", a,b,c); Console.ReadKey(); } Programa III c) static void Main(string[] args) { int a=345, b=435, c=543; Console.WriteLine("seq\n{0}\n{2}\n{1}", a,b,c); Console.ReadKey(); } Qual a afirmação é correta? A) Apenas o programa I mostra a tela anterior. B) Apenas o programa II mostra a tela anterior. C) Apenas o programa III mostra a tela anterior. D) Mais de um dos programas mostram a tela. E) Nenhum dos programas apresentados mostra a tela anterior. Questão 2: No programa abaixo qual o código que deve ser colocado no quadro 1 para que saída corresponda à tela. static void Main(string[] args) { List <char> palavra = new List<char>(); palavra.Add('c'); palavra.Add('o'); palavra.Add('n'); palavra.Add('t'); palavra.Add('a'); palavra.Add('t'); palavra.Add('o'); foreach (char c in palavra) Console.Write(c); Console.ReadLine(); } A) palavra.Remove('t'); palavra.Remove ('o'); B) palavra.RemoveAt(6); palavra.Remove('t'); palavra.Remove ('a'); Adm2 Máquina de escrever xx Adm2 Máquina de escrever xx palavra.Add ('a'); C) palavra.RemoveAt(6); palavra.RemoveAt(7); D) palavra.Remove('o'); palavra.RemoveAt(6); E) palavra.RemoveAt(6); palavra.Remove('o'); Questão 3: Leia o texto extraído do site Toyota.com.br: Toyota apresenta primeiro protótipo de veículo híbrido flex do mundo A Toyota apresentou no dia 19 de março o primeiro protótipo de veículo híbrido equipado com motor de combustão interna flexfuel. O projeto, que combina um propulsor elétrico e outro flexível a gasolina e etanol, colocou lado a lado as equipes de engenharia da Toyota Motor Corporation, no Japão, e da Toyota do Brasil para somar esforços e buscar sintonia entre as tecnologias. O trabalho foi direcionado no sentido de extrair o potencial máximo de cada solução: alta eficiência, baixíssimos níveis de emissões e capacidade de reabsorção dos impactos de gás carbono, ao utilizar combustível oriundo de fonte 100% renovável. O protótipo foi construído sobre a plataforma do modelo Prius, usada como base para condução dos trabalhos. A marca ainda estuda possibilidades de produção dessa tecnologia no Brasil no futuro... (texto e imagem extraídos de https://www.toyota.com.br/mundo-toyota/noticias/toyota-apresenta-primeiro-prototipo-de-veiculo-hibrido-flex-do- mundo/) Acesso em: 08/12/2019 Considerando que na classe Carro e o método acelerar funciona administrando a combinação entre os combustíveis gasolina e álcool além da eletricidade entre os elementos motrizes. O computador de bordo identifica a disponibilidade do combustível e da bateria, além da velocidade necessária, processa as informações e envia como parâmetro ao método acelerar os valores do volume em mililitros, ou o valor da tensão em Volts para resultar na ação imposta pelo motorista. Este é um exemplo que ilustra uma característica da Orientação a Objeto chamada: A) Associação B) Polimorfismo C) Herança D) Encapsulamento E) Flexibilidade. Questão 4: Considere o programa abaixo: class A { public int n; public A() : this(2) { } public A(int valor) Adm2 Máquina de escrever xx Adm2 Máquina de escrever xxx { this.n = valor + 3; } } class B : A { public int m; public B() : this(5) { } public B(int valor) : base(valor) { this.m = base.n + 7; } } class Program { static void Main(string[] args) { B b1 = new B(); B b2 = new B(1); Console.WriteLine(b1.m + " " + b2.m); } } Qual a saída do programa acima? A) B) C) D) E) Questão 5: Observando o programa a seguir: Adm2 Máquina de escrever xx namespace ConsoleApplication1 { public class Data { public int dia, mes, ano; public Data(int d, int m, int a) { dia = d; mes = m; ano = a;} public virtual void get() { Console.Write(dia + "/" + mes + "/" + ano); } public override string ToString() { return dia + "/" + mes + "/" + ano; } } public abstract class Pessoa { public string nome; public int identidade; public Data nascimento; public Pessoa(string n, int id, Data d) { nome = n; identidade = id; nascimento = d; } } public class Funcionario : Pessoa { public Data admissao; public float salario; public Funcionario(string nome, int id, Data nasc, Data admiss, float sal): base(nome, id, nasc) { admissao = admiss; salario = sal; } } public class Gerente : Funcionario { public string departamento; public Data inicioGerencia; public Gerente(string depto, Data inic, float sal, Data adm, Data nasc, string nome, int id): base(nome, id, nasc, adm, sal) { departamento = depto; inicioGerencia = inic; } } public class Cliente : Pessoa { public double limCredito; public Cliente(string nome, int id, Data nasc, double lim): base(nome, id, nasc) { limCredito = lim; } } public class Banco { public static float valorEmprestimo(Pessoa p) { float valor; if (p is Gerente) { valor = ((Gerente)p).salario * 10; } else if (p is Funcionario) { valor = ((Funcionario)p).salario * 5; } else { valor = 0; } return valor; } public static float ReajSalF(Funcionario f) { if (((Funcionario)f).salario > 2000) ((Funcionario)f).salario *= 1.2f; else if (((Funcionario)f).salario <= 2000 && ((Funcionario)f).salario <= 1000) ((Funcionario)f).salario *= 1.3f; else ((Funcionario)f).salario *= 1.4f; return ((Funcionario)f).salario; } public static double ReajLimcr(Cliente c) { if (((Cliente)c).limCredito > 500) ((Cliente)c).limCredito *= 1.5; else ((Cliente)c).limCredito *= 1.4; return ((Cliente)c).limCredito; } } class Program { public static void Main(string[] args) { Data dn = new Data(10, 12, 1980); Data da = new Data(5, 8, 2012); Funcionario f2 = new Funcionario("Jose", 999, dn, da, 4000); Gerente g1 = new Gerente("Contabilidade", da, 5000, da, dn, "Marcos", 99999); Cliente c1= new Cliente("Maria", 1111, dn, 3500); Console.WriteLine(g1.ToString() + "\n Emprestimo: " + Banco.valorEmprestimo(g1)); Console.WriteLine(f2.ToString() + "\n Reajuste: " + Banco.ReajSalF(f2)); Console.WriteLine(c1.ToString() + "\n Novo Lim: " + Banco.ReajLimcr(c1)); } } } Qual dos métodos a seguir implementa o POLIMORFISMO? A) Data.get() B) Banco.ReajSalF C) Banco.ReajLimcr D) Funcionario:Pessoa E) Banco.valorEmprestimo Questão 6: Sobre a declaração e uso de classes, métodos e atributos especificamente na linguagem de programação C#, é correto afirmar que: A) Em uma mesma classe pode-se declarar dois métodos que apresentam o mesmo nome. B) Em um método de uma classe filha, a cláusula this é utilizada para acessar um atributo da classe mãe. C) Uma classe filha não pode sobrepor um método ou atributo da classe mãe se na classe mãe eles estiverem com o atributo protected. D) Uma classe abstrata pode ser implementada por uma classe concreta através da instrução implements. E) Uma interface pode ter atributos que podem ser utilizados nas classes herdeiras. Questão 7: Considere o programa a seguir: namespace Prova { abstract class Classe1 { public virtual int soma(int A) { return a+1; } } class Classe2:Classe1 { public override int soma(int a) { return a + 2; } } class Classe3 : Classe1 { public int soma(int a) { return base.soma(a + 3); } } class Classe4 : Classe3 { public int soma(int a) { return base.soma(a + 4); } } class Program { static void Main(string[] args) { Classe2 c2 = new Classe2(); Classe3 c3 = new Classe3(); Classe4 c4 = new Classe4(); Adm2 Máquina de escrever xx Adm2 Máquina de escrever xx Console.WriteLine("{0} {1} {2}", c2.soma(0), c3.soma(0), c4.soma(0)); } } } Qual é o resultado apresentado na tela? a) 2 4 8 B) 2 4 5 C) 2 5 8 D) 3 4 8 E) 3 5 9 Questão 8: Considere o programa abaixo: class TesteErro { public void testar(int valor) { if (valor > 0) { DivideByZeroException er1 = new DivideByZeroException(); throw er1; } if (valor == 0) { IndexOutOfRangeException er2 = new IndexOutOfRangeException(); throw er2; } if (valor < 0) { ArgumentException er3 = new ArgumentException(); throw er3; } } } class Program { static void Main(string[] args) { TesteErro t1 = new TesteErro(); try { Console.Write("Entre com um valor:"); int n = Convert.ToInt32(Console.ReadLine()); t1.testar(n); } catch (FormatException) { Console.WriteLine("Guitarra"); } catch (DivideByZeroException) { Console.WriteLine("Violino"); } catch (IndexOutOfRangeException) { Adm2 Máquina de escrever xx Console.WriteLine("Piano"); } catch (ArgumentException) { Console.WriteLine("Bateria"); } } } Qual dos programas executou o programa acima: A) B) C) D) E) Questões discursivas Questão 1: O programa a seguir não apresenta encapsulamento: public class Telefone { public String modelo; } public class Prova01 { public static void Main(String[] args) { Telefone telefone; telefone = new Telefone(); telefone.modelo="FPS01"; Console.WriteLine("Modelo.........:"+telefone.modelo); } } Faça o encapsulamento usando os métodos getNome( ) e setNome( ) da classe Telefone, e modifique a classe Prova01. Questão 2: Considere a seguinte classe Produto: Escreva um programa (apenas o método Main) que instancie dois objetos da classe Produto e imprima seu conteúdo gerando a seguinte saída: