Paradigma Orientado a Objetos Flashcards

1
Q

Quais são as vantagens do POO?

A

Fornece um software confiável, reutilizável e facilmente extensível. Além disso, ajuda a diminuir o tempo de desenvolvimento.

Pode-se reutilizar prontamente classes orientadas a objetos bem-feitas. Assim como os módulos, os objetos podem ser reutilizados em muitos programas diferentes.

Um código orientado a objetos bem projetado é manutenível. Para corrigir um erro, o programador simplesmente corrige o problema em um lugar. Como uma mudança na implementação é transparente, todos os outros objetos se beneficiarão automaticamente do aprimoramento.

A programação orientada a objetos apresenta ao programador vários recursos para ESTENDER CÓDIGO. Esses recursos incluem herança, polimorfismo, sobreposição e uma variedade de padrões de projeto.

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

Quais são os pilares do POO?

A

Na base, tem-se o PRINCÍPIO DA ABSTRAÇÃO, que é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais.

Em seguida, existem o Encapsulamento, a Herança e o Polimorfismo.

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

O que é encapsulamento?

A

Trata-se de uma forma de restringir o acesso ao comportamento interno de um objeto de modo a evitar que eles sofram acessos indevidos.

Pensando no código, é impedir o acesso direto aos atributos de um objeto. A boa prática é acessá-los por meio dos métodos.

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

O que é herança?

A

Trata-se do princípio que permite que classes compartilhem atributos e métodos. É utilizada com a intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos.

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

O que é herança múltipla?

A

A herança múltipla ocorre quando uma subclasse herda características de duas ou mais superclasses que não estejam na mesma hierarquia. Se A é superclasse de B e B é superclasse de C, não existe herança múltipla, porque C vai herdar características de A e B, que estão na mesma hierarquia.

Dizer que somente herdar características de mais de uma superclasse é herança múltipla não está correto.

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

O que é polimorfismo?

A

É o princípio pelo qual duas ou mais classes derivadas da mesma superclasse podem invocar métodos que têm a mesma assinatura, mas comportamentos distintos.

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

Quais são os tipos de polimorfismo?

A

AD-HOC (lembra CS):

Coerção
Sobrecarga (carga lembra granada):
A sobrecarga de métodos (overload) consiste basicamente em criar variações de um mesmo método, ou seja, a criação de dois ou mais métodos com nomes totalmente iguais em uma classe (com argumentos diferentes).

TEMPO DE COMPILAÇÃO

Universal:
Paramétrico
Sobrescrita:
A Sobreposição de métodos (override) permite reescrever um método, ou seja, podemos reescrever nas classes filhas métodos criados inicialmente na classe pai. Os métodos que serão sobrepostos, diferentemente dos sobrecarregados, devem possuir o mesmo nome, tipo de retorno e quantidade de parâmetros do método inicial, porém o mesmo será implementado com especificações da classe atual, podendo adicionar um algo a mais ou não.

TEMPO DE EXECUÇÃO

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

O que são objetos e classes?

A

Objetos são coisas e classes são um agrupamento de coisas.

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

Quais são os componentes de um objeto?

A

Identidade: é o que torna o objeto único.

Estado: são os atributos do objeto.

Comportamento: são seus métodos e procedimentos

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

Quais são os tipos de ligação existentes?

A

Early Binding: também chamado de ligação estática, ocorre quando o método a ser invocado é definido em TEMPO DE COMPILAÇÃO.

Late Binding: também chamado de ligação dinâmica, ocorre quando o método a ser invocado é definido em TEMPO DE EXECUÇÃO.

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

O que é mensagem?

A

Trata-se de requisições enviadas de um objeto para outro com o intuito de receber algo em retorno por meio da execução de uma operação.

Uma mensagem é composta por: objeto, a quem a mensagem é endereçada; nome do método ou serviço que se deseja executar; e parâmetros necessários ao método (se existirem).

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

O que é interface?

A

Trata-se de um contrato sem implementação entre dois ou mais objetos.

É utilizada para reduzir o acoplamento, facilitando o reúso de classes. Elas não possuem atributos, apenas assinaturas dos métodos – sendo que todos os métodos são, por padrão, abstract e public.

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

