Decoradores em Python

decoradores_em_python-1_abertura

Um decorador em Python é um objeto que estende/modifica a funcionalidade de uma função (ou método) em tempo de execução e conceitualmente está mais próximo da anotação do Java que do decorador da orientação a objetos.

Na prática, o decorador age como uma embalagem de presente, acondicionando a função sem alterar seu conteúdo (ele continua sendo um presente) mas deixando-o mais bonito.

Continuar lendo

Anúncios

Orientação a objetos em JavaScript, o básico

javascript_oop1

Mais um “capítulo” da série dos pequenos guias sobre orientação a objetos em linguagens de programação e, desta vez, com a inclusão do Javascript¹. Ela é uma linguagem interpretada com orientação a objetos nativa e criada pela Netscape em 1995 para prover a execução de código no lado do cliente² dentro do navegador web homônimo da empresa.

Mais recentemente, com o advento do Node.js, passou a executar código no lado do servidor também! 🙂

E o mínimo necessário em JavaScript para se trabalhar com objetos é o seguinte…

(¹) Ou melhor ECMAScript que é o nome da especificação, enquanto que JavaScript é sua a implementação mais conhecida, uma outra é o JScript usada pelo Internet Explorer.

(²) Eu sei que dentro do navegador só pode ser do lado do cliente mas é bom dar ênfase ao fato, ok?

Continuar lendo

Orientação a “objetos” em assembly Z80

oop_z80-abertura

Esta ideia surgiu enquanto pensava em formas de implementar o “herói” e as demais “caixas” (ou inimigos) no Survive sem transformar o programa em uma “maçaroca” de código. Mas seria possível utilizar o tal paradigma de orientação a objetos diretamente em assembly E, caso possível, seria prático, funcional ou uma mera curiosidade?

A primeira pergunta foi fácil de responder, me lembrava vagamente de um livro¹ sobre o assunto e numa busca rápida encontrei um artigo da Dr. Dobbs de março de 1990 que me ajudou a visualizar como poderia ser feito e uma (re)leitura da documentação do Pasmo indicou como fazê-lo.

Quanto a funcionalidade, vejamos se consigo ser convincente… 🙂

(¹) Em tempo, o Object-Oriented Assembly Language escrito por Len Dorfman e publicado pela Windcrest em 1990. Foi publicado no Brasil pela Makron Books sob o título de Linguagem Assembler Orientada para Objetos no ano de 1992.

Continuar lendo

Orientação a objetos em Ruby, o básico

ruby_oop

Acreditava já ter escrito isto mas procurei e descobri justamente o contrário. Então, vamos lá. Diferente da versão 5 do Perl e do PHP a linguagem Ruby já foi criada com o paradigma da orientação a objetos implementado o que afeta diretamente a estrutura da linguagem, o modo como trabalhamos com variáveis etc.

E assim, tal qual fiz com Perl (versão 5, ainda não brinquei com rakudo) e PHP, o mínimo necessário para se trabalhar com classes de objetos em Ruby é mais ou menos isto…

Continuar lendo

Um pouco mais de Ruby

Lembram da orientação a objetos em Perl? Lembram do método AUTOLOAD e de eu ter comentado sobre ser específico desta linguagem? Pois é, não é assim tão específico quanto a documentação me fez acreditar. Assim como acontece com o unless, o Ruby também tem algo parecido. Chama-se method_missing e funciona mais ou menos assim:

Claro que é possível fazer a linguagem construir dinamicamente o método ausente utilizando define_method mas daí já é enveredar muito nos caminhos da meta programação.