freeCodeCamp/guide/portuguese/design-patterns/object-oriented-programming/index.md

32 lines
2.2 KiB
Markdown
Raw Normal View History

---
title: Object Oriented Programming (OOP)
localeTitle: Programação Orientada a Objetos (OOP)
---
## Esboço
* Por que orientado a objeto (doravante abreviado como OO)?
* Conceitos OO
* Qual o proximo?
## Porquê OO?
Nesse paradigma, entidades são representadas como dados do mundo real. Por exemplo, queremos representar um cachorro. No paradigma OO, nós simplesmente criamos uma classe chamada "dog", e damos a ela atributos (cor, idade, sexo, etc) e comportamento (latir, correr, comer, etc). Comportamento é alterado através de "métodos" (funções em palavras simples) que fazem alterações nos atributos.
## Conceitos OO
O que torna a programação OO poderosa é sua capacidade de fazer o seguinte:
* Herança
* Polimorfismo
* Encapsulamento
* Abstração
Na programação procedural, simplesmente criamos variáveis e as modificamos quando necessário. No entanto, na programação OO, podemos literalmente simular objetos do mundo real. O encapsulamento é conseguido através da criação de uma classe específica para uma entidade, por exemplo, cão. Objetos dessa classe são criados, e nada mais são do que instâncias da classe. Cada objeto possui seus próprios valores de atributo.
Outro conceito extremamente útil é o da herança. A ideia é que uma classe possa herdar atributos e comportamentos de uma classe base. Por exemplo, ao criar um jogo, temos um jogador e um inimigo. Podemos criar uma classe base chamada pessoa e dar a ela atributos como nome, idade, sexo, etc. O comportamento da pessoa pode ser caminhar e pular. Um jogador e um inimigo podem então herdar essas "qualidades" da pessoa e podem ter qualidades adicionais como matar, pontuar, comer, etc.
Isso ajuda a reutilizar o código e tornar a estrutura do rcode muito mais limpa. A ocultação de dados é outro recurso interessante. Em OO, temos a noção de atributos privados e públicos. Atributos privados podem ser acessados e modificados somente por métodos dessa classe em particular, enquanto dados públicos podem ser modificados de qualquer lugar no programa (dentro do escopo obviamente).
## Qual o proximo?
Escolha uma linguagem OO e construa um jogo básico baseado em terminal para ilustrar esses conceitos.