Aprenda programação orientada a objetos no dia dos namorados

by Zeh on June 12, 2009

Há algumas semanas atrás, o grande @mjlogan publicou uma frase em sua conta do Twitter que achei genial:

@mjlogan: Gata, pode vir populando que meu array já está inicializado. #pedreiro_geek

Era mais uma – de muitas – cantadas geek que estavam circulando naquele dia no Twitter (e que continuam circulando) com a hashtag #pedreiro_geek (ou #geekpickuplines na versão gringa). Neste caso, bastante voltada pra programação.

Ler isso fez com que uma verdadeira lâmpada se acendesse acima da minha cabeça. Ou seja, estava sem fazer porra nenhuma e pensei, “Caralho, dá pra fazer um monte de cantadas toscas desse tipo relacionadas a programação!“.

Quem me conhece sabe que sou um solteiro convicto, mas a oportunidade me pareceu boa demais pra deixar passar. Sabe aqueles momentos em que a inspiração bate e você não liga muito pras consequências? Então. Foi aí que acabei despejando uma torrente de frases parecidas na minha conta no Twitter, mas todas relacionadas a Object-Oriented Programming, ou OOP (Programação Orientada a Objetos, em português). Quem teve a honra prazer sorte infelicidade de acompanhar os tweets não deve ter entendido muita coisa, porque elas são realmente muito voltadas pro mundo OOP; no máximo, pode ter achado uma ou outra engraçadinha.

Como o search do Twitter não parece funcionar pra coisas muito antigas, não dá mais pra listar tudo que postei através de um simples link. Mas como a data é bastante propícia, decidi postá-las aqui para guardá-las pra posteridade.

No entanto, pro bem da humanidade, e pra ter algum propósito minimamente útil neste artigo, decidi colocar explicações de cada frase junto de cada uma delas. Pra quem não entendeu nada quando as escrevi, pode ser uma oportunidade de entender o quão genial razoável cada uma das frases era; pra quem está aprendendo OOP, pode ser uma oportunidade de sacar alguns conceitos através de exemplos, digamos, pouco ortodoxos; e pra quem já sabe, pode ler sem precisar de muitas explicações, no máximo utilizar as descrições pra ver se acertou, e talvez, quem sabe, achar um pouco de graça.

Seguem abaixo as cantadas oop, na ordem em que foram postadas. A explicação de cada uma delas está escondida; clique na setinha no final de cada frase para ler a explicação correspondente.

Nota: os links que coloquei na explicação, bem como as expressões que usei, são dos conceitos originais em inglês (porque foi assim que aprendi), mas é só clicar no link pra versão em português na página da Wikipedia que se abre pra achar o equivalente em português. Além disso, alguns dos conceitos explicados nas frases do começo não são repetidos mais além, então vale a pena ler na sequência porque as explicações podem parecer meio vagas mais pro final da lista.

Gata, você é uma constante na minha classe estática. Show ▼

Gata, no Singleton do meu coração, você é a instância default. Show ▼

Gata, se meu coração é o Model, você é o Controller e eu sou o View.Show ▼

Gata, não tem Garbage Collection que consiga fazer eu te esquecer. Show ▼

Gata, eu ter esquecido o dia do seu aniversário é culpa de um memory leak. Show ▼

Gata, sua classe é final. Show ▼

Gata, não tem longint grande o suficiente pra dizer o quanto eu gosto de você. Show ▼

Gata, vou extender meu coração só pra fazer um override no toString() pra escrever seu nome nele. Show ▼

Gata, sua classe não tem clone(). Show ▼

Gata, você implementa ILoveYou. Show ▼

Gata, todos os meus overloads têm você como parâmetro. Show ▼

Gata, meu dispose() é disparado automaticamente se sua referência for removida da instância. Show ▼

Gata, me diz qual o método da sua API que retorna seu coração. Show ▼

Gata, sua instância é única. Show ▼

Gata, quero te extender pra classe MyGirl. Show ▼

Gata, vamos fazer um composition que instancia nós dois. Show ▼

Gata, depois que eu terminar com você, vão escrever um capítulo novo sobre você no Gang Of Four. Show ▼

Gata, depois que eu terminar com você, não vai ter refactoring que faça você me esquecer. Show ▼

Gata, o unit testing de minha classe só retorna válido se ele te encontrar. Show ▼

Gata, depois de ser instanciada, deus removeu sua classe do repositório. Show ▼

Gata, não tem encapsulamento que esconda o que eu sinto por você. Show ▼

Gata, não dá setar o que sinto por você pra null. Show ▼

Gata, meu o command pattern tá preso em loveYou(). Show ▼

Gata, minha paixão está em loop infinito. Show ▼

Gata, todas as entradas do meu iterator apontam pra você. Show ▼

Gata, você não tem factory, é base class. Show ▼

Gata, você provocou uma exceção no init() do meu coração. Show ▼

Gata, não tem especificação que explique sua classe. Show ▼

Gata, você conseguiu acessar uma propriedade do meu coração que era protected até eu te conhecer. Show ▼

Gata, depois de te conhecer, deu um lock na instância do meu coração. Show ▼

Gata, não tem pattern que explique o que sinto por você. Show ▼

Gata, meu try é pra dizer o que sinto por você, pra catch seu coração, e finally te conquistar. Show ▼

Gata, quero adicionar um listener em todos os seus eventos. Show ▼

Gata, você é tão única que seu prototype é private. Show ▼

Gata, todos os seus erros são fatais para meu coração. Show ▼

Gata, espero a documentação que me ajude a conquistar seu coração. Show ▼

Gata, universo = universo.replace(/([\.-,;\s]+s|^s)o(l$|l[\.-,;\s])/im, “você”); Show ▼

Nota final: não garanto a eficácia de nenhuma das cantadas listadas acima. Use por sua própria conta e risco.

E, por favor, não leve a sério.