Files
freeCodeCamp/guide/portuguese/design-patterns/object-oriented-programming/index.md
Fabio Trilho Pereira 8bd3f6654c Fixed typos and changed OO to OOP (#20552)
* Fixed typos and changed OO to OOP

Some typos, mainly to ease the reading for Portuguese people.
Changed every OO to OOP because it was confusing, and calling it OOP like every other language calls it, makes it even easier for begginers to search online more information about the subject.

* Fixed the sentence that should be in PT-BR

Changed "porquê" to "por que" because is correct in PT-BR
2018-11-13 07:51:27 -02:00

33 lines
2.2 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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