Linguagens de Programação Flashcards

1
Q

O que são interfaces em OOP?

A

Pode-se dizer, a grosso modo, que uma interface é um contrato que quando assumido por uma classe deve ser implementado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Para que servem as interfaces codificadas em Java?

A

Para “obrigar” a um determinado grupo de classes a ter métodos ou propriedades comuns em um determinado contexto, contudo os métodos podem ser implementados em cada classe de uma maneira diferente.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quais são os modificadores de acesso de métodos e atributos em Java?

A
  • private
  • default
  • protected
  • public
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qual o nivel de restrição de um modificador de acesso private em uma classe?

A

Somente a propria classe pode acessar os atributos ou meétodos do tipo private.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qual o nivel de restrição de um modificador de acesso default em uma classe?

A

As classes que pertecem ao mesmo pacote podem acessar esses atributos ou métodos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual o nivel de restrição de um modificador de acesso protected em uma classe?

A

As classes filhas (idependente do pacote) e calsses do mesmo pacote podem acessar métodos e atributos protected

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual o nivel de restrição de um modificador de acesso public em uma classe?

A

Métods e atributos que podem ser acessados por qualquer classe

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qual a palavra reservada usada em Java para que o tratamento de exceção seja responsabilidade do método chamador?

A

throws

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como resolver heranças multiplas de classe em Java?

A

O Java não pode estender multiplas classes por natureza, ou seja, uma classe so pode ser herdada de uma classe mãe e não de mais de uma classe. Para resolver heranças multiplas em Java é necessário criar herança multipla de interfaces. Uma interface pode herdar mais de uma interface.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que é polimorfismo?

A

É a capacidade de uma classe assumir diferentes formas, permitindo que um objeto seja tratado como uma instancia da sua classe base ou de qualquer uma das suas subclasses

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quais são as fases de geração de um código executável em Java e onde elas são executadas?

A
  • Compilação: executada no compilador java (javac)
  • Interpretação: executada na Máquina Virtual Java (JVM)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qual é a entrada e o produto do processo de compilação em Java?

A
  • Entrada: código fonte Java
  • Produto: bytecode no formato “.class”
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qual a ordem de inicialização de blocos em um código Java?

A
  1. Bloco estático (apenas uma vez, na instanciação da classe)
  2. Bloco de inicialização
  3. Construto da Classe

Essa ordem se repete também para as classes filhas em caso de heraças. Sempre seguindo essa ordem na primeiro na classe pai e depois nas subclasses (ou filhas).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

O que significa que uma classe esteja aberta para extensão, mas fechada para modificação?

A

É o Open/Closed Principle (OCP) do SOLID que preserva a impelmentação das classes de mais alto nível, não permitindo modificações mas possibilitando que as sublasses estendam seus métodos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qual princípio SOLID garante que uma classe tenha apenas uma razão para mudar?

A

Single Responsibility Principle (SRP)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qual princípio garante que você possa substituir um objeto de uma superclasse por um objeto de sua subclasse sem quebrar o código?

A

Liskov Substitution Principle (LSP) que defende o uso da referencia em relação as classes de nível mais alto

17
Q

Por que é importante seguir o Interface Segregation Principle (ISP)?

A

Para evitar interfaces “gordas” e acoplamento excessivo entre classes

18
Q

Qual princípio incentiva a dependência de abstrações em vez de implementações concretas?

A

Dependency Inversion Principle (DIP): Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.

19
Q

Quais são os 3 tipos de Design Pattern de projetos de linguagens orientadas a objeto?

A
  • Criacionais
  • Estruturais
  • Comportamentais
19
Q

Qual é o principal objetivo do encapsulamento em programação orientada a objetos?

A

Proteger os dados internos de um objeto, controlando o acesso a eles através de métodos públicos

20
Q

Qual o principal objetivo do padrão Criacional de projetos OOP?

A

