Programação Orientada a Objetos

Oxe, lá ele. O que é isso?

Programação Orientada a Objetos ou, abreviadamente, POO, é um paradigma de programação de computadores onde se usam classes e objetos, criados a partir de modelos, para representar e processar dados usando programas de computadores.

A POO é baseada em 4 pilares fundamentais: Abstração, Encapsulamento, Herança e Polimorfismo.

Êta diaxo... falou grego!

Óh, modelos são representações simplificadas de objetos, pessoas, items, tarefas, processos, conceitos, ideias, etc. São utilizados comumente por pessoas, independente da programação de computadores.

Um exemplo de modelo poderia ser um daqueles papeizinhos onde o garçom anota seu pedido.

E essa tal de Classe aí?

Meu filho...

Bom, podemos entender Classe como a representação dos modelos que criamos no nosso dia-a-dia.

Ela é uma estrutura que abstrai um conjunto de objetos com características similares. Uma classe define o comportamento de seus objetos através de métodos, e os estados possíveis destes objetos através de atributos.

Para entender o que é atributo e o que é método, imagine que você quisesse abstrair um carro. Todo carro tem cor, modelo, marca, tipo de combustível, tipo ou tamanho das rodas, potência, velocidade máxima, velocidade atual, enfim... esses são os nossos atributos para uma classe carro. Os métodos são as funções que podemos atribuir a cada carro. Sei lá, podemos acelerar um carro, freiar, alterar a cor, alterar as rodas, etc.

SIM, e objeto... ??

Vey, os objetos são cada "carro" que você criar baseado no modelo que a classe "carro" representa. O objeto ou instância é a materialização da classe. Ex: Carro azul, 2006, Ford, a gasolina, rodas aro 22, 533cv, 600 km/h, a 150 km/h.

Agora vem cá, por quê utilizar POO?

Aaah, êis a questão!

Basicamente, você vai querer utilizar POO em aplicações onde seja necessário representar conjuntos de dados dependentes ou interligados entre si (ex: datas, registros de alunos, contas bancárias, etc). Similarmente, qualquer aplicação onde seja necessário empregar um conjunto de rotinas específicas a um conjunto de dados.

Algumas vantagens de programar com orientação a objetos:

Bom... Até aqui, temos os conceitos relacionados ao primeiro pilar (Abstração)!

Quero escrever em PHP... E aí?

Então... Os conceitos fundamentais já foram apresentados, e a sintaxe mais básica, extraída de um aquivo user.php, segue abaixo:

<?php ....class User { ........//Propriedades ........public $name; ........public $email; ........public $password; . ........//Método Construtor ........function __construct() { ............$this->password = '123456'; ........} . ........//Método do objeto ........public function setName($name) { ............$this->name = $name; ........} . ........//Método da classe ........public static function sayHello($name) { ............echo 'Olá, '.$name; ........} ....} ?>

Tá viajando? E esse Construtor aí?

Hehe... Construtores são métodos especiais, que são chamados automaticamente quando objetos são criados. É garantido que o código do construtor vai ser executado antes de qualquer outro código em outros métodos.

Construtores são particularmente úteis para inicializar atributos da classe, garantindo que, quando métodos desses objetos forem chamados, os atributos contenham valores específicos.

E como que eu crio objetos?

É fácil! A sintaxe é a seguinte:

<?php $user = new User(); ?>

E pra usar um método do objeto $user:

<?php $user->setName('JP'); ?>

Tem também os métodos que não estão diretamente ligados ao objeto, os métodos estáticos, ou métodos da classe. Esses você chama assim:

<?php User::sayHello('JP'); ?>

E aí, a introdução a POO é isso aí.

Você pode ver a documentação completa do PHP aqui.

A sequência desse guia é o guia de CRUD. Você já ouviu falar nisso?