Orientação a objeto, e daí?

Não é tão incomum sugerir algo novo para um programador “orientado a objetos” e escutar alguma variante da velha frase “mas isso não vai de encontro a todas as noções conhecidas de orientação a objetos?”. Pode acontecer ao mostrar linguagens dinâmicas que permitem redefinição de métodos em tempo de execução, ao demonstrar as vantagens das closures ou até ao introduzir interfaces fluentes. Você escolhe.

Não precisamos nem discutir o que diabos é orientação a objetos para notar que o termo está perdendo o sentido mais rápido do que um raio. Nenhum dos exemplos citados parecem ofender o meu conceito de orientação a objeto e também não vejo porque feririam o de ninguém. Para ser sincero, desde quando os objetos tornaram-se tão sagrados que não possam ser subvertidos um pouco de vez em quando? Apesar disso já vi este argumento ser usado em todos os três casos.

O ponto aqui não é que orientação a objetos não sirva para nada. Nem que o purismo deva ser evitado. Na verdade, o purismo pode ser bastante útil como ferramenta intelectual. Duvido, por exemplo, que muitos dos recursos interessantes introduzidos em Haskell surgissem se não houvesse um compromisso com a pureza da linguagem em termos de transparência referencial. O grande problema com a orientação a objeto não é o purismo.

É o sucesso.

Com a popularização na última década da orientação a objeto o termo se disseminou. Isso fez mal para ele porque quanto mais gente conhece um termo fracamente definido, maiores as chances de ser desvirtuado ou simplesmente usado sem sentido nenhum. Parece que orientação a objeto acabou virando argumento contra qualquer coisa e, como geralmente ninguém sabe a que definição o falante está se referindo, não sobram muitos contra-argumentos. Nas poucas vezes que uma discussão mais ou menos civilizada é possível, o resistente acaba não se convencendo de verdade. Seria melhor que as pessoas dissessem que não gostaram da idéia, mas “estou sendo apresentado a esta técnica agora, parece diferente de tudo que já vi, estou com medo e não quero avaliar melhor as alternativas” não parece tão profissional. Sobra para a velha e leal orientação a objetos.

5 Responses to “Orientação a objeto, e daí?”


  1. 1 Fábio Vendramin Guimarães 14/dez/2007 às 12\1258

    Bom dia!
    Só uma dúvida. Vc acha que a OOP não é bem definida? Ou quem usa não conhece?
    Na minha opnião a OOP é bem definida. A OOP define os conceitos, mas não como resolver os problemas da “vida real”.
    Por exemplo, já vi alguns dizer: “Herança multipla não está de acordo com OOP”. Isso não tem nada a ver com OOP. Tem a ver com linguagem. C++ tem herança multipla, Java não. As duas são OOP. É opção da linguagem, não vou a questão.

    Outra:

    public class DAO … {
    }

    public class DAOHibernate {
    private DAO …;
    }

    Ai alguém pode olhar isso é dizer: “Vc deveria ter usado herança, não está de acordo com OOP”.
    Ai eu pergunto, o que isso tem a ver com OOP?
    A classe é minha, eu faço como quiser :) Poderia ter feito com herança. Agora pode ser que com herança seria melhor por isso ou aquilo, mas com composição teriam outras vantagens.
    Na minha opnião a OOP é a forma de pensar, mas não a forma de resolver ;)

    T+

  2. 2 thiagoarrais 14/dez/2007 às 13\0124

    Fábio, é justamente deste tipo de coisa que estou falando. Seu exemplo foi muito bom. Tem gente que assume que herança é uma parte fundamental da orientação a objetos e tem gente que acha que é só um recurso oferecido em algumas plataformas OO. Outros acham que herança deve ser introduzida sempre que possível.

    O negócio acaba se desvirtuando por causa dessas pequenas divergências e o pessoal aproveita mesmo pra usar como argumento coringa.

  3. 3 Thiago Brito 14/dez/2007 às 18\0631

    Eu acho isso infelizmente normal para nós seres humanos (mas não deveria ser normal para os seres humanos da raça “desenvolvedores de software”) de olhar com certo receio coisas novas ou opniões diferentes do que estamos acostumados.

    Porém, “argumentos coringas” temos vários por aí como não fazer TDD, não utilizar aquele Framework usado por milhares de desenvolvedores espalhados pelo mundo e insistir em fazer tudo do zero (pq logicamente ele pensa que a versão dele vai ficar melhor e mais organizada).

    Não adianta, quando o desenvolvedor não tem profissionalismo nem vontade de aprender/fazer o que foi sugerido, ele vai buscar lá no fundo qualquer tipo de desculpa “coringa” para não fazer aquilo que pode acabar salvando algumas noites de sono no futuro.

    Aos outros profissionais, restam apenas bons argumentos para ele entender e seguir o caminho das pedras utilizando as ferramentas certas no momento certo.

  4. 4 Eduardo Fiorezi 16/dez/2007 às 16\0449

    Interessante notar que nos blogs que acompanho tenha tanta opnião forte e fundamentada, como visto no texto e nos comentários aqui.

    Ai me vem a pergunta, “Como as empresas do Brasil conseguem ser tão atrasadas?”

    Difícil acreditar e aceitar.

    Ótimos textos Thiago.

    Abraços

  5. 5 Bruno Carvalho 08/jan/2008 às 15\0359

    Ae Thiago,

    Valeu pela visita ao blog e pelo comentário. Seu blog tá bem legal e vou adicionar aos meus feeds :). Curti o post “Voce nao vai querer um programador Java”. Devo comentar lá minha opinião.

    Um abraço,
    Bruno Carvalho !


Comments are currently closed.




%d blogueiros gostam disto: