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

32 lines
2.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

---
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.