Programação Orientada a Objetos no PHP – Parte 1
Olá galera, hoje vamos começar uma sequência de artigos sobre Programação Orientada a Objetos no PHP, com conceitos e exemplos simples para melhor absolvição e entendimento no desenvolvimento de softwares. Boa leitura!
A Programação Orientada a Objetos (POO), é uma técnica de programação que usa conceitos de Objetos e Classes como elementos centrais para representar e processar dados usados nos programas. Foi criado para tentar aproximar o mundo real do mundo virtual, simulando o mundo real dentro do computador.
Sabemos que a realidade é extremamente complexa, por isso a orientação a objetos tenta gerenciar a complexidade inerente aos problemas deste mundo, abstraindo o conhecimento relevante e o encapsulando.
Na orientação a objetos temos conceitos essenciais como Classe, Objetos/Instâncias, Atributos, Métodos, Herança, Encapsulamento, Associação, Composição, Agregação, Abstração, Polimorfismo e Interface. Esses são alguns dos conceitos essenciais, nesse primeiro artigo de POO. Porém, não falaremos de todos.
Classe e Atributos
Classe é um molde para criação de objetos com características afins, que possuem estado (Atributos) e comportamento (Métodos).
Uma classe é uma abstração das características de um grupo de coisas do mundo real. (Eduardo Bezerra).
Para exemplificarmos, vamos criar nossa primeira classe, através de um molde de TV que tem quatro atributos (estado) que representam as características dessa classe.
Obs.: É recomendado criar um arquivo para cada classe, e sua nomenclatura só pode ter caracteres comuns, ou seja, não pode ter caracteres especiais e recomenda-se iniciar cada palavra com caixa alta.
1 2 3 4 5 6 7 8 9 10 |
<?php class Tv { //Atributos var $tamanho; var $cor; var $ligar; var $volume; } |
Métodos
Agora que já criamos a primeira classe com alguns atributos (características), vamos criar os métodos que são as ações que dão auxílio a estes. Estes Métodos se responsabilizam pelos atributos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php class Tv { //Atributos var $tamanho; var $cor; var $ligar; var $volume; //Métodos function ligado() { if ($this->ligar): echo "<p>TV ligada! Vamos assistir ao jogo do flamengo ;-P</p>"; else: echo "<p>TV desligada</p>"; endif; } function ligarTv() { $this->ligar = true; } function desligarTv() { $this->ligar = false; } function volumeTv(){ echo "Volume em {$this->volume}%.."; } } |
Quando você manipula um atributo, você aloca essa informação na memória, e ele persiste para todos os métodos da classe. A pseudovariável $this está se referenciando aos elementos da classe. Quando passamos um $this dentro da classe estamos nos referindo ao objeto corrente, o objeto que está chamando.
Instaciando Objetos
Depois de criar a classe com seus atributos e métodos, vamos criar o objeto Tv. Observe abaixo, que o operador NEW passa para a variável as características e comportamentos da classe, nesse momento a variável se tornou um objeto e a variável é uma instância dessa classe.
A partir do PHP 5, o modelo de objetos foi rescrito para permitir melhor performance e mais funcionalidades. Esta é uma grande modificação do PHP 4. PHP 5 tem um modelo de objetos completo.
1 2 3 4 5 6 |
<?php //Criando o objeto $tv $tv = new Tv(); ?> |
Criando a Página Index
Vamos usar dois comandos o include_once() e o var_dump(). O include_once() é para incluir a classe Tv no arquivo index.php, ele só inclui uma vez o arquivo, caso não consiga incluir é retornado um Warning (warning é apenas um alerta do PHP e a aplicação não é interrompida quando acontece), já o var_dump() é para mostrar o estado atual do objeto ou como muitos programadores falam “DEBUGAR”.
Segundo Camargo (2009), “a palavra DEBUGAR pode ser usada em uma situação em que precisamos analisar um determinado bloco de programação ou a execução de um programa para localizar possíveis erros ou “bugs” de sistema e também erros de programação”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>Artigo de POO - PHP</title> </head> <body> <?php include_once ("./class/Tv.class.php"); //Criando o objeto $tv $tv = new Tv(); //Acessando os atributos $tv->cor = 'Preta'; $tv->tamanho = 32; $tv->volume = 25; //Acessando os métodos $tv->ligarTv(); $tv->ligado(); $tv->volumeTv(); echo "<hr />"; var_dump($tv); ?> </body> </html> |
Resultados
Depois de ter criado uma instância da classe Tv, observe que acessamos seus atributos e atribuímos valores a cada um, com isso foi dado ao objeto corrente características, e logo depois inicializamos seus métodos, gerando as ações do objeto. Já no final criamos uma reta com o “hr” dentro echo, para separar as ações do objeto do estado atual dele. Agora vamos ver o resultado.
![](https://www.uniaogeek.com.br/wp-content/uploads/2016/08/resultado2.png)
Debug da Class Tv
Observe que foi executado o ECHO que está dentro do método ligado() e o ECHO do volumeTv(), o método ligado() gerou a mensagem “TV ligada!…”, porque antes executamos o método ligarTv(), ele atribui o valor de TRUE ao atributo ligar, caso não tivesse inicializado o método ligarTv() o atributo ligar receberia o valor NULL e dessa forma mostraria a mensagem de “TV desligada.” do método ligado().
Note que senão tivéssemos dado valores aos atributos eles teriam o valor de NULL, porque o comportamento padrão de uma classe quando é instanciado o objeto é que seus atributos tenham o valor de NULL.
Depois dos métodos inicializados mostramos o estado atual do objeto através dovar_dump(), ele nos mostra os atributos, seus valores e tipos (int, string e boolean). Como já citado, é muito útil para DEBUGAR.
Conclusão
O PHP é uma linguagem de programação fracamente tipada, ele não se importa com o tipo de dados contido em uma variável. O programador não se preocupa em dar tipos as variáveis, o próprio PHP faz essa conversão.
Obs.: foi usado ECHO dentro de alguns métodos, porém, esta prática não é aconselhada, recomenda-se utilizar o RETURN. É mais aconselhado usar ECHO só quando for tratamentos de erros, mas para fins didáticos vamos usar em alguns casos.
Chegamos ao fim dessa primeira parte, tomara que vocês tenham gostado e entendido esses conceitos iniciais da POO. Recomendo a leitura e prática constante dos conceitos pois são muito importantes.
Deixo mais uma dica para vocês, através de um exercício muito simples:
- em qualquer lugar que você estiver observe os objetos que estão ao seu redor e comece a procurar as características (atributos) e as ações (métodos) de cada objeto.
Bons estudos e até a próxima!
Fontes
Livros
- DALL’OGLIO, P. PHP Programando com Orientação a Objetos. 1° ed. São Paulo: Novatec, 2007.
- BEZERRA, E. Princípios de Análise e Projeto de Sistemas com UML. Rio de Janeiro: Elsevier, 2002.
Internet
Bacharel em Administração, Técnico em Programação de Jogos Digitais, Tecnólogo em Análise e Desenvolvimento de Sistemas e Pós-graduando em Desenvolvimento de Aplicações para Web. Especialista em Desenvolvimento Web com PHP e MySQL, estudante das tecnologias JAVA, SQL Server, Bootstrap e CakePHP. Apaixonado por Tecnologia.
Olá Bhrandon , estou passando aqui para te agradeçer…
Muito obrigado por essa rica informação! aprendi muito e se tiver mais sobre OO ficaria muito grato se me enviasse .