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

33 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 OOP)?
* Conceitos OOP
* Qual o próximo?
## Porquê OOP?
Nesse paradigma, entidades são representadas como dados do mundo real. Por exemplo, queremos representar um cachorro. No paradigma OOP, 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 OOP
O que torna a programação OOP 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 OOP, 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 os 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 OOP, 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 OOP e construa um jogo básico baseado em terminal para ilustrar esses conceitos.