O que é classe abstrata?

A

Ela é desenvolvida para representar entidades e conceitos abstratos. Ela é sempre uma classe que não possui instâncias.

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

Quais são as principais diferenças entre Interface e Classe Abstrata?

A

Interface suporta HERANÇA MÚLTIPLA. CA não.

Interfaces não podem conter métodos concretos, somente abstratos. CAs podem conter ambos.

Interfaces suportam apenas constantes estáticas. CAs suportam estáticas e de instância.

Nas interfaces, métodos e membros devem ser sempre públicos por padrão. Nas CAs eles podem ter qualquer visibilidade.

As interfaces não possuem atributos de instância, apenas constantes. As CAs podem ter.

As interfaces não contêm construtores. CAs sim.

Em geral, as interfaces são mais lentas que as CAs.

Nas Classes Abstratas, é obrigatória a existência de pelo menos um método abstrato.

Classes abstratas e interfaces não geram instâncias diretas.

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

Qual a diferença entre Análise e Projeto?

A

ANAL É PROBLEMA
PROJETO É SOLUÇÃO

Na análise, desenha-se o problema (foco no cliente).

No projeto, desenha-se a solução (foco no programador).

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

Quais são os 3 estágios sucessivos de abstração?

A

Análise, Especificação e Implementação.

17
Q

Como é o modelo de classes de análise?

A

É construído durante a atividade de análise, representa as classes de domínio do negócio. Não leva em consideração restrições inerentes à tecnologia a ser utilizada na solução de um problema.

FOCO NO CLIENTE

18
Q

Como é o modelo de classes de especificação (projeto)?

A

É construído durante a atividade de projeto, estende o modelo de classes de análise e contém detalhes específicos inerentes à solução de software escolhida.

FOCO NO PROGRAMADOR

19
Q

Como é o modelo de classes de implementação?

A

É construído durante a atividade de implementação, estende o modelo de classes de projeto e contém detalhes específicos inerentes ao desenvolvimento das classes em alguma linguagem.

20
Q

O que é Classe de Fronteira?

A

Classe utilizada para modelar a interação entre um ator e o sistema. Para cada ator, é identificada pelo menos uma classe de fronteira para permitir sua interação com o sistema. Então, uma classe de fronteira existe para que o sistema se comunique com o mundo exterior, logo elas são altamente dependentes do ambiente.

21
Q

O que é Classe de Controle?

A

Classe utilizada para controlar a lógica de execução ou negócio correspondente a cada caso de uso. Servem como uma ponte de comunicação entre objetos de fronteira e objetos de entidade. Decidem o que o sistema deve fazer quando um evento externo relevante ocorre, agindo como coordenador para a realização de casos de uso.

22
Q

O que é Classe de Entidade?

A

Classe utilizada para armazenar a informação que é manipulada ou processada pelo caso de uso, partindo do domínio do negócio. Geralmente, essas classes armazenam informações persistentes. Há várias instâncias ou objetos de uma mesma classe de entidade coexistindo dentro do sistema.

23
Q

O que significa dizer baixo acoplamento e alta coesão?

A

Acoplamento trata do nível de dependência entre módulos de um software. Já a Coesão trata do nível de responsabilidade de um módulo em relação a outros.

Por que é bom ter baixo acoplamento?
Porque se os módulos pouco dependem um do outro, modificações de um não afetam os outros, além de não prejudicar o reúso.

Por que é bom ter alta coesão?
Porque se os módulos têm responsabilidades claramente definidas, eles serão altamente reusáveis, independentes e simples de entender.

24
Q

O que é a arquitetura em camadas?

A

É uma forma de organizar a arquitetura de um sistema complexo em partes menores, por meio de camadas, em que cada uma corresponderá a um conjunto de funcionalidades de um sistema.

25
Q

Quais são as 3 camadas na Arquitetura em Camadas?

A

Camada de apresentação: possui classes que contêm funcionalidades para visualização dos dados pelos usuários. Ela tem o objetivo de exibir informações ao usuário e traduzir ações do usuário em requisições às demais partes dos sistemas.

Camada de lógica de negócio: possui classes que implementam as regras de negócio no qual o sistema será implantado.

