Buscar

Algoritmos e lógica de programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Algoritmos e lógica de programação
Aula 1
1. Algoritmos podem ser representados de maneira textual, por meio de pseudocódigo (portugol) ou mesmo com o uso de fluxogramas. Essas representações auxiliam que terceiros possam ler o seu algoritmo.
Dito isso, analise o seguinte algoritmo:
Assumindo que a = 1 e b = 3, qual será o valor retornado pelo algoritmo?
Resposta incorreta.
Você acertou!
B. 1.5.
O algoritmo calcula a área de um triângulo retângulo. Sabendo que a = 1 e b = 3, e seguindo os passos do algoritmo, o valor retornado será:
área = (1*3)/2 = 1.5.
2. Algoritmos podem ser utilizados com a finalidade de auxiliar professores a determinar a média final de seus alunos.
O seguinte algoritmo recebe como entrada as notas nas três avaliações realizadas (n1, n2 e n3) e retorna a média final (mf) do aluno. Perceba que a média calculada é uma média ponderada que dá peso diferente a cada uma das avaliações:
Se João teve as seguintes notas nas avalições:
n1 = 9.73​​​​​​​
n2 = 3.21​​​​​​​
n3 = 5.45
De acordo com o algoritmo, qual será a sua média final?
Você acertou!
A. 5.41.
Sabendo que n1 = 9.73, n2 = 3.21 e n3 = 5.45, e seguindo os passos do algoritmo, a média final de João pode ser calculada da seguinte forma: 
soma = 9.73 + 6.42 + 16.35 = 32.5.
mf = 32.5/6 = 5.4167.
3. Os algoritmos possibilitam estruturar de modo sequencial e lógico a execução de uma tarefa. Mas não é qualquer sequência de passos lógicos que é chamada de algoritmo. Os algoritmos precisam satisfazer determinadas condições.
Nesse contexto, analise as seguintes características:
I. Ser finito.
II. Ter um início.
III. Ter um fim.
É/são característica(s) necessária(s) a um algoritmo:
Você acertou!
D. I, II e III.
Um algoritmo deve apresentar estado inicial e estado final (previsível), bem como seguir uma sequência lógica e finita de passos, além, é claro, de produzir o fim desejado.
4. Situações envolvendo algoritmos podem surgir em diversos contextos, como, por exemplo, quando são utilizadas fórmulas matemáticas para resolver uma equação.
O algoritmo a seguir estabelece as etapas para se calcular o volume de uma esfera de raio r.
Você acertou!
C. 33.49.
Sabendo que r = 2, e seguindo os passos do algoritmo, o volume retornado pelo algoritmo será:
volume = 4/3 * 3.14 * 8 = 33.4933.
5. Em fluxos condicionais, nem todos os passos de um algoritmo são executados.
Dado o seguinte algoritmo:
Você acertou!
B. Linhas 1-5, linhas 7-9 e linha 12.
Para os valores dados, x = 1, y = 4 e z = 3, tem-se que x não é maior ou igual que y, logo, a linha 6 não será executada. Como y é maior que z, a linha 9 será executada, e o algoritmo passará para seu fim. Dessa forma, serão executadas as linhas 1-5, 7-9 e 12.
Aula 2
1. 
Algoritmos são uma importante ferramenta para especificar a solução de problemas. A escolha da forma de representação do algoritmo determinará seu detalhamento e a precisão da especificação. Escolha a alternativa que apresenta formas de representação de algoritmos (no contexto computacional) em ordem crescente de capacidade de detalhamento/precisão do algoritmo construído.
Você acertou!
B. Descrição narrativa; fluxograma; pseudocódigo.
A descrição narrativa é a forma menos detalhada/precisa de representar algoritmos; o pseudocódigo é a forma mais detalhada/precisa de representar algoritmos, ficando bem próximo do potencial de uma linguagem de programação.
2. 
Algoritmos são uma sequência de passos, finitos e bem definidos, utilizados para resolver algum problema. A utilização de um conjunto de palavras-chave para escrever o algoritmo é característica do(a):
C. pseudocódigo.
Existem várias formas de representação de algoritmos. As principais são: descrição narrativa, fluxograma e pseudocódigo. A primeira utiliza a linguagem natural para representar o algoritmo, não tendo nenhum tipo de regra ou palavra-chave; já a segunda representa os algoritmos utilizando um conjunto de símbolos gráficos; por fim, a terceira usa um conjunto de palavras-chave com seus respectivos relacionamentos para descrever um algoritmo. A linguagem de programação é o algoritmo já convertido para que o computador possa entender. O diagrama de sequência é útil na parte de documentação de software, descrevendo a sequência de funcionamento dele. Logo, nem a linguagem de sequência nem o diagrama de sequência têm relação com as formas de representação dos algoritmos. Das três formas de representação citadas anteriormente, o pseudocódigo é a que utiliza um conjunto de regras para descrever o algoritmo.
3. 
Fluxogramas são diagramas gráficos (desenhos) que podem ser utilizados para a representação de algoritmos. Analise as afirmativas a seguir e selecione aquela que NÃO se refere aos fluxogramas.
Você acertou!
B. São ambíguos e imprecisos.
Fluxogramas representam algoritmos de forma não ambígua e precisa.
4. 
Qual é o nome usado para a forma de representação de algoritmos expressos por meio de um diagrama gráfico com o uso de blocos (elipses, retângulos, paralelogramos e losangos) e setas de direção?
Você acertou!
A. Fluxograma.
É uma forma de representação gráfica que utiliza setas e blocos.
5. 
A representação de algoritmos tem por objetivo obter uma especificação clara que permita a comunicação e a análise do processo especificado. Considerando isso, assinale a alternativa FALSA.
Você acertou!
A. O poder de expressão da descrição narrativa, dos fluxogramas e do pseudocódigo é exatamente o mesmo.
O poder de expressão da descrição narrativa é menor, pois não segue regras e pode ser ambíguo ou não deixar claro o que deve ser realizado. Já o fluxograma e o pseudocódigo têm poder de expressão semelhante, mas o mais preciso é o pseudocódigo.
Aula 3
1. 
Ambientes de programação trazem diversos recursos para que o desenvolvedor consiga, com mais facilidade, realizar seus projetos. Sobre o ambiente de programação do Scratch, assinale, a seguir, a alternativa que apresenta as três principais áreas de edição desse ambiente.
Você acertou!
A. Palco, lista de atores e área de Scripts.
As três principais áreas de edição do ambiente Scratch são: palco, lista de atores e área de Scripts.
O palco é o espaço no qual é possível visualizar como está a interface do projeto. Por sua vez, a lista de atores é o espaço no qual é possível selecionar os atores. Nele, ficarão listados também todos os atores que forem criados. Por fim, na área de Scripts são definidos os blocos de instruções que os atores selecionados irão executar.
2. 
O Scratch é uma linguagem de programação visual cujo objetivo é o de não utilizar a digitação de instruções de comandos. Com base nisso, assinale, a seguir, a alternativa que apresenta o conjunto de blocos responsável pela instrução na qual o ator poderá exibir alguma mensagem de texto na tela.
Você acertou!
D. Aparência.
O conjunto de blocos de instruções "aparência" traz consigo alguns comportamentos que podem ser executados pelos atores selecionados como, por exemplo, falar alguma frase, demonstrar pensamento, esconder algo, entre outros.
3. 
O ambiente da linguagem de programação Scratch possibilita que a criação de novos atores seja realizada de algumas formas. Assinale, a seguir, a alternativa que apresenta os dois tipos de modos disponíveis ao selecionar a opção "pintar novo ator”.​​​​​​​
Você acertou!
C. Bitmap e vetorial.
Os dois tipos de modos disponíveis no ambiente de programação Scratch são: modo Bitmap e modo vetorial.
O modo Bitmap permite que sejam utilizados recursos como pincel, linha, retângulo, elipse, preenchimento, entre outros. Por sua vez, o modo vetorial traz ferramentas para que seja possível vetorizar e editar os objetos, como seleção, modelar, entre outros.
4. 
Entre as janelas presentes no ambiente de programação Scratch, em qual delas é possível verificar a movimentação dos sprites (atores)? Assinale, a seguir, a alternativa correta.
Você acertou!
A. Palco.
O Palco (stage) possibilita que o desenvolvedor visualize as animações da forma como estão sendo programadas, assim como a visualizaçãodos atores que foram inseridos no projeto. O palco tem 480 passos de largura e 360 passos de altura.
5. 
Assinale, a seguir, a alternativa que informa o local no qual é possível visualizar nomes e miniaturas dos projetos criados no ambiente de programação Scratch.
Resposta correta.
E. Lista de sprites.
A lista de sprites, ou lista de atores, traz funcionalidades que permitem a adição de novos sprites a partir da biblioteca, do Paint Editor e de outros locais. Cada sprite apresenta seus próprios scripts, sons e suas fantasias.
Aula 4
1. 
O que são algoritmos?
Você acertou!
A. Algoritmo é um conjunto finito de regras, bem definidas, que nos leva à solução de um problema em um tempo finito.
Um algoritmo nada mais é do que uma receita que mostra passo a passo os procedimentos necessários para a resolução de uma tarefa. Ele não responde à pergunta "o que fazer?", mas, sim, "como fazer". 
2. 
O fluxo de execução de um algoritmo consiste em estruturas. Quais são essas estruturas?
Resposta correta.
B. Sequencial, Seleção e Repetição.
A estrutura sequencial é realizada de forma sequencial de cima para baixo, por exemplo, com ação 1, 2, 3, 4... A estrutura de seleção envolve condição de algo que se deseja e pode ser simples, composto ou múltipla escolha (se, então, senão, fim se, ...). A estrutura de repetição envolve uma ação em relação à outra (enquanto, faça).
3. 
Existem alguns tipos de dados primitivos que podem ser números negativos, positivos ou nulos com e sem decimais, que apresentam letras e que apresentam valores de V ou F ou valores binários 0 ou 1. Quais são esses tipos primitivos de dados?
Você acertou!
C. Dados de números Inteiros, reais, com caractere, lógicos ou booleanos.
Os dados primitivos podem ser expressos em números inteiros negativos, nulos ou positivos. Números reais negativos, e positivos que apresentam casa decimal, caracteres com letras, e lógicos representando valores booleanos de V ou F ou binário 0 ou 1.
4. 
As expressões são fórmulas matemáticas que auxiliam a obter um resultado numérico. Normalmente, são utilizadas para obter um resultado numérico para números inteiros e reais, ou para condições, ou para conjunções, disjunções e negações. Quais são essas expressões?
Você acertou!
B. Aritméticas, Relacionais, Lógicas ou Booleanas.
As lógicas conhecidas pelas expressões básicas como soma, subtração, multiplicação, divisão, etc. são as aritméticas. As igualdades, diferenças, sinal de maior ou igual em expressões são conhecidas como relacionais. As expressões em que precisa ter uma conjunção (e), disjunção (ou) ou negação que inverte a condição da expressão são as lógicas ou booleanas.
5. 
Analise o seguinte trecho:
algoritmo "Modelo"
      var
           n: inteiro
