Paradigma Orientado a Objetos Flashcards
Quais são as vantagens do POO?
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.
Quais são os pilares do POO?
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.
O que é encapsulamento?
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.
O que é heranç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.
O que é herança múltipla?
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.
O que é polimorfismo?
É 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.
Quais são os tipos de polimorfismo?
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
O que são objetos e classes?
Objetos são coisas e classes são um agrupamento de coisas.
Quais são os componentes de um objeto?
Identidade: é o que torna o objeto único.
Estado: são os atributos do objeto.
Comportamento: são seus métodos e procedimentos
Quais são os tipos de ligação existentes?
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.
O que é mensagem?
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).
O que é interface?
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.
O que é classe abstrata?
Ela é desenvolvida para representar entidades e conceitos abstratos. Ela é sempre uma classe que não possui instâncias.
Quais são as principais diferenças entre Interface e Classe Abstrata?
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.
Qual a diferença entre Análise e Projeto?
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).