Camada de acesso: possui classes que se comunicam com outros sistemas para realizar tarefas ou adquirir informações para o sistema.

26
Q

Quais são as 3 camadas do modelo MVC?

A

Modelo: Responsável por modelar os dados da aplicação e regras de negócio. Tem o foco em armazenamento, manipulação e geração de dados.

Visão: responsável pela apresentação dos dados aos usuários. Ele recebe entradas de dados e apresenta resultados. Essa camada não persiste nenhum dado no sistema e também não busca dados, apenas os renderiza em tela.

Controle: responsável por definir o comportamento da aplicação. Processa e responde a eventos, geralmente ações do usuário, e pode invocar alterações no modelo. Realiza, também, a validação de dados do usuário.

27
Q

Qual a sintaxe de criação de uma classe?

A

[palavra-chave] class NomeDaClasse {

//Atributos e Métodos

}

public class Carro {…}

abstract class Carro {…}

final class Carro {…}

final = não pode ser estendida

28
Q

Qual a sintaxe de criação de um objeto?

A

new construtor();

NomeClasse NomeObjeto = new NomeClasse();

Carro Ferrari = new Carro();

29
Q

O que é o Garbage Collector da linguagem Java?

A

A linguagem Java assume a responsabilidade de destruir qualquer objeto criado que não esteja sendo usado. Para tal, utiliza um Coletor de Lixo (Garbage Collector), que é executado em intervalos regulares, examinando cada objeto para ver se ele ainda é referenciado por alguma variável. Caso o objeto não seja utilizado ao menos por uma variável, ele é destruído e sua memória é liberada.

30
Q

Qual a sintaxe para a declaração de um atributo?

A

[palavra-chave] tipoAtributo NomeAtributo [=expressão];

int velocidade;

31
Q

O que significa as palavras-chave Final, Volatile, Static e Transient em relação aos atributos?

A

final String Nome;
Indica que Nome é um atributo constante.

volatile Salario;
Indica que Salário é modificável por threads distintas.

static Idade;
Indica que idade é compartilhada por todos os objetos.

transient Sexo;
Indica que Sexo não pode ser serializável.

32
Q

Quais são os tipos de modificadores de acesso?

A

public = público

private = privado (mesma classe)

protected = protegido (mesmo pacote)

sem nada = default (mesmo pacote, só que mais restritivo)

33
Q

Qual a sintaxe para a declaração de um método?

A

[Palavras-Chave] TipoRetorno NomeMetodo ([Lista de Parâmetros])
{

//Corpo do Método

}

int soma (int a, int b) {…}

34
Q

O que significa as palavras-chave Abstract, Final, Static, Native e Synchronized em relação aos métodos?

A

abstract int soma (int a, int b)
Indica que o método não possui corpo.

final int soma (int a, int b)
Indica que o método não pode ser sobrescrito.

static int soma (int a, int b)
Indica que esse método só pode acessar atributos de classe e não pode ser sobrescrito.

native int soma (int a, int b)
Indica que esse método foi escrito em outra linguagem.

synchronized soma (int a, int b)
Indica que esse método só é executável por uma thread por vez.

35
Q

Qual a sintaxe para a declaração de uma interface?

A

A sintaxe para implementar uma Interface utiliza a palavra reservada implements:

public class ClasseImplementadoraDeInterfaces implements FiguraGeometrica;

36
Q

O que são getters e setters?

A

São métodos usados para recuperar dados e inserir dados, respectivamente. Para o primeiro, utiliza-se o Método Get; para o segundo, utiliza-se o Método Set. Em geral, costuma-se declarar atributos como privados, e métodos e classes como públicos.

private String Algo;

public String getAlgo() {

return this.Algo;

}

public void setAlgo(String Algo) {

this.Algo = Algo;

}

37
Q

Quando a assinatura de um método é modificada?

A

Quando muda a quantidade, o tipo ou a ordem dos parâmetros.

public String EntendendoAssinatura(int A, char B);

Quantidade:
public String EntendendoAssinatura(long A, long B, long C);

Tipo:
public String EntendendoAssinatura(char A, long B);

Ordem:
public String EntendendoAssinatura(char B, int A);