inicio
       escreval("Insira um número inteiro: ")
       leia(n)
       n = n * n;
        escreval("O ................... é : ",n)
fimalgoritmo
O que o irá acontecer com o valor lido, o que será mostrado como resultado?
Você acertou!
A. O resultado é o QUADRADO do valor lido.
O algoritmo faz a leitura (leia) de um valor, processa calculando o quadrado (multiplicação do número lido por ele mesmo) e imprime na tela (escreva) "O Quadrado do número é:"
Aula 5
1. 
O conceito principal da programação orientada a objetos, que justifica o nome do próprio paradigma, é que tudo pode ser abstraído para um objeto e, assim, um programa seria uma coleção de objetos que se relacionam e apresentam comportamento único. Assinale a alternativa que apresenta os principais componentes de um objeto:
Você acertou!
D. Atributos e métodos.
Os principais componentes de um objeto são seus atributos e seus métodos. Apesar de um objeto apresentar diferentes estados ao longo do ciclo de execução do programa, ele não se caracteriza como um componente do objeto. Colunas e tabelas não fazem parte de um objeto e as variáveis são declaradas no escopo do objeto, mas são utilizadas para a definição de atributos.
2. 
A orientação a objetos trouxe alguns conceitos interessantes para a programação, e um deles está relacionado ao conhecimento sobre a implementação interna da classe, o qual é desnecessário do ponto de vista do objeto. Assinale a alternativa correta quanto ao seu nome:
Resposta correta.
B. Encapsulamento.
O encapsulamento é a técnica que permite que o conhecimento sobre a implementação interna de uma classe seja desnecessário quanto ao objeto que a instancia. Já o relacionamento não é um conceito-base da orientação a objetos. Ainda, as classes são estruturas e a abstração, embora seja um dos conceitos novos, diz respeito a entender o conceito de objetos, enquanto que a herança refere-se a herdar estruturas de uma classe para outra.
3. 
Um dos novos conceitos surgidos sobre a programação orientada a objeto é o de que ela é um mecanismo por meio do qual é possível selecionar as funcionalidades utilizadas de forma dinâmica por um programa no decorrer de sua execução. Assinale a alternativa correta que apresenta o nome desse mecanismo:
Você acertou!
E. Polimorfismo.
O polimorfismo é o mecanismo que possibilita às funcionalidades serem utilizadas de forma dinâmica por um programa no decorrer de sua execução. Os atributos resultam das características dos objetos; já a herança é a possibilidade de uma classe herdar a estrutura de outra e abstração é o entendimento de entidades do mundo real para a concepção de objetos.
4. 
Uma das grandes vantagens da adoção da programação orientada a objetos é a reutilização de código e sua organização. Com relação às vantagens da reutilização de código na programação orientada a objetos, assinale a alternativa correta:
Você acertou!
C. A reutilização de código é consequência da análise e do projeto de código.
A reutilização de código é consequência das etapas de análise e projeto da orientação a objetos, que fazem com que os projetos de código sejam bem projetados e, por influência das classes que agrupam códigos, reutilizados. Em orientação a objetos, as funções são substituídas por métodos, os quais não são, no entanto, os responsáveis pela boa reutilização e pelos procedimentos que não são de linguagens OO, assim como pelos eventos que são da programação estruturada. A simplificação de código é essencial em qualquer paradigma, mas ela, por si só, não é suficiente para a reutilização de código, e sim para a sua otimização.
5. 
Um objeto é uma instância de uma classe em programação orientada a objetos. As classes definem, então, a estrutura dos objetos que serão instanciados a partir dela. Com base nessa afirmativa, analise a classe a seguir em Java e assinale a alternativa correta:
public class Bola 
{
  String cor;
  int tamanho;
  boolean cheia;
  void encher()
    {
       cheia = true;
    }
  void esvaziar()
    {
       cheia = false;
    }
 }
