Vantagens de programar com Orientação a Objetos (OOP)

Aviso importante!

Eu sei que você não quer ver propagandas, porém o conteúdo gratuito só está aqui graças a publicidade. Considere desativar o AdBlock para esse site.

Primeiramente gostaria de deixar o comentário que me "inspirou" a escrever este artigo:

Porque será que mesmo tendo vendo todas as aulas, eu ainda não consegui enfiar na cabeça um "por que" usar OO. Eu sei que todos falam que OO é melhor, mas como eu já disse em outro post, eu faço qualquer coisa no php usando programação extruturada(sem OO), ai vi todas as aulas e entendi direitinho. Mas eu ainda não consegui enfiar na cabeça um "porque" usar OO. Eu ainda estou pensando que se for fazer isso tudo ai sem OO é mais fácil. Deus do céu, eu tenho que enfiar esse OO dentro do meu cérebro, mas ele parece não querer entrar. Parece que minha cabeça esta recusando o OO.

Este comentário foi deixado pelo leitor fcbinfo na aula 15 do curso de PHP Orientado a Objetos, e lendo este relato eu percebi que talvez não tenha conseguido expor muito bem as vantagens e possíveis desvantagens de programar com OO.

Porque as pessoas não percebem vantagem ao estudar OOP?

Isso aconteceu comigo também, quando eu comecei a estudar OO eu pensei "como isso vai me ajudar em algo, se é tudo bem mais complicado do que a programação normal". Foi então que comecei ir atrás de mais conhecimento e também de teorias sobre o assunto, e não demorou muito para eu me empolgar e fazer meu primeiro sistema em OOP.

Foi um sistema simples de login, que eu tinha visto em uma série de aulas em um site, onde o autor levou mais de 2 horas de aula para fazer a codificação. Montei a lógica do sistema em 10 minutos (o mesmo tempo que o autor do curso original) e depois em mais 45 minutos eu tinha o sistema pronto, com as mesmas funcionalidades que o original e em menos da metade do tempo.

Foi neste instante que "caiu a ficha", pois não tinha sido nada complicado, muito pelo contrário, pela primeira vez na minha vida eu tinha achado programação fácil.

Mas o que eu ganho programando em OOP?

Acho que pelo exemplo acima citado já temos uma noção sobre a agilidade que a OO nos oferece, mas vamos fazer uma lista um pouco mais completa, para que todos tenham mais argumentos para analisar:

  • A codificação fica mais próxima do cenário real do problema a ser resolvido: é muito mais simples ter uma classe pessoas que faz o cadastro, atualização, exclusão e busca do que uma função para cada ação necessária.
  • A manutenção futura fica mais simples e rápida: você somente altera as classes que são necessárias, sem precisar ficar procurando funções perdidas em meio aos arquivos para alterar algo.
  • Maior reutilização de código: imagine que você crie uma classe que faça as operações de INSERT, UPDATE e DELETE do banco de dados, e crie uma classe específica para SELECTs, durante todo o restante do sistema você vai estar usando as mesmas classes, pois se bem planejadas eles se tornam muito mais dinâmicas do que uma simples função.
  • Padronização do sistema: criando um sistema em programação procedural, ele fica com o padrão do programador ou da empresa, já em OOP ele fica com o padrão da OOP, ou seja, o sistema será "entendível" para qualquer desenvolvedor futuramente.
  • Segurança: é muito mais difícil burlar um sistema orientado a objetos do que um sistema procedural, uma vez que não basta simplesmente inserir alguma função ou algo do gênero, pois é preciso instanciar objetos para que a "coisa funcione". Ainda existe a possibilidade de definir propriedades e métodos publicos, protegidos ou privados, aumentando ainda mais o nível de segurança.
  • Herança de código: digamos que você tenha uma classe pessoas com as propriedades nome, email e telefone e precise gerenciar pessoas físicas (com CPF) e jurídicas (com CNPJ). Basta criar uma classe física herdando tudo da classe pessoas e adicionando a propriedade CPF, e fazer a mesma coisa para jurídica.

Isso é o principal, mas se for parar para pensar com calma ainda tem como achar algumas outras vantagens. Mas como diz o ditado, "nem tudo na vida são flores" e programar com OO é um pouco mais complexo para iniciantes, pois a curva de aprendizado é um pouco maior do que uma simples programação procedural.

O fato é que uma vez que você desenvolve seu primeiro sistema em OOP você passa a ter uma grande aversão ao sistema procedural, e dificilmente você sentirá saudades!

Sobre o autor

Ricardo Bernardi

Sou técnico em hardware e desenvolvedor web, e sobre estes dois assuntos comecei a compartilhar aulas e artigos, tornando-me blogueiro em 2008. Em 2010 esse hobby virou profissão, e desde então tenho buscado melhorar e profissionalizar cada vez mais os projetos que mantenho na web.

Comentários

Atualmente temos 9 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.

  • Pedro Manuel Armando comentou em

    Sou estudante de engenharia de computação frequentando o II ano , mas até agora não tenho a noção de como um dia devo usar a programação ou seja que finalidade tem a poo ou pop!.......

    Responder
  • Cássio Almeida comentou em

    Ótimo post!

    E este final já diz tudo:

    "O fato é que uma vez que você desenvolve seu primeiro sistema em OOP você passa a ter uma grande aversão ao sistema procedural, e dificilmente você sentirá saudades!"

    Ainda estou me aprofundando a programação OO, mas já realizei um projeto com a base que já tenho e, realmente, não sinto saudades de programar de forma procedural.

    []'s

    Responder
  • walison comentou em

    Na minha opinião o artigo me ajudou bastante a entender a OOP mais ainda, pois quando fiz meu primeiro curso de programação o prof° não explicou muito bem os conceitos de OOP e suas vantagens só deu umas enroladinhas e foi direto para a pratica e assim não consegui entender a vantagem da coisa e nem a desvantagem kkk, com o tempo fazendo pesquisas e assistindo video-aulas que fui entender o sentido da coisa. E OOP deve ser muito bem planejada, pensada para que o sistema tenha complexidade e agilidade nas tarefas em execução. Parabens pelo artigo, com certeza vai ajudar bastante gente com os exemplos mostrados acima, sinceramente eu achei bem claro as explicações vlw.

    Responder
  • Ademir comentou em

    Sim Ricardo, preciso concordar com você, mas te confesso minha ficha ainda não caiu também, seu exenplo do painel foi bem claro, mas muitas coisas feitas ali tem gente que não entende sem ver o exemplo prático, não é simplesmente mandar olhar a documentação do PHP. Se você cobra por um serviço 'Premium', a prestação do serviço deverá ser igual, na minha opinião você as vezes é muito seco nas suas respostas, você tem que entender uma coisa, tem pessoa que não conseguem entender na primeira tacada, se você se propôs a prestar esses tipo de serviço você deve estar preparado para todo tipo de pergunta seja ela obvia ou não pra você.

    Responder
    • Sinceramente não entedi: fiz esse artigo justamente para poder mostrar vantagens de se usar OOP, tentar esclarecer alguns pontos que por ventura não tenham ficado bem explicados.

      Responder

Deixe seu comentário