Linguagens de Programação Flashcards
O que são interfaces em OOP?
Pode-se dizer, a grosso modo, que uma interface é um contrato que quando assumido por uma classe deve ser implementado.
Para que servem as interfaces codificadas em Java?
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.
Quais são os modificadores de acesso de métodos e atributos em Java?
- private
- default
- protected
- public
Qual o nivel de restrição de um modificador de acesso private em uma classe?
Somente a propria classe pode acessar os atributos ou meétodos do tipo private.
Qual o nivel de restrição de um modificador de acesso default em uma classe?
As classes que pertecem ao mesmo pacote podem acessar esses atributos ou métodos
Qual o nivel de restrição de um modificador de acesso protected em uma classe?
As classes filhas (idependente do pacote) e calsses do mesmo pacote podem acessar métodos e atributos protected
Qual o nivel de restrição de um modificador de acesso public em uma classe?
Métods e atributos que podem ser acessados por qualquer classe
Qual a palavra reservada usada em Java para que o tratamento de exceção seja responsabilidade do método chamador?
throws
Como resolver heranças multiplas de classe em Java?
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.
O que é polimorfismo?
É 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
Quais são as fases de geração de um código executável em Java e onde elas são executadas?
- Compilação: executada no compilador java (javac)
- Interpretação: executada na Máquina Virtual Java (JVM)
Qual é a entrada e o produto do processo de compilação em Java?
- Entrada: código fonte Java
- Produto: bytecode no formato “.class”
Qual a ordem de inicialização de blocos em um código Java?
- Bloco estático (apenas uma vez, na instanciação da classe)
- Bloco de inicialização
- 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).
O que significa que uma classe esteja aberta para extensão, mas fechada para modificação?
É 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
Qual princípio SOLID garante que uma classe tenha apenas uma razão para mudar?
Single Responsibility Principle (SRP)
Qual princípio garante que você possa substituir um objeto de uma superclasse por um objeto de sua subclasse sem quebrar o código?
Liskov Substitution Principle (LSP) que defende o uso da referencia em relação as classes de nível mais alto
Por que é importante seguir o Interface Segregation Principle (ISP)?
Para evitar interfaces “gordas” e acoplamento excessivo entre classes
Qual princípio incentiva a dependência de abstrações em vez de implementações concretas?
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.
Quais são os 3 tipos de Design Pattern de projetos de linguagens orientadas a objeto?
- Criacionais
- Estruturais
- Comportamentais
Qual é o principal objetivo do encapsulamento em programação orientada a objetos?
Proteger os dados internos de um objeto, controlando o acesso a eles através de métodos públicos
Qual o principal objetivo do padrão Criacional de projetos OOP?
Lidam com a criação de objetos, oferecendo maneiras flexíveis e reutilizáveis de instanciá-los
Qual a principal diferença entre um construtor de classe e um método no padrão criacional Factory Method?
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.
Quando utilizar o padrão criacuinal Abstract Factory?
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
Qual o principal benefício do padrão criacional Builder?
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.