Resposta correta.
C. Cor, tamanho e cheia são atributos da classe bola.
Os atributos da classe que você analisou são: cor, tamanho e bola. Cada atributo de um tipo, ou seja, cor é um tipo string, tamanho do tipo int e cheia do tipo booleano. Encher e esvaziar são métodos que alteram o valor do atributo cheia.
Aula 6
1. 
Ao analisar um modelo de classes de um sistema, você identificou que existe um relacionamento de herança entre as classes MeioPagamento e CartaoCredito, sendo a classe mãe a MeioPagamento e a classe herdeira a CartaoCredito. Sobre essa situação, assinale a alternativa correta:
Você acertou!
B. Todos os atributos da classe MeioPagamento serão herdados pela classe CartaoCredito.
Como existe um relacionamento de herança entre as classes, sendo a classe MeioPagamento a mãe e a CartaoCredito a herdeira, é possível determinar que todos os atributos e métodos da classe MeioPagamento serão herdados pela classe CartaoCredito, independente da sua visibilidade. Também qualquer novo atributo criado na classe MeioPagamento passará a ser herdado pela classe CartaoCredito e não existe a necessidade de criar antes um objeto da classe MeioPagamento para criar um da classe CartaoCredito.
2. 
Utilizando ainda o exemplo doexercício anterior, caso existisse a necessidade de inserir um atributo para armazenar o valor do limite de gastos diários, que seria único por CartaoCredito, lembrando que a classe MeioPagamento também tem como herdeira a classe CartaoDebito, assinale a alternativa correta sobre essa implementação:
Resposta correta.
C. O atributo limiteGastosDiario seria criado somente na classe MeioPagamento
O atributo seria criado somente na classe MeioPagamento. Apesar do limiteGastosDiario ser único por CartaoCredito, isso se refere ao valor do atributo limiteGastosDiario, então não existe relação com o atributo não ser possível de ser herdado. Além do mais, CartaoCredito é um tipo de MeioPagamento e atributos comuns a MeioPagamento devem ficar na classe mãe. Os métodos get e set seriam criados na classe MeioPagamento, mas o atributo limiteGastosDiario também e não um em cada classe. Não existiria necessidade de criar um atributo em cada classe, mesmo que CartaoDebito e CartaoCredito possuam limiteGastosDiario diferentes.
3. 
Em algumas linguagens de programação orientada a objetos, como C++ e Python, é possível que uma classe possua relacionamento de herança com mais de uma classe. Assinale a alternativa correta quanto ao nome desse tipo de herança:
Você acertou!
D. Herança Múltipla.
Quando uma classe tem relacionamento de herança com mais de uma classe, esse tipo de relacionamento é chamado de Herança Múltipla. As demais denominações - Herança Composta, Herança Binária, Herança Dupla, Herança Associativa - não existem. Dizem-se Herança Simples, quando herda de apenas uma classe, e Herança Múltipla como nesses casos.
4. 
Em herança entre classes, existe a possibilidade de uma classe herdeira reescrever um método implementado pela classe mãe. Dessa forma, a classe herdeira atribui um comportamento diferenciado ao da classe mãe, sendo o nome desse conceito polimorfismo. Assinale a alternativa correta sobre o polimorfismo:
Resposta correta.
E. O polimorfismo é uma característica em orientação a objetos que usa a hierarquia de objetos.
O polimorfismo é um conceito que se utiliza de herança e consequentemente hierarquia de objetos. O polimorfismo estático, no qual a assinatura dos métodos é alterada, trata de um conceito que surgiu com os demais, assim como herança na orientação a objetos, e pode ser aplicado tanto em casos de herança simples como múltiplas. Não existe limitação quanto à quantidade de métodos da superclasse por uma subclasse, desde que esta herde os métodos da superclasse.
5. 
Existem duas formas de implementação de polimorfismo. Uma se dá quando se tem a mesma operação implementada várias vezes na mesma classe e a outra acontece na herança, quando a classe herdeira altera o método original. Assinale a alternativa correta quanto ao nome desses tipos de implementação de polimorfismo:
Você acertou!
A. Sobrecarga e Sobreposição.
O tipo de polimorfismo onde um método é implementado várias vezes é chamado de polimorfismo estático ou Sobrecarga e o que altera o método original é chamado de polimorfismo dinâmico ou Sobreposição. Portanto Estático e Sobrecarga são a mesma coisa, assim como Dinâmico e Sobreposição. Já Alternativo não é um tipo de implementação de Polimorfismo.
Aula 7
1. 
Há um tipo específico de relacionamento entre classes, em que o objetivo é mostrar que as informações de um objeto (chamado objeto todo) necessitam serem complementadas por um ou mais objetos de outra classe (objeto parte).
Assinale a alternativa abaixo que contenha o nome desse tipo de relacionamento.
E. Agregação.
O tipo de relacionamento em que as informações de um objeto precisam ser complementadas por outro são representadas pelo relacionamento do tipo agregação. Composição é um tipo de relacionamento utilizado para representar outro tipo de dependência, enquanto generalização é utilizado para representar relacionamento do tipo herança entre classes. Associação forte é, também, uma denominação do relacionamento de composição e não se enquadra para esse tipo de situação; especialização é um tipo de relacionamento de herança entre classes.
2. 
Todo o atributo de uma classe só poderá ser manipulado pelos métodos da própria classe. O objeto, assim, esconde seus dados de outros objetos e permite que os dados sejam acessados por intermédio de seus próprios métodos.
Quanto a esse conceito, assinale a alternativa correta.
A. Esse conceito é conhecido como encapsulamento.
O conceito que possibilita que apenas os métodos da própria classe manipulem os seus atributos, é denominado de encapsulamento. O conceito de herança está relacionado a uma classe herdeira dos atributos de outra classe; polimorfismo é o conceito de que uma classe possa modificar o comportamento padrão da classe que herda. Relacionamentos são tipos de associações ou heranças entre classes; e abstração é o conceito de entendimento do universo a ser implementado pelos objetos.
3. 
Um tipo de objeto especifica uma família, sem se preocupar em definir como o tipo e o objeto serão implementados. Na programação orientada a objetos, os tipos são determinados na etapa de análise.
Assinale a alternativa correta quanto à estrutura utilizada para definir como serão implementados os tipos de objetos.
B. Classes.
As classes são estruturas que determinam como os tipos de objetos que a utilizam serão implementados. Nelas, são definidos os atributos e métodos, assim como os tipos de relacionamentos. Atributos são características de objetos; os métodos, seus comportamentos. Herança e associação são alguns dos tipos de relacionamento entre as classes e objetos.
4. 
Os relacionamentos do tipo herança entre classes apresentam diferenças. Um dos tipos de relacionamento de herança é indicado quando existe algum atributo que seja aplicável a mais de uma classe, que contenha os atributos comuns a outras classes especializadas.
Assinale a alternativa correta quanto ao nome desse tipo de relacionamento.
C. Generalização.
A generalização é um tipo de relacionamento de herança, que é utilizado quando uma classe herda os atributos de outra classe. Quando existe a necessidade de criação de atributos específicos pela classe herdeira, é utilizado o relacionamento de especialização. Encapsulamento não é um tipo de relacionamento; e associação é a representação de qualquer relação entre classes, não determinando esse conceito específico, bem como herança.
5. 
Existe um tipo de relacionamento que impõe o sentido de que um objeto todo não existe sem suas partes. Não se pode ter uma cesta de produtos, sem os seus produtos, correto?
Assinale a alternativa correta quanto ao nome desse tipo de relacionamento.
D. Composição.
O tipo de relacionamento que possibilita especificar que, só faz sentido os objetos parte existirem, se existir o objeto todo é a composição. A agregação é um tipo de relacionamento semelhante à composição, mas nela, um objeto parte pode existir sem esse grau de dependência e, muitas vezes, é chamada de Agregação fraca, enquanto a composição é chamada de Agregação forte. Especialização é um tipo de relacionamento de herança e de não associação; o mesmo vale para o tipo especialização; e abstração não é um tipo de relacionamento.
Aula 8
1. 
As classes abstratas são classes que determinam um tipo, são como uma espécie de rascunho de como as classes que a implementam devem se comportar.
Sobre os conceitos de uma classe abstrata, assinale a alternativa correta:
C. Classes abstratas não podem ser instanciadas.
Em uma classe abstrata, não é necessário que todos os métodos sejam definidos como abstratos.
Não existe restrição ao conceito de polimorfismo pelas classes herdeiras, ao contrário, a obrigação de implementação de métodos abstratos pelas classes herdeiras é o conceito de polimorfismo dinâmico.
​​​​​​​As classes abstratas não podem ser instanciadas, apenas definem o modelo que deve ser seguido por suas classes herdeiras.
Não é necessário que as classes herdeiras implementem todos os métodos das classes abstratas.
Classes abstratas não são um tipode encapsulamento, seu conceito é justamente ao contrário, deixando a implementação por conta das classes herdeiras.
2. 
Outras questões são também importantes ao considerar o conceito de classes abstratas. Analise as afirmativas a seguir e assinale aquela que está correta acerca dos conceitos de classes abstratas.
A. Uma classe abstrata pode herdar de outra classe abstrata.
Uma classe abstrata pode herdar de outra classe abstrata, não existe restrição.
Os métodos abstratos não têm implementação na classe abstrata; são implementados pelas classes herdeiras.
Apesar de as classes abstratas não conterem instâncias, elas são consideradas superclasses.
Nas classes abstratas podem ser definidos métodos construtores e eventos como em outras classes e a sua funcionalidade é complementada pelas classes derivadas, pois estas implementam os métodos abstratos da classe.
3. 
Classes abstratas têm um significado diretamente ligado ao conceito de herança. São classes que não fazem sentido sem que exista uma relação de herança de outras classes com a classe abstrata.
Em relação a essa afirmativa, marque a alternativa correta sobre a relação entre classes abstratas e herança na orientação a objetos:
D. As classes abstratas impedem que a instância de objetos seja a partir da classe genérica.
Com a utilização de classes abstratas, diferentemente do caso de herança, não é possível um objeto ser instanciado a partir da classe genérica ou superclasse. Os métodos genéricos, tanto em herança como em classes abstratas, podem tanto ser implementados na classe genérica como nas derivadas, apesar de o ideal ser somente na primeira.
​​​​​​​As classes abstratas são declaradas de forma diferente da superclasse na herança, caso contrário não fariam sentido, e, tanto em classes abstratas como em herança, novos métodos podem ser acrescentados na classe abstrata após herança com uma classe derivada.
4. 
As interfaces em programação orientada a objetos são outro recurso importante e que, dependendo do contexto, possibilita algumas vantagens se comparado ao uso de classes abstratas.
Uma das principais vantagens da utilização de interfaces está relacionada ao fato de que:
E. A vantagem principal das interfaces é que não há limites de quantas interfaces uma classe pode implementar.
A principal vantagem das interfaces é que não existe um limite de quantas interfaces uma classe pode implementar, diferentemente de classes abstratas.
As interfaces, todavia, exigem que as classes que as referenciam implementem todos os seus métodos. Não existe vantagem em otimização de memória entre uma ou outra, isso depende da implementação do programa. Assim como nas classes abstratas, não é possível instanciar objetos a partir das interfaces. 
​​​​​​​As interfaces não definem um tipo de classe padrão, isso está mais relacionado às classes abstratas.
5. 
O seguinte trecho de código em linguagem de programação Java especifica uma interface para classes que implementem um tipo de FiguraGeometrica:
public interface FiguraGeometrica
{
 public String getNomeFigura(); 
 public int getArea();
 public int getPerimetro();
}
Assinale a alternativa que contém uma afirmativa correta sobre o trecho apresentado:
A. As classes podem conter diferentes implementações dos métodos de FiguraGeometrica.
Como se trata de uma interface, é possível afirmar que todas as classes que implementam a interface podem ter diferentes execuções dos seus métodos.
Todas as classes que herdam, necessariamente, devem implementar, mesmo que igualmente, os seus métodos, mas todos devem obedecer à assinatura dos métodos definidos na interface.
Pode-se ter outra interface FiguraGeometrica com um nome diferente; e as classes podem implementar uma ou outra, ou mesmo as duas.
 Não é possível afirmar que todas as classes implementam todos os métodos com o mesmo escopo, apesar de ser possível, pois as interfaces não restringem isso.
