A Programação Orientada a Objetos (POO) é uma abordagem para desenvolver programas em que o código é organizado na forma de objetos
Encapsulamento
Encapsulamento é a união de dados e métodos que trabalham com esses dados dentro de uma mesma classe, bem como a restrição do acesso direto ao estado interno do objeto.
Em palavras simples: o objeto gerencia seus próprios dados, e o código externo interage com ele através de métodos.
Abstração
Abstração é a seleção apenas das características importantes do objeto e o ocultamento dos detalhes de sua implementação.
Em palavras simples: ao usuário importa o que o objeto faz, não como exatamente ele faz.
Polimorfismo
Polimorfismo é a capacidade de objetos com diferentes implementações usarem uma mesma interface. Nos testes, isso ajuda a escrever código universal que funciona com diferentes tipos de dados ou classes.
Exemplo em Python:
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Au!"
class Cat(Animal):
def make_sound(self):
return "Miau!"
def animal_sound(animal: Animal):
print(animal.make_sound())
dog = Dog()
cat = Cat()
animal_sound(dog) # Au!
animal_sound(cat) # Miau!
Nos testes automatizados, o polimorfismo é útil para:
- Criar métodos de verificação universais
- Implementar diferentes estratégias de teste através de uma mesma interface
- Manter diferentes versões de API/UI sem alterar os testes
Herança
Herança é um mecanismo que permite a uma nova classe usar automaticamente uma classe existente, herdando suas propriedades e métodos.
Em palavras simples: a nova classe reutiliza o código da classe pai e, se necessário, o amplia.
Git
1. Sistemas de controle de versões. Local, centralizado, distribuído.
2. Conceitos básicos. Repositório, índice, commit, ponteiros, ramo, cópia de trabalho.
3. Trabalhar com repositório. Comandos: init, clone, status
4. Criar um commit. Comandos: add, commit.
5. Criar, ver, trocar entre ramos, excluir. Comandos: branch, checkout, log, diff.
6. Desfazer alterações. Comandos: restore, rm, checkout, revert.
7. Mesclar alterações entre ramos. Comandos: merge, cherry-pick, rebase.
8. Trabalhar com repositório remoto. Comandos: fetch, pull, push.
9. Trabalhar com GitHub, forks e Pull Requests.