Prévia do material em texto
Compilado - Programação Orientada a Objetos I
1- Leia a definição a seguir:
“É o princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que têm a mesma identificação, mas comportamentos distintos, especializados para cada classe derivada, usando para tanto uma referência a um objeto do tipo da superclasse”. Qual é o conceito definido no trecho acima?
C)Polimorfismo
2- A respeito dos conceitos de programação orientada a objeto e da linguagem de programação C#, assinale a opção correta.
D) Na linguagem C#, métodos abstract de classe abstract não tem implementação definida. As subclasses dessa classe abstrata definem implementação para tais métodos.
3- Segundo a Microsoft quais os pilares da programação orientada a objetos?
a- polimorfismo, herança, associação.
b- abstração, herança , encapsulamento.
C- Herança, polimorfismo e encapsulamento.
4- Leia as definições de laços a seguir:
I - Possui três componentes para controle de suas iterações (voltas do laço), sendo que, o primeiro componente refere-se à declaração da variável de controle do laço. O segundo componente é uma expressão lógica que testa a condição de encerramento a cada iteração e o terceiro componente é o controle do laço que determina o passo de cada interação.
II - é usado quando não sabemos o número de vezes que devemos executar um bloco de código, mas apenas a condição que deve ser satisfeita para executar, a condição é uma expressão booleana que deverá ser verdadeira para garantir pelo menos a primeira ou a próxima iteração caso contrário o bloco não será executado.
III- é usado quando queremos que um bloco de código seja executado pelo menos uma vez. A condição a ser satisfeita se encontra no fim do bloco de código e não no começo.
Qual a relação correta dos laços?
D) I-for, II-while, III-do while
5- Um atributo serve para:
a) Indicar as possíveis informações armazenadas por um objeto de uma classe, representando o estado de cada objeto.
B) Definir o tipo de classe.
c) Procedimento que formam os comportamentos...
6- Heranças podem ser definidas como:
a) ações de uma classe executadas em outra classe.
B) A possibilidade do uso de uma classe em outra previamente existente reutilizando seus métodos e atributos.
c) característica de operações de um objeto herdada de uma classe.
d) ações executadas por uma classe, sempre utilizadas em tempo de execução.
e) a reutilização de todos os métodos de um objeto instanciado a partir de uma classe encapsulada e polimórfica.
7- 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 mesma classe filha, a cláusula this e utilizada para acessar um tributo 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 estiver o atributo protected
8- A descrição abaixo refere-se a qual das técnicas apresentadas pelo paradigma da Programação Orientada a Objetos?
“É uma forma de reutilização de software na qual uma nova classe é criada, observando membros de uma classe existente e aprimorada com capacidades novas ou mesmo modificadas de acordo com a necessidade da classe atual”
D) Herança
9- Observando o programa a seguir:
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;… (programa com mais de uma folha )
Qual dos métodos a seguir implementa o POLIMORFISMO?
a) Data.get()
b) Banco.ReajSalF
c) Banco.ReajLmcr
d) Funcionario:Pessoa
E) Banco.valorEmprestimo
10- Observando o programa a seguir: …. programa de mais de uma folha …
Qual dos métodos a seguir implementa o POLIMORFISMO?
a) Data.get()
b) Banco.ReajSalF
c) Banco.ReajLmcr
d) Funcionario:Pessoa
E) Banco.valorEmprestimo
11- Leia a definição a seguir:
“Consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados.”
A) Herança
B) Encapsulamento
C) polimorfismo
D) interface
E) instanciação
12- Entre as frases abaixo, coloque a letra “O” para vantagem do POO e a letra “E” para os paradigmas estruturados.:
(E) em termos de velocidade de processo tem um desempenho superior
(E) o aprendizado do paradigma e bem mais facil no inicio
(O) uma distribuição de código um pouco mais logica, funcional e melhor encapsada, tornando a manutenção e extensão do codigo mais facil e com menos riscos de inserção de erros
(O) é mais fácil gerenciar o desenvolvimento deste software em grandes equipes, partindo de uma especificação UML, antes de iniciar o desenvolvimento do software em si.
(E) sem necessidade de ter uma base conceitual bem formado, bastando saber poucos comandos e para fazer um programa simples
A) E - E - O - O -E
13- Leia a definição:
“Acontece quando ocorre mais de um método de uma mesma classe com o mesmo nome e parâmetros diferentes.”
Qual alternativa relaciona-se com a definição apresentada?
B) Sobrecarga.
14- Relacione a palavra-chave da linguagem C# à sua respectiva descrição.
Palavra-chave:
II- base
III- Throw
E) II – Q, III – P.
15- Observe o código a seguir:
public class Pessoa
{
private String nome;
private String humor;
public Pessoa(String nome)
{
Qual das alternativas mostra um comando válido para se criar um objeto dessa classe?
E) Pessoa p1= new Pessoa(“Maria”);
16- Considerando o seguinte trecho de programa:
Se o programa não apresentar erros, pode-se concluir com relação à classe Aluno:
I - Ela não necessita de sobrecarga do método construtor.
II - Ela possui um método cujo cabeçalho é public int result(string v) sendo v uma variável que será utilizada dentro do método.
III - Ela possui um método cujo cabeçalho é public string result(int v) sendo v uma variável que será utilizada dentro do método.
Assinale a alternativa correta:
B) As conclusões II e III estão corretas.
17- Dos conjuntos de ferramentas fornecidos pelos C# qual não é utilizado para a programação de laços?
E) Switch case.
18- Dado o código abaixo com as seguintes classes: A,B e program:
Qual resultado será apresentado como saída de execução do programa Program?
A- o programa compila e o numero 4 e exibido
B- O programa compila e o número 43 é exibido.
C- um erro na linha 10 faz o programa não compilar
D- nada e exibido pois B não tem construtor
E- o programa compila e o numero 7 e exibido
19- Leia a definição a seguir:
“Consiste na separação de aspectos internos e externos de um objeto. Este mecanismo é utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os métodos que alteram estes estados.”
A) Herança
B) Encapsulamento
C) polimorfismo
D) interface
E) instanciação
20- Os erros gerados durante a execução de um programa implementado na linguagem C# devem ser controlados com uma estrutura, que pode combinar o uso de qual dos seguintes blocos de tratamento de exceção apresentados a seguir?
B) No mínimo com try e catch ou try e finally. (correta).
21- Considere as afirmativas a seguir:
I- A classe Object pode ser herdeira de qualquer outra classe podendo receber serviços das classes pais.
II- A classe Object é classe base fundamental de todas as classes, ela é a raiz da hierarquia de tipos.
III- Qualquer método da classe Object pode ser sobrescrito nas subclasses utilizando o modificador virtual.
B) Apenas a afirmativa II está correta.
22- No programa abaixo, qual o código que deve ser colocado no quadro 1 para que a saída correspondente à tela.
B) palavra.RemoveAt(6);
palavra.Remove('t');
palavra.Remove('a');
palavra.Add('a');
23- Analise as afirmativas a seguir:
I- Mensagem é uma chamada a umobjeto para invocar um de seus métodos, ativando um comportamento descrito por sua classe. também pode ser direcionada diretamente a uma classe (através de uma inovação a um método estático).
II- Herança é o mecanismo pelo qual uma classe pode estender outra classe, aproveitando seus comportamentos (métodos) e variáveis possíveis (atributos).
III- Associação é o mecanismo pelo qual um objeto utiliza os recursos de outro. Elas podem ter a forma “um-para-um”, quando um objeto troca mensagens com outro ou “um-para-muitos”, quando um objeto troca mensagens com uma coleção de outros objetos.
Sobre as afirmativas apresentadas, assinale a alternativa correta:
E - As afirmativas I, II e III estão corretas
24- Entre as principais vantagens da POO, podemos citar:
E) Tem uma alta reusabilidade.
25- Um objeto pode ser definido como:
A) uma instância de uma classe
B) Uma característica de uma coisa do mundo real.
C) uma função
26- Dadas as declarações abaixo:
Quais criarão um vetor?
A- 1 e 3
27- Dada a seguinte tela de saída:
Considerando as três propostas do programa a seguir:
Qual afirmação está 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.
(basta analisar os posicionamentos das letras e números, fiquem atentos pq pode mudar facilmente a ordem em alguma prova)
e) nenhum dos programas apresentados mostra a tela anterior
28- O programa a seguir apresenta um erro, mas todos do mesmo tipo:
Considere as possíveis soluções para o erro, sem comprometer a segurança:
I - Colocar o construtor nas classes ContaCorrente e ContaEspecial
II -Alterar a privacidade dos atributos número, cliente e saldo de private para protect.
III-Alterar a privacidade de todos os métodos depositar e sacar para private
Assinale a alternativa correta:
a- apenas a solução I corrige o programa
b- apenas a solução II corrige o programa
E) Nenhuma das soluções corrige o programa
29- Considere o programa a seguir:
Qual é o resultado apresentado na Tela?
Qual é o resultado apresentado na tela?
A) 2 4 8
b) 2 4 5
c) 2 5 8
P) Qual a tela de saída do programa a seguir:
static void Main(string[] args)
{
string s, s1, d1, e1, m1;
s1 = “Orientação”;
s = “Objeto”;
s += (“ a “+s1);
d1 = s.Substring(0,6);
e1 = s.Substring(s.Length - 10, 10);
m1 = s.Substring(6,3);
Console.WriteLine(e1+m1+d1);
}
a) Orientação a Objeto
b) O a ObjetoaçãOrient
c) O a ObjetoaçãOrient
d) Objeto a Orientação
e) A ObjetoOrientação
Discursivas:
1- Ao longo da história da computação, foram utilizados basicamente três paradigmas de desenvolvimento de sistemas. O primeiro foi um paradigma sem nome, o qual, mais tarde, ficou conhecido como Paradigma Não Estruturado, justamente pelo fato de ter sido substituído pelo Paradigma Estruturado. Atualmente o principal paradigma de desenvolvimento de sistemas é o Paradigma Orientado a Objetos.
Explique quais são os dois componentes de um paradigma de desenvolvimento de sistemas.
R.: Atributos e métodos;
os atributos descrevem as características da classe
e os métodos, as ações que a classe executa.
2- Segundo diversos autores, o principal recurso introduzido pelo Paradigma Orientado a Objetos é a herança e uma de suas consequências, o polimorfismo. Explique o que é herança e como ela permite que se utilize polimorfismo entre objetos.
A herança permite criar novas classes a partir de classes já existentes, aproveitando-se das características existentes na classe a ser estendida, junto com o polimorfismo, nos permite selecionar funcionalidades que um programa irá utilizar de forma dinâmica, durante sua execução.
1- A principal inovação introduzida pelo Paradigma Estruturado em relação ao Paradigma Não Estruturado foi o abandono do uso de desvios incondicionais. Assim, uma linguagem estruturada só utiliza desvios condicionais com o “if”, o “while” e o “-do-while”. O próximo paradigma, o Paradigma Orientado a Objetos ao introduzir o conceito de objeto (entre diversos outros conceitos). Explique o que é um objeto e explique suas partes componentes.
R.: Objetos podem ser considerados uma imitação do comportamento intrínseco de entidades reais. Tal como em sistemas reais, em uma POO não é viável abrir um objeto e olhar em seu interior e tampouco alterar seu estado. Nesse paradigma, a única forma de fazer evoluir um programa é permitir que objetos compartilhem dados entre si a partir de trocas explícitas de mensagens.
2- Explique quais são os dois componentes de um paradigma de desenvolvimento de sistemas.
Análise de sistemas, linguagens de programação.
3- Uma vez que são definidas as classes e que elas são utilizadas dentro do programa em forma de objetos, estes podem assumir duas formas de existência dentro do programa: objetos transientes ou objetos persistentes. Qual a diferença entre objetos transientes e objetos persistentes?
Transientes trabalham em meios voláteis, em memória, uma vez finalizada a execução do programa todos os dados referentes ao objeto são perdidos.
Persistentes trabalham em meios não voláteis, discos ou banco de dados, permitindo que mesmo após finalizada a execução do programa os dados possam ser recuperados em uma próxima execução.
4- Considere o seguinte programa:
Qual é o código que deve ser escrito no retângulo vermelho para que a saída gerada pelo programa seja a seguinte?
R.: a = 10; a >5; a--
5- Dado o programa a seguir:
class Prova
{
Monte na classe Prova um construtor sem parâmetros atribuindo os valores “LPT” para disciplinas e 8 questões, e um construtor que faça a inicialização conforme a instância p2.
class Prova
{
private String disciplina;
private int questoes;
public Prova()
{
this.disciplina = "LTP";
this.questoes = 8;
Console.WriteLine("p1 = " + this.disciplina + "\nquestões: " + this.questoes);
}
public Prova(string disciplina, int questoes)
{
this.disciplina = disciplina;
this.questoes = questoes;
Console.WriteLine("\n\np2= " + this.disciplina + "\nquestões: " + this.questoes +”\n\n”);
}
}
class Program
{
static void Main(string[] args)
{
Prova p1 = new Prova();
Prova p2 = new Prova("POO1", 10);
}
}
6- Quando o programa a seguir é executado, resulta em erro quando digitamos “ABC”.
Reescreva o programa implementando o tratamento do erro para o caso FormatException cujo resultado é:
Resposta:
class Program
{
static void Main(string[] args)
{
string var = Console.ReadLine();
try
{
double i = Convert.ToDouble(var);
Console.WriteLine("A variavel i vale {0}", i);
}
catch (System.FormatException err)
{
Console.WriteLine("Não é possível atribuir a string {0} a um Objeto Double", var);
}
}
}
7- O programa a seguir não apresenta encapsulamento:
Faça o encapsulamento usando os métodos getNome( ) e setNome( ) da classe Telefone e modifique a classe Prova01
private class Telefone
{
private string modelo;
public string getModelo()
{
return this.modelo;
}
public void setModelo(string modelo)
{
this.modelo = modelo;
}
}
public class Prova01
{
public static void Main(string[] args)
{
Telefone telefone;
telefone = new Telefone();
telefone.setModelo("FPS01");
Console.WriteLine("Modelo:{0}", telefone.getModelo());
}
}
}
8- Faça um programa que leia, num vetor v de números inteiros, dez números digitados pelo usuário e os mostre na tela na sequência inversa a que foi dada a entrada.
namespace unip
{
class Program
{
public static void Main(string[] args)
{
int[] v = new int[10];
for (int x = 0; x < 10; x++){
Console.WriteLine("Digite um numero");
v[x] = Convert.ToInt16(Console.ReadLine());
}
for (int y = 9; y >= 0; y--)
{
Console.WriteLine(v[y]);
}
}
}
}
9- Faça um programa que leia na variável “nome”, o nome de uma pessoa, na variável “idade”, a sua idade, e na variável “peso”, o seu peso considerando uma casa depois da vírgula. Em seguida, o programa deve mostrar na tela as três informações conforme a saída a seguir, sendo que a saída das informações foi escrita em apenas uma linha utilizando-se técnica de formatação composta.
namespace unip
{
class Programa
{
public static void Main(String[] args)
{
string nome = "Januario Stevens";
Console.WriteLine(nome);
int idade = 23;
Console.WriteLine(idade);
double peso = 67.8;
Console.WriteLine(peso);
Console.WriteLine("Nome:{0} idade:{1} peso:{2}", nome, idade, peso.ToString("n1"));
}
}
}
10- Leia a descrição a seguir:
“Os bancos, para atender aos seus clientes, possuem duas frentes de trabalho. Os caixas eletrônicos espalhados pela cidade, que são diretamente ligados aos bancos, e as agencias tradicionais, que entre outras coisas, possuem os seus postos bancários dentro das empresas, fazem o atendimento VIP dos clientes que tem conta premium e possuem um anexo para o atendimento á pessoas jurídica.”
Utilizando está informações monte o diagrama simples de classes.
A principal inovação introduzida pelo Paradigma Estruturado em relação ao Paradigma Não Estruturado foi o abandono do uso de desvios incondicionais. Assim, uma linguagem estruturada só utiliza desvios condicionais com o “if”, o “while” e o “-do-while”. O próximo paradigma, o Paradigma Orientado a Objetos ao introduzir o conceito de objeto (entre diversos outros conceitos). Explique o que é um objeto e explique suas partes componentes.
Objeto é uma instancia de uma classe, capaz de armazenar estados, reagir a mensagens e se relacionar a outros objetos
11- Considere a classe Produto abaixo:
Considere também a classe Produto Perecível abaixo:
Escreva qual será a saída gerada pela execução do programa abaixo, que utiliza as classes ...ProdutoPerecivel:
Tomatinho custa R$3
Cebolinha custa R$2,5 e é válido até 20/5/2016
Pressione qualquer tecla para continuar...
12- Qual é a saída gerada pelo seguinte programa?