Diário Code - Uma xícara de café e um bule em cima de uma mesa.

Diário Code

Aprenda JavaScript e PHP

Entenda o básico da Programação Orientada a Objetos

Uma casa bonita com uma mulher descansando deitada na rede da varanda lendo o seu notebook.

A Programação Orientada a Objetos, ou POO, foi criada com o objetivo de tornar a programação mais intuitiva e semelhante ao mundo real. Como assim?

Para entender melhor, pense no seguinte. Uma casa tem vários cômodos e, em cada cômodo, há seus respectivos móveis. Cada móvel tem uma função e até possui outros objetos em cima dele. Uma mesa, por exemplo, normalmente não fica no banheiro e sim na sala. Da mesma forma, uma cama não é colocada na cozinha e sim no quarto.

Na POO, o seu código será como uma casa. A namespace será, por exemplo, sua sala; a classe será como a mesa dessa sala; a altura, largura, peso e cor dessa mesa seriam suas propriedades e atributos; a caneta em cima dessa mesa pode ser uma função, enquanto o papel sobre o qual você irá escrever são os argumentos dessa função.

Por isso, é possível dizer que construir um programa seguindo o modelo de POO é como construir uma casa. O que você também deve entender é que, assim como numa construção, todos os cômodos da casa começam vazios. No início, são só tijolos demarcando o tamanho de cada cômodo. Mas, no final, a casa estará completa para seus visitantes e usuários!

Como usar a Programação Orientada a Objeto

Não importa a linguagem que você utilize, a Programação Orientada a Objetos funcionará seguindo os mesmos passos a seguir.

1. Declarar a namespace

Antes de colocar os móveis da casa, você precisa construir o cômodo. É dentro da namespace que você irá inserir todos os métodos e classes do seu programa.

2. Declarar a classe

Nesse ponto, você deve escolher quais móveis ficarão em seu cômodo. Ao fazer isso, você está também pensando em todas as funções que cada um desses móveis terão, e até checando se todos eles terão características, ou propriedades e atributos, que possam ser usados juntos.

3. Declarar a função especial construct ( )

A função construct ( ) tem o objetivo de construir seu móvel, por assim dizer. Ela fica dentro da classe. É como escolher a cor, altura, peso e número de gavetas de uma mesa.

Nessa função, você irá preencher todas as propriedades da sua classe com os valores necessários para o seu código funcionar corretamente. Daqui a pouco vou mostrar um exemplo que aplica toda essa explicação.

4. Declarar outros métodos necessários

Por fim, você irá declarar qualquer outra função que seja necessária para o funcionamento da classe. Elas são opcionais. Mas, conforme o projeto se torna mais complexo, mais funções se tornam necessárias para manipular a classe e torná-la útil em seu projeto.

Exemplo prático de Programação Orientada a Objeto

Segue abaixo um código de exemplo para você entender melhor como usar melhor a POO. Vou dar o exemplo em PHP:

namespace multimedia ; // declaração da namespace

class image { // declaração da classe
 
 // declaração das 4 propriedades dessa classe
 public string $path ;
 public int $width ;
 public int $height ;
 public int $ratio ;

 // declaração do construtor da classe
 private function __construct ( string $path ) {
  
  $this->path = $path ;
  $this->height = get_height ( ) ;
  $this->width = get_width ( ) ;
  $this->ratio = get_ratio ( ) ;
  
 }

 // declaração de algumas funções da classe
 public function get_width ( ) {
  
  return getimagesize ( $this->path ) [ 0 ] ;
  
 }

 public function get_height ( ) {
  
  return getimagesize ( $this->path ) [ 1 ] ;
  
 }

 public function get_ratio ( ) {
  
  return $this->width / $this->height ;
  
 }

}

Como mostrado no exemplo acima, foi declarada a namespace multimedia com o objetivo de manipular arquivos de mídia, como imagens e vídeos. No momento, apenas a classe image foi declarada. Essa classe permite ter fácil acesso às propriedades de um arquivo de imagem, como altura, largura e proporção, ou ratio. Com essas informações, é possível trabalhar com essa imagem para garantir que ela esteja no tamanho adequado para utilização no projeto.

Agora, veja como ficaria se fôssemos usar essa namespace em alguma parte do código de um projeto:

$imagem = new multimedia\image ( "images/notebook-fechado.jpg" ) ;

echo "A altura da imagem é " . $imagem->height ;
echo "A largura da imagem é " . $imagem->width ;
echo "A proporção da imagem é " . $imagem->ratio ;

Em alguma parte do código, foi necessário obter a altura da imagem para que o usuário do website saiba se essa é a imagem que ele deseja. Como o código acima cumpre esse objetivo?

Para isso, na primeira linha, usamos a palavra-chave new para inicializar um novo objeto image, que é a classe criada anteriormente. Veja na função __construct que ela possui um argumento chamado $path, que é o caminho da imagem. Pode-se dizer que esse argumento é uma exigência dessa classe. Mas, também é possível criar funções __construct sem argumento algum.

Quando o código atinge essa linha de processamento, ele procura se alguma namespace chamada multimedia existe e se a classe image foi declarada dentro dela. Com a palavra-chave new bem ali, ele entende que você quer chamar a função __construct, e é o que ele faz.

Ele então utiliza o argumento do caminho da imagem "images/notebook-fechado.jpg", na função construtora e define os valores das propriedades height, width, path e ratio. Com esses valores definidos sem erros, é possível permitir que o restante do código continue sendo executado.

Na continuação, temos 3 chamadas do comando echo que exibe textos na tela. A primeira escreve a altura da imagem. Para acessar essa propriedade, no PHP utiliza-se o sinal -> (hífen e maior que) seguido do nome da propriedade desejada. Dessa forma, o valor é exibido na tela. O mesmo processo acontece nas outras 3 chamadas.

Observou como a classe é "salva" dentro de uma variável? Ao fazer issso, é como se a variável $imagem fosse do tipo image e só aceitará valores desse tipo. Com isso, há um controle maior do tipo de dados que o programador deve inserir no código, o que evita muitos bugs no projeto.

Conclusão

Este foi apenas um artigo para introduzir você na Programação Orientada a Objetos. Talvez você não tenha compreendido totalmente como utilizá-la e está tudo bem 😊

Acontece que ela foi criada com um objetivo: tornar a programação mais intuitiva. Conforme você amadurecer na programação, você perceberá o quão importante é esse método e aprenderá os momentos em que ele deve ser aplicado para tornar seu projeto mais eficiente.

Espero que tenha gostado dessa explicação! Em artigos futuros, eu trarei mais exemplos e explicações específicas que, aos poucos, tirarão todas as suas dúvidas sobre esse assunto 👌👍.

Aprenda mais com outros artigos relacionados