Orientação a Objetos Flashcards
Quando falamos sobre orientação a objetos que palavra devo lembrar?
Classe
class Nome {}
ou
class nome {}
Class Nome {}
Sempre letra Maiúscula.
Uma classe é o que?
Um conjunto de atributos e métodos.
Crie uma classe pessoa
class Pessoa {
String nome;
String cpf;
String rg;
Pessoa ({required this.nome, required this.cpf, required this.rg});
}
void main(){
final abc = Pessoa (nome: ‘test’, cpf: ‘351’, rg: ‘351’);
print (abc);
print (abc.cpf);
}
O que é método?
É alterar o valor da classe, um exemplo é o saldo do banco que começa com 0, adiciono um método que é função para modificar o saldo.
Dê exemplo de um método
void paymentTo (int value) {
this.value = this.value - value;
print (“Pagamento realizado com sucesso”);}
nomeObjetoAux.paymentTo (12);
print (nomeObjetoAux.value);
O que é Override?
É a subclasse substituindo a implementação de um método da classe.
Como se copiasse as características do objeto pai e passasse para o objeto filha personalizando algumas coisas como a representação personalizada do objeto por exemplo.
No objeto pai sairia instância pessoa
No objeto filha sairia pessoa por exemplo.
A classe principal aparece Instance of AccountBank, faça um override para aparecer apenas Accountbank
@override
String toString () => ‘AccountBank (id: $id, cpf: $cpf, value: $value)’;
O que é uma classe abstrata?
É quando a classe principal funciona de base para as subclasses. Como por exemplo a classe animal que tem o método emitir som, a subclasse cachorro irá implementar o método emitir som com au au por exemplo.
Como declarar uma classe abstrata em Dart?
abstract class Payment {}
Para que serve sintaxe get
Para obter um dado privado de uma classe. Exemplo
class Pessoa{
String _nome;
String get nome{
return _nome;
}
}
print (nome);
O que é herança?
É quando a subclasse herda algo da classe principal. Exemplo classe animal, a classe cachorro herda certos atributos da classe animal e implementa os métodos da classe animal como método som que passa a ser au au.
Qual a diferença entre estender e implementar uma classe?
Em estender, a subclasse herda todos os atributos e métodos da classe principal.
Em implementar, a subclasse implementa todos os métodos da classe principal sem necessariamente herdar os atributos.
Quando eu implemento umaa classe eu tenho conjunto do que?
Conjunto de funções
O que é obrigatório fazer ao implementar uma classe?
override e fazer função
Qual a vantagem de estender uma classe invés de implementar?
Consigo colocar só uma funcionalidade a mais que eu queira sem precisar “poluir” tanto o código comparado com implementação de classe.
Como conseguir pegar o feeling de quando é extensão ou implementação de classe?
Prática
Para que serve a sintaxe final?
exemplo
final String email;
final String senha;
final serve para garantir a imutabilidade do dado, ou seja, para garantir que o dado não seja mais alterado, isso aumenta a segurança e confiabilidade.
void é 0?
Não, void é tipo nulo, tipo nenhum.
O que é encapsulamento?
É eu colocar os parâmetros e funcionalidades que a classe irá ter, como por exemplo classe IMC em que eu coleto peso e altura e realizo o cálculo tudo dentro da classe.
Encapsulamento também serve para proteger os dados.
Qual a vantagem a programação orientada a objetos?
Consigo “quebrar” meu código em várias camadas e consigo modificar as funcionalidades sem impactar o resto do código.
O que é polimorfismo?
É quando objetos de diferentes classes sejam tratados de maneira intercambiável, ou seja, um objeto poderia ser usado como outro objeto de uma classe diferente.
O polimorfismo permite que um único método ou função possa ser usado com objetos de diferentes classes.
O que é um objeto?
É uma instância de uma classe. Podendo ser um atributo (variável) ou método (função).
Dê exemplo de uma classe com o objeto atributos e métodos.
Classe Pessoa
Objeto atributo: Nome e Idade.
Objeto método: Falar.
O que é objeto?
É uma instância de uma classe que contém seus próprios valores para os atributos definidos na classe e pode executar os métodos definidos na classe.
Qual a diferença entre polimorfismo estático para dinâmico?
A diferença entre polimorfismo estático e dinâmico é que o polimorfismo estático é resolvido em tempo de compilação, enquanto o polimorfismo dinâmico é resolvido em tempo de execução.
Exemplo de estático
Considere uma função “soma” que pode ser usada para somar dois inteiros ou dois floats. O polimorfismo estático é usado para selecionar a versão adequada da função “soma” com base nos tipos dos parâmetros usados na chamada.
Exemplo de dinâmico
Considere uma classe “Animal” com um método “emitirSom”. Uma subclasse “Cachorro” pode sobrescrever o método “emitirSom” para fornecer uma implementação diferente. O polimorfismo dinâmico permite que o método “emitirSom” adequado seja chamado com base no tipo de objeto real que está sendo manipulado. Se o objeto for do tipo “Cachorro”, o método “emitirSom” da subclasse “Cachorro” será chamado. Se o objeto for do tipo “Animal”, o método “emitirSom” da classe pai “Animal” será chamado.
Para que serve null safety?
null safety garante que minha variável irá retornar null, isso evita que o app quebre caso eu esqueça de declarar um dado na minha variável int, String, double por exemplo.
Como declaro uma variável que pode vir null?
Strin? a;
double? b;
int? c;