Lidam com a criação de objetos, oferecendo maneiras flexíveis e reutilizáveis de instanciá-los

21
Q

Qual a principal diferença entre um construtor de classe e um método no padrão criacional Factory Method?

A

Enquanto o construtor cria diretamente um objeto, o método de fábrica permite criar objetos de subclasses diferentes sem expor a lógica de instanciação. Isso oferece mais flexibilidade e permite encapsular a lógica de criação.

22
Q

Quando utilizar o padrão criacuinal Abstract Factory?

A

Quando é preciso criar famílias de objetos relacionados, sem especificar suas classes concretas. É útil em cenários onde você precisa criar diferentes conjuntos de objetos com base em alguma configuração comum

23
Q

Qual o principal benefício do padrão criacional Builder?

A

Permite construir objetos complexos passo a passo, separando a construção da representação. Isso torna o processo de criação mais flexível e legível.

24
Q

Qual o objetivo do padrão criacional Singleton?

A

Garantir que apenas uma instância de uma classe seja criada em todo o sistema. É útil para classes que representam recursos globais ou configurações únicas.

25
Q

Qual o principal objetivo do padrão Estrutural de projetos OOP?

A

Lidar com a composição de classes e objetos, oferecendo maneiras flexíveis de estruturar o código.

26
Q

Qual o problema que o padrão estrutural Adapter resolve?

A

Permite que classes com interfaces incompatíveis trabalhem juntas. Ele atua como um adaptador entre duas classes, convertendo a interface de uma para a outra.

27
Q

Qual a principal característica do padrão estrutural Bridge?

A

Separa a abstração da implementação, permitindo que ambas variem independentemente. É útil quando você precisa ter várias implementações de uma abstração.

28
Q

Quando utilizar o padrão estrutural Composite?

A

Quando é necessário representar hierarquias de objetos, onde os objetos podem ser compostos por outros objetos do mesmo tipo. É comum em estruturas de árvores, como sistemas de arquivos ou menus.

29
Q

Qual o principal objetivo do padrão Comportamental de projetos OOP?

A

Lidam com a alocação de responsabilidades entre objetos e como os objetos se comunicam.

30
Q

Qual o problema que o padrão comportamental Observer resolve?

A

Permite que múltiplos objetos sejam notificados automaticamente quando o estado de um objeto muda. É útil para implementar mecanismos de publicação-assinatura (pub/sub).

31
Q

Quando utilizar o padrão comportamental Strategy?

A

Quando um algoritmo precisa ser selecionado em tempo de execução. Permite trocar algoritmos sem alterar o cliente que os utiliza.

32
Q

Qual a principal característica do padrão comportamental Template Method?

A

Define o esqueleto de um algoritmo em uma classe base, permitindo que subclasses modifiquem comportamentos específicos sem alterar a estrutura geral do algoritmo.

33
Q

Qual o objetivo do padrão de refatoração “Remove Middle Man”?

A

Eliminar um objeto intermediário que não agrega valor à aplicação, simplificando a comunicação entre outros objetos.

34
Q

Qual a principal vantagem de usar “Replace Conditional with Polymorphism”?

A

Permite que a lógica condicional seja encapsulada em classes diferentes, tornando o código mais organizado e facilitando a adição de novos tipos de objetos.

35
Q

A complexidade ciclomática é uma métrica utilizada para medir a complexidade lógica de um trecho de código. Cite algumas tecnicas de refatoração que ajudam a solucionar uma lata complexidade ciclomatica.

A
  • Quebrar métodos grandes: Divida métodos longos em funções menores com responsabilidades mais específicas.
  • Reduzir aninhamentos: Evite aninhamentos profundos de condicionais (if/else) e laços (for/while).
  • Utilizar funções puras: Funções puras retornam sempre o mesmo resultado para as mesmas entradas, facilitando o teste e a compreensão.
  • Extrair métodos: Identifique blocos de código que realizam uma tarefa específica e extraia-os para métodos separados.