Aula 9
1. 
O que são classes aninhadas?
A. São classes que podem ser declaradas dentro de outras classes.
As classes aninhadas são classes que podem ser declaradas dentro de outras classes, como membros ou dentro de bloco de códigos.
2. 
Em orientação a objetos, temos as chamadas classes externas ou envolventes. Marque a alternativa correta.
C. Classes externas ou envolventes são classes que contêm ou encapsulam classes aninhadas.
As classes externas ou envolventes, como a definição, envolvem outras classes, isto é, dentro dela são declaradas outras classes.
3. 
Em programação orientada a objetos, podemos ter classes internas e aninhadas. Marque a alternativa correta.
D. Para declararmos uma classe aninhada ou estática, e necessário colocarmos a palavra-chave static antes da palavra-chave class.
A maneira correta de declarar uma classe interna ou aninhada é fazer o uso da palavra-chave static antes da palavra-chave class.
4. 
Analise o código e marque a alternativa incorreta.
public class BankAccount {
   private long number;
   private long balance;
   public static class Permissions {
    public boolean canDeposit, canWithdraw, canClose;
   }
   //..
}
E. A classe Permissions não pode acessar os membros de BankAccount.
Visto que Permissions é um membro de BankAccount, pode acessar todos os membros de BankAccount.
5. 
Existem algumas maneiras de instanciar uma classe aninhada não estática. Considere uma classe externa chamada A e uma classe aninhada chamada B. Marque a resposta que possui o código correto.
D. A.B variavel = new A().new B();
Tal como estivéssemos informando um caminho, a variavel recebe um tipo B que está dentro do tipo A, com isso, os construtores também estão corretos, pelo fato de instanciarmos A e depois B.
Aula 10
1. 
Vetores são estruturas de dados estáticas em que o programador define o tamanho e o tipo na declaração da variável vetor. Embora a ArrayList do Java seja confundida com vetores, essa classe implementa uma estrutura do tipo lista. Assinale a alternativa que apresenta métodos da classe ArrayList.
B. São métodos da classe ArrayList: add(), get() e contains().
O método add implementado na classe ArrayList adiciona um novo objeto na lista. O método get recupera o objeto do índice informado. O método contains retorna o primeiro elemento da lista que corresponde com o valor passado.
O método length é da classe Vector. Os métodos pop, push e peek são implementados na classe Stack. 
2. 
A API Collections fornece uma coleção de classes e interfaces para implementar e manipular coleções de objetos em Java. Entre as interfaces da API Collections, encontra-se a interface List. Assinale a alternativa que apresenta os métodos definidos nessa interface.
B. São métodos definidos na interface List: add, addAll, remove, get e set.
São métodos da interface List: 
· add: adiciona um objeto na lista;
· addAll: adiciona todos os objetos passados de uma só vez;
· remove: remove um objeto da lista;
· get: recupera um objeto da lista;
· set:  seta o valor de um objeto da lista.
Os métodos hasNext, next e clear são da interface Set.
3. 
A classe ArrayList do Java implementa a interface List. O comportamento dos objetos da classe ArrayList é semelhante ao comportamento de objetos da classe Vector. Assinale qual das alternativas abaixo apresenta a diferença de comportamento entre ArryList e Vector.
B. Um objeto da classe ArrayList pode ser redimensionado, e um objeto da classe Vector possui tamanho fixo.
Um ArrayList é semelhante a um array, mas pode ser redimensionado dinamicamente.
Objetos da classe Vector não têm tamanho variável.
4. 
Inserir novos objetos é algo comum ao manipular listas. Para inserir novos objetos, a classe ArrayList implementa o método add(). Assinale a alternativa que indica como utilizar esse método.
C. Pode-se usar o método add() passando um objeto como parâmetro e este objeto será inserido no fim da lista. E também pode-se passar dois objetos; dessa forma os objetos serão inseridos no início da lista
Pode-se usar o método add() de duas formas diferentes. Na primeira, o método add recebe umargumento e adiciona um elemento ao final de uma ArrayList. Na outra forma, o método add recebe dois argumentos (um inteiro e um objeto) e insere um novo elemento na posição especificada em uma ArrayList.
5. 
Analise o trecho de código abaixo:
ArrayList<String> clientes = new ArrayList<String>();
clientes.add("Paulo");
clientes.add("Tereza");
clientes.add("João");
clientes.add("Maria");
if (!clientes.contains("Maria")){
     clientes.remove(1)
}
Assinale a alternativa abaixo que indica o conteúdo da lista Clientesapós a execução do código.
E. A lista Clientes conterá: Paulo, João, Maria.
O elemento no índice 1 é "Tereza". Portanto, após a execução do código, a lista Clientes conterá: Paulo, João, Maria.
Aula 11
1. 
Com relação ao tratamento de exceções, marque a alternativa incorreta.
B. Erros de tempo de execução não podem ser tratados.
Podemos tratar erros de tempo de execução de maneira estruturada e controlada.
2. 
O tratamento de exceções em java é gerenciado por cinco palavras-chave. Marque a alternativa correta.
A. Try, catch, throw, throws e finally.
O tratamento de exceções em java é gerenciado por cinco palavras-chave: try, catch, throw, throws e finally.
3. 
Analise o código a seguir e marque a alternativa incorreta.
try {
   //bloco de código cujos erros estão sendo monitorados
}
catch(TipoExceç1 obEx){
   //tratador de TipoExceç1
}
catch(TipoExceç2 obEx){
   //tratador de TipoExceç2
}
E. Caso uma exceção fosse lançada, ela seria capturada pela instrução try.
A instrução try apenas monitora as exceções em seu bloco de código; as exceções são capturadas pela instrução catch.
4. 
Quais são as consequências de uma exceção não capturada?
D. O programa não terminará de forma normal.
Capturar exceção é importante, pois impede que o programa termine de forma anormal.
5. 
Marque a alternativa incorreta.
E. Caso tenhamos um try dentro de outro, o interno não necessita ter uma instrução catch associada.
Todo try deve ter uma instrução catch associada, pois o bloco do try monitora e a instrução catch captura o erro.
Aula 12
1. 
Em orientação a objetos, como devemos começar as atividades de programação?
D. Identificando objetos e as classes às quais eles pertencem.
O que há de concreto na programação orientada a objetos são os próprios objetos, pois eles possuem estados (atributos com valores) e comportamentos (métodos); identificando os objetos, podemos verificar características semelhantes e classificá-los em classes.
2. 
Marque a afirmativa correta:
C. Se você não pode afirmar, a partir do nome da classe, o que um objeto da classe supostamente deve fazer, provavelmente você não está no caminho certo.
Imagine que temos uma classe com o nome “Cadastro”; poderíamos definir o que os objetos desta classe fariam? Agora, temos uma classe chamada “Cliente”; bom, esta trata da criação de objetos Cliente. Com isso, podemos concluir que a definição de um nome para a classe é aspecto fundamental para a criação da mesma.
3. 
Referente a coesão e acoplamento, podemos afirmar que:
C. Quando a interface pública de uma classe referencia vários conceitos, é um bom sinal de que pode ser hora de utilizar classes separadas.
As constantes e os métodos públicos que a interface pública expõe devem ser coesos.
4. 
O que é um pacote?
E. É um conjunto de classes relacionadas.
Pacotes servem para organizar classes relacionadas.
5. 
Analise o código abaixo:
/*
package media;
public class calcularMedia {
private double nota1;
private double nota2;
private double media;
private int matricula;
private String nome;
public void calcularMedia(double nota1, double nota2){
this.nota1 = nota1;
this.nota2 = nota2;
media = (nota1 + nota2)/2;
}
public void cadastrarAluno(int cod, String matricula){
this.cod=cod;
this.matricula = matricula;
}
}
*/
É correto afirmar que:
D. Esta classe não apresenta coesão.
Podemos observar que a classe não está definida para um único conceito, pois a mesma representa o cálculo de média e possui um recurso, o método “cadastrarAluno”, que não está ligado ao conceito da mesma.

Outros materiais