segunda-feira, 27 de junho de 2022

Programação orientada a objetos na prática

A Programação estruturada (PE) foi o paradigma dominante na escrita de software até a chegada da programação orientada a objetos (POO). Enquanto a PE fia-se em estruturas de controle e repetição, a POO se baseia no conceito de objetos que possuem atributos (dados) e métodos (procedimentos).

Geralmente as pessoas que começaram a programar estruturado tem dificuldade de entender como programar orientado a objetos. Vejamos se eu consigo desmistificar isso através de comparações de código.

Vamos ao código estruturado

<?php  
$nome = 'Fulano';
$salarioBase = 1000;
$horasExtras = 10;
$valorDaHoraExtra = 20;

$salrioEfetivo = $salarioBase + ($horasExtras * $valorDaHoraExtra);

Uma versão orientada a objetos seria

<?php
require 'Funcionario.php';

$funcionario = new Funcionario();

$funcionario->setNome('Fulano');
$salarioBase->setSalarioBase(1000);
$horasExtras->setHorasExtras(10);
$valorDaHoraExtra->setValorDaHoraExtra(20);
echo $funcionario->getSalarioEfetivo();

Repare que toda a lógica de programação passou a ficar na classe e não no código fonte do programa principal.

<?php
class Funcionario(){
    private $nome;
    private $salarioBase;
    private $horasExtras;
    private $valorDaHoraExtra;

    public function setNome($nome){
        $this->nome = $nome;
    }
    public function setSalarioBase($valor){
        $this->$salarioBase = $valor;
    }
    public function setHorasExtras($valor){
        $this->$horasExtras = $valor;
    }
    public function setValorDaHoraExtra($valor){
        $this->$horasExtras = $valor;
    }
    public getSalarioEfetivo(){
        return $this->salarioBase + ($this->horasExtras * $this->valorHoraExtra);
    }


}

A vantagem disso é impedir ao programador a cometer erros, facilitar a manutenção,  visto que o código fica mais inteligível. 

Com a criação de classes é possível fazer o reuso de código.

Mas se você pensa que parou por aí, não sabe de nada inocente. Conhecer os conceitos de encapsulamento, herança, polimorfismo e ainda conhecer designer paterns é essencial para programar orientado a objetos. Caso queira dar uma olhadinha nesses conceitos sugiro a você ler um post que escrevi a milênios antes de cristo.

Nenhum comentário: