PauloRB.dev

Desenvolvedor de Software

Rascunho para estudo de programação orientada a objetos em Python | PauloRB.dev Rascunho para estudo de programação orientada a objetos em Python – PauloRB.dev
Rascunho para estudo de programação orientada a objetos em Python

Rascunho para estudo de programação orientada a objetos em Python

A orientação a objetos (OO) é um paradigma de programação central em Python, que facilita a organização e estruturação do código de maneira modular e reutilizável. Aqui estão os conceitos fundamentais da orientação a objetos em Python:

  1. Classes e Objetos: Uma classe é um modelo ou blueprint para criar objetos. Um objeto é uma instância de uma classe, contendo dados (atributos) e comportamentos (métodos). Por exemplo, você pode ter uma classe Carro com atributos como marca e modelo, e métodos como acelerar() e frear().
    
    
    class Carro:
        def __init__(self, marca, modelo):
            self.marca = marca
            self.modelo = modelo
    
        def acelerar(self):
            print(f"{self.marca} {self.modelo} está acelerando!")
    
    # Criando um objeto da classe Carro
    meu_carro = Carro("Toyota", "Corolla")
    meu_carro.acelerar()  # Saída: Toyota Corolla está acelerando!
    

  2. Encapsulamento: Encapsulamento é o princípio de esconder os detalhes internos de implementação de uma classe e expor apenas os métodos e atributos necessários para o uso externo. Isso é feito através do uso de métodos acessores (getters) e modificadores (setters) e, em Python, controlando o acesso a atributos com prefixos como _ (protegido) e __ (privado).
    
    
    class ContaBancaria:
        def __init__(self, saldo=0):
            self.__saldo = saldo  # Atributo privado
    
        def depositar(self, valor):
            if valor > 0:
                self.__saldo += valor
                print("Depósito realizado com sucesso!")
            else:
                print("O valor do depósito deve ser positivo!")
    
        def ver_saldo(self):
            return self.__saldo
    
    # Criando e utilizando um objeto da classe ContaBancaria
    conta = ContaBancaria()
    conta.depositar(100)
    print(conta.ver_saldo())  # Saída: 100
    

  3. Herança: Herança permite criar uma nova classe (chamada de classe filha) baseada em uma classe existente (chamada de classe mãe), herdando seus atributos e métodos e podendo adicionar novos ou modificar os existentes. A herança facilita a reutilização de código e a implementação de hierarquias.
    
    
    class Veiculo:
        def __init__(self, marca):
            self.marca = marca
    
        def buzinar(self):
            print("Beep beep!")
    
    class Carro(Veiculo):  # Carro herda de Veículo
        def __init__(self, marca, modelo):
            super().__init__(marca)  # Chamada ao construtor da classe mãe
            self.modelo = modelo
    
    # Criando um objeto da classe Carro
    meu_carro = Carro("Ford", "Mustang")
    meu_carro.buzinar()  # Saída: Beep beep!
    

  4. Polimorfismo: Polimorfismo refere-se à capacidade de um método ter várias formas. Isso pode ser conseguido através de sobreposição (quando métodos de classes derivadas têm o mesmo nome que os da classe base) ou sobrecarga de métodos (não suportada diretamente em Python como em outras linguagens, mas pode ser simulada).
    
    
    class Animal:
        def falar(self):
            pass
    
    class Cachorro(Animal):
        def falar(self):
            return "Au au!"
    
    class Gato(Animal):
        def falar(self):
            return "Miau!"
    
    # Utilizando polimorfismo
    animais = [Cachorro(), Gato()]
    for animal in animais:
        print(animal.falar())  # Saída: Au au! seguido por Miau!

  5. Abstração: Abstração é o conceito de esconder a complexidade e mostrar apenas o essencial para o usuário. Classes abstratas em Python, que não podem ser instanciadas diretamente e são destinadas a ser subclasses, são definidas através do módulo abc (Abstract Base Classes).
    
    
    from abc import ABC, abstractmethod
    
    class FormaGeometrica(ABC):
        @abstractmethod
        def area(self):
            pass
    
    class Circulo(FormaGeometrica):
        def __init__(self, raio):
            self.raio = raio
    
        def area(self):
            return 3.14 * self.raio * self.raio
    
    # Criando um objeto da classe Circulo
    circulo = Circulo(5)
    print(circulo.area())  # Saída: 78.5
    

A orientação a objetos em Python é implementada de maneira flexível, permitindo aos programadores escolher entre um estilo de programação estruturada ou orientada a objetos, dependendo do problema a ser resolvido. Isso faz do Python uma linguagem muito versátil e popular para uma ampla gama de aplicações, desde scripts simples até sistemas complexos.

 

Mais Posts

Onde aprender React ?

Onde aprender React ?

Vamos lá! Em um dia qualquer estava eu a rolar o feed do Linked-In e um determinado post me chamou... Leia mais

Como Atualizar Valores de Chaves em Campos JSON no PostgreSQL

Como Atualizar Valores de Chaves em Campos JSON no PostgreSQL

Atualizar valores em um campo JSON no PostgreSQL é uma operação comum ao trabalhar com dados semi-estruturados. Isso é especialmente... Leia mais

Como acessar o entity Manager(Doctrine) dentro de comandos no Symfony 5

Como acessar o entity Manager(Doctrine) dentro de comandos no Symfony 5

Ao termos de criar comandos personalizados no Symfony na maioria das vezes se faz necessário o uso de alguma interação... Leia mais

Por que whereNull não funciona com updateOrCreate no Laravel (e como evitar bugs silenciosos)

Por que whereNull não funciona com updateOrCreate no Laravel (e como evitar bugs silenciosos)

O updateOrCreate() é um dos métodos mais utilizados no Eloquent para garantir que registros sejam atualizados ou criados sem duplicações.... Leia mais