Orientação a objetos

Muito se fala em orientação a objetos no mundinho da programação. É a modinha atual. Parece que toda linguagem precisa ter. A famosa linguagem C não tinha. Fazer o que? Meta por cima tudo que precisa para ter orientação a objeto e temos C++. PHP também não tinha. Solução? PHP5 incorporou tudo (e por causa disso é quase uma linguagem distinta das versões anteriores). Qualquer linguagem nova quase sempre apresenta essa facilidade. Até Javascript, que era pra ser bem simplezinha, já tem.

Mas afinal, o que é exatamente orientação a objetos?

Orientação a objetos é um paradigma de programação. Um paradigma de programação é uma forma de pensar na hora de codificar. Em geral, a primeira linguagem que aprendemos são linguagens com o paradigma procedural (como Pascal, C, Ada, Cobol, Fortran, Clipper). Linguagens procedurais são aquelas no qual nosso código é dividido em subrotinas (procedures) ou function (funções). Uma procedure é uma função sem retorno (pode ser visto como uma função que não retorna nada, void). Se você realmente quiser modularizar seu programa, o melhor que você pode fazer é dividi-lo em várias subrotinas/funções, e num nível maior, em várias bibliotecas. Antes da programação estruturada, usava-se nos códigos o recurso do goto, que tornava a maior parte dos programas ilegíveis. Os famosos códigos espaguete.

A programação orientada a objetos é uma outra visão de como programar. Quando for pensar na estrutura e lógica do programa, você não vai pensar apenas em quais váriaveis você vai ter, e quais funções você vai aplicar nelas. Você deverá pensar em quais os objetos que formam seu programa. Você decide o que é o objeto. Num cadastro de uma faculdade, seus objetos podem ser alunos, professores e matérias, por exemplo. Você escolhe quantos objetos terá, de forma que facilite na sua implementação.

Cada objeto seu será uma classe (que você pode pensar como um Record do Pascal ou Struct de C). Entretanto, você não vai apenas declarar quais são as váriaveis que farão parte de sua record (ou Struct). Você dirá também quais são as funções que podem ser aplicadas nesse objeto (essas funções que são declaradas dentro da classe são chamadas de métodos). Seus métodos só poderão ser aplicados nos objetos aos quais eles pertencem.

Ou seja, a partir de agora você não vai dividir seu programa apenas em funções, você vai dividi-lo em objetos (classes pra ser mais específica … um objeto é uma instância de uma classe). Essa pequena mudança parece mínima, e talvez de pouca valia, mas faz muita diferença.

Uma linguagem considerada orientada a objetos também deve proporcionar modificadores de acesso (para facilitar encapsulamento de dados e depuração), herança (facilita a legibilidade do código e facilita o reuso dele). Pode também oferecer sobrecarga, polimorfismo, entre outras facilidades.

Em suma, a principal vantagem é que com orientação a objetos é muito mais fácil organizar o teu programa.

Claro que um programador MUITO organizado pode fazer programas lindos em linguagens procedurais, legíveis e organizados (assim como pode fazer um programa lindo com goto). Mas se um paradigma (no caso, a orientação a objetos) ajudar, melhor. Assim como se um compilador consegue detectar erros em tempo de compilação, melhor. Uma vez aprendida essa “nova” forma de programar, horas de trabalho podem ser economizadas.

Mas veja bem, orientação a objetos, só vai trazer uma vantagem substancial se seu programa não for muito pequeno. Se for muito pequeno, você não conseguirá dividir seu programa em muitas classes, e não conseguirá fazer muito reuso de código. E nesse caso talvez ela aparentemente não pareça útil. Assim como metodologias de engenharia de software como RUP e XP parecem que mais atrapalham do que ajudam para projetos MUITO pequenos.

A título de curiosidade, existem outros paradigmas, não tão populares quanto a procedural e orientado a objetos. Um deles é o paradigma funcional (exemplos são linguagens como Haskell, ML, Ocaml). Outro paradigma é o lógico, e sua linguagem mais famosa é o Prolog. São paradigmas bem mais complexos que a orientação a objetos, e que possuem ainda algumas limitações que não permitiram seu uso em grande escala.

Anúncios

3 comentários sobre “Orientação a objetos

  1. Clap, clap, clap.
    Showww de bola.
    Me lembra muito os materiais da Professora Carolina (ela me deu aula de Paradigmas 🙂 ), em especial este aqui:
    http://anacarol.blog.br/?p=107

    Orientação a Objetos no PHP:
    O que é
    Para que serve
    Como se faz
    Exemplo

    São exemplos como esse seu que ajudam MUITO quem está começando no mundo dos bits.

    Parabéns e continue nos contemplando com textos desse nível!

  2. Obrigada mesmo Sérgio ! Feedbacks como esse que incentivam a continuar o blog, e principalmente, falar mais de computação ao invés das bobagens que eu costumo postar : P

    Por sinal, muito bom o blog da Carol, até assinei o feed.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s