Programação Orientada a Objeto (POO)
Oque é Orientação a Objetos
Primeiramente, o conceito de objeto (coisa) na "vida real" já é bem definido e compreendido por todos nós. Por exemplo, imagine uma caneca, você sabe que todas irão possui altura, diâmetro e profundidade. Essas serão as características principais que definem uma caneca. Além disso, elas irão ter certas funcionalidades como: preencher o interior com café!
Perceba que todo objeto pode ser definido com propriedades e funcionalidades específicas.
Porque (POO) é importante para programadores? ☕
Inserir conceitos de objetos reais ou "não reais" dentro de uma máquina e conseguir estabelecer uma certa interação entre eles não é nada fácil. A capacidade de abstração será muito útil para tarefas como essa. Pois, além de ter que estabelecer uma linguagem entendível com a máquina, qualquer ser humano que olhar pro seu código deverá compreender, ou seja, uma "conversa" com ambas as partes.
POO é uma forma de se expressar, é quase uma filosofia.
Tá, mas como que isso funciona na prática? (com Python 🐍)
class Caneca:
def __init__(self, cor, material, capacidade):
self.cor = cor
self.material = material
self.capacidade = capacidade
self.volume_atual = 0
def descrever(self):
return f"Uma caneca {self.cor} feita de {self.material} com capacidade de {self.capacidade} ml."
def encher(self, volume):
if volume <= 0:
return "Adicione um volume positivo."
if self.volume_atual + volume <= self.capacidade:
self.volume_atual += volume
return f"A caneca agora tem {self.volume_atual} ml."
return "A caneca transbordou!"
def beber(self, volume):
if volume <= 0:
return "Beba um volume positivo."
if volume <= self.volume_atual:
self.volume_atual -= volume
return f"Bebeu {volume} ml, {self.volume_atual} ml restantes."
return "Não há líquido suficiente!"
def esvaziar(self):
self.volume_atual = 0
return "A caneca agora está vazia."
# Exemplo de uso
minha_caneca = Caneca('azul', 'cerâmica', 350)
print(minha_caneca.descrever()) # Uma caneca azul feita de cerâmica com capacidade de 350 ml.
print(minha_caneca.encher(200)) # A caneca agora tem 200 ml.
print(minha_caneca.beber(100)) # Bebeu 100 ml, 100 ml restantes.
print(minha_caneca.esvaziar()) # A caneca agora está vazia.
Como esse código exemplifica POO?
1. Classe
- em POO, uma classe é um modelo para criar objetos. Define atributos e comportamentos.
- A classe da canenca é um modelo que define (cor, material, capacidade, volume atual) e métodos (descrever, encher, beber, esvaziar)
2. Objeto
- É como se fosse uma "cópia" do modelo que pode ser manipulado individualmente.
- No código:
minha_caneca = Caneca('azul', 'cerâmica', 350)
cria um objeto específico da classe Caneca. Essa instância (minha_caneca) tem atributos e métodos definidos pela classe Caneca.
3. Encapsulamento
- É o conceito de esconder os detalhes internos de uma classe e expor apenas oque é necessário.
- Por exemplo, os métodos
encher
ebeber
controlam como os atributos podem ser alterados (como ovolume atual
) prevenindo um transbordamento ou que se beba mais café do que já tem.
4. Abstração
- Como eu disse no início, a abstração irá ajudar o programador a simplificar realidades complexas ao se focar nos aspectos mais importantes e IGNORAR os detalhes não essenciais.
- Eu não precisei me importar com o peso ou o formato da caneca no código.
Esta publicação foi feita enqunato eu estudava, então não espere conceitos avançados e nem nada do tipo. O importante foi compreender a base que é fundamental para todo o aprendizado seja qual for o conteúdo.
- Dêem uma olhada nessa aula do canal Programação Dinâmica! :D