POO - Como nascem os objetos? Um exercício de imaginação para iniciantes
- #Python
- #POO
Qual é a natureza fundamental da sua existência? É com essa pergunta um tanto metafísica que falamos hoje sobre o conceito de modelagem de objetos.
Todo estudante de programação sabe que a Programação orientada a objetos surgiu para, em resumo, organizar o código em torno de entidades do mundo real e que através da abstração é possível destacar os aspectos mais importantes de uma entidade ou conceito. A modelagem do mundo real por sua vez cria representações no software que se assemelha a entidades e aos processos do mundo físico e conceitual. Enquanto a abstração permite criar modelos simplificados que capturam as características e comportamentos fundamentais, a modelagem do mundo real facilita a compreensão e interação com os conceitos familiares que refletem a realidade.
Ambos os conceitos são cruciais para a criação de objetos significativos e eficientes em POO. A abstração ajuda a definir a natureza essencial do objeto, enquanto a modelagem do mundo real torna o objeto mais intuitivo e fácil de entender, pois reflete conceitos familiares.
Mas, afinal, o que é abstrair?
É a capacidade de conceitualizar uma entidade de forma que a torne representável em código. Ao abstrair uma entidade, o programador vai imaginar quais são os atributos que caracterizam essa entidade.
Ex:
Modelando a classe Livro:
Atributos possíveis: Autor, título, números de página
Em POO a manifestação prática da abstração são as classes.
Então, como nascem os objetos?
Agora, o programador vai imaginar quais são ações e comportamentos associados à entidade Livro.
Ex:
Métodos da classe: Abri, fechar, ler
No entanto, nosso objeto ainda não nasceu. O programador já abstraiu a entidade (Livro), modelou a classe (atributos), agora a partir da instanciação da classe, podemos dizer que o objeto nasceu. Os objetos reais só são criados quando instanciamos a classe. A instanciação ocorre quando você cria um objeto específico com base na classe que você definiu.
ex:
class Livro:
def __init__(self, titulo, autor, num_paginas):
# Atributos essenciais
self.titulo = titulo
self.autor = autor
self.num_paginas = num_paginas
self.pagina_atual = 1 # Inicializa a leitura na primeira página
def exibir_informacoes(self):
# Método para exibir informações sobre o livro
print(f"Título: {self.titulo}")
print(f"Autor: {self.autor}")
print(f"Número de Páginas: {self.num_paginas}")
def ler_pagina(self):
# Método para simular a leitura de uma página
if self.pagina_atual <= self.num_paginas:
print(f"Lendo página {self.pagina_atual}.")
self.pagina_atual += 1
else:
print("Você já leu todas as páginas!")
# Criando um objeto (instância) da classe Livro
meu_livro = Livro(titulo="Python para iniciantes", autor="João da Silva", num_paginas=200)
# Chamando métodos da classe
meu_livro.exibir_informacoes() # Exibe informações do livro
meu_livro.ler_pagina() # Simula a leitura de uma página
meu_livro.ler_pagina() # Simula a leitura de outra página
Em Python, o nascimento do Objeto está relacionado a um método especial chamando de método construtor __init __ que é onde você define quais atributos serão associados a uma instância específica da classe, e você pode passar valores específicos para esses atributos quando cria um objeto.
Tanto a criação de uma classe quanto a instanciação (criação de objetos) nascem do conceito de Modelagem de objetos do mundo real. A criação de classes e instâncias é uma maneira de organizar e estruturar o código de maneira que reflita o mundo real ou o problema que está sendo resolvido.
É entorno das Classes e Objetos que os pilares da Programação Orientada a Objetos se relacionam:
Na filosofia, Platão defendia o mundo das ideias, ou mundo das formas, onde existiam as formas eternas e perfeitas de todas as coisas. Para ele, o mundo que percebemos com nossos sentidos era apenas uma cópia imperfeita do mundo das ideias. Assim como como o mundo das ideias de Platão contém formas perfeitas e abstratas, a abstração em POO envolve criar modelos abstratos que representam entidades e conceitos. "Abstração e Modelagem do Mundo Real" na Programação Orientada a Objetos (POO) também refere-se à capacidade da POO de representar o mundo real de uma forma mais compreensível, por exemplo, se você tem uma classe "Carro" com métodos como "ligar" e "desligar", isso reflete diretamente o que esperamos de um carro no mundo real, e mais intuitiva, ao usar nomes de classes e métodos familiares.
Existe limite para a modelagem de objetos?
Somente se existir limites para o que pode existir.
Espero com esse conteúdo contribuir para quem está começando, assim como eu.