Explorando a programação orientada a objetos em PHP: Introdução
Tags: php, weeklyretro, programming, beginners
Published: 2023-10-11 00:48:32

Durante esta semana, reservei algumas horas do meu dia para esclarecer as dúvidas de um membro da equipe em relação ao paradigma de orientação a objetos. Optamos por utilizar o livro ["PHP Programando com Orientação a Objetos"](https://books.google.com.br/books/about/PHP_Programando_com_Orienta%C3%A7%C3%A3o_a_Objet.html?id=lfxmDwAAQBAJ&source=kp_book_description&redir_esc=y), escrito por Pablo Dall’Oglio, porque era o livro que ele tinha à disposição. Mesmo sendo mais antigo, o livro oferece uma boa introdução à orientação a objetos. Além disso, procurei incluir referências recentes em cada tópico.

---

## Compreendendo a Programação Orientada a Objetos

Para iniciar a compreensão dos conceitos de orientação a objetos, eu sempre recomendo a leitura do Capítulo II do livro ["Arquitetura Limpa: O Guia do Artesão para Estrutura e Design de Software"](https://www.amazon.com.br/Arquitetura-Limpa-Artes%C3%A3o-Estrutura-Software/dp/8550804606/ref=sr_1_1_sspa?crid=1VMK9K2CKSYB2&keywords=clean+architecture&qid=1696790714&sprefix=clean+arch%2Caps%2C295&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1), intitulado "Começando com os Tijolos: Paradigmas da Programação". Neste capítulo, são explorados os três principais paradigmas de programação: estruturada, orientação a objetos e funcional, acompanhados de um contexto histórico. Além disso, o capítulo apresenta figuras, como Edsger Wybe Dijkstra, cujo nome é reconhecido por todos devido ao [Algoritmo de Dijkstra](https://pt.wikipedia.org/wiki/Algoritmo_de_Dijkstra). A seguir, faço um breve resumo do conteúdo abordado:

1968: Surgimento da Programação Estruturada

- Edsger Wybe Dijkstra introduziu a programação estruturada.
- Ele destacou as desvantagens de usar saltos irrestritos (instruções goto) na programação.
- Dijkstra defendeu construções estruturadas como if/then/else e do/while/until como alternativas às instruções goto.
- A programação estruturada visa melhorar a estrutura e a legibilidade do programa.

1966: Descoberta da Programação Orientada a Objetos (OOP)

- Ole Johan Dahl e Kristen Nygaard notaram que o quadro da pilha de chamadas de função na linguagem ALGOL poderia ser movido para um heap.
- Isso permitiu que variáveis locais declaradas por uma função existissem muito depois do retorno da função.
- O conceito de função evoluiu para um construtor de classe.
- Variáveis locais tornaram-se variáveis de instância.
- Funções aninhadas transformadas em métodos.
- Esta descoberta lançou as bases para a Programação Orientada a Objetos.

É comum afirmar que a programação orientada a objetos possui a capacidade de modelar o mundo real. Eu costumava ouvir muito sobre isso durante as disciplinas da faculdade, porém, naquela época, o entendimento disso me parecia um tanto abstrato. O Capítulo 2 do livro ["Orientação a Objetos - Aprenda seus conceitos e suas aplicações de forma efetiva"](https://www.casadocodigo.com.br/products/livro-oo-conceitos) aborda o contexto histórico e esclarece a ideia de como sistemas digitais podem simular o mundo real.

Esses dois paradigmas, Programação Orientada a Objetos e Programação Estruturada, revolucionaram o desenvolvimento de software.