[Cascavel-pm] One-Liners com 100% OO (e muito poder)

Nilson Santos Figueiredo Junior acid06 em gmail.com
Terça Setembro 13 16:05:58 PDT 2005


On 9/13/05, marcoantonio.lima em vivo.com.br <marcoantonio.lima em vivo.com.br> wrote:
> Quando se fala em Orientação a Objeto deve se tomar cuidado com o conceito e a implementação, uma linguagem não precisa implementar todos os conceitos de OO para ter suporte a OO,  como vc tb não precisa fazer isso no seu sistema para ser OO. 

Não, mas para se um programa OO uma premissa deve ser válida: seu
programa deve ter objetos. ;-)

> "Note que Java também não é algo puramente OO" 
> Como assim ?? Tudo em Java não é Objeto ?? 

Não. Nem tudo em Java é objeto. Você tem os tipos primitivos que não
são objetos. E muitas das funções de Java não são orientadas a objetos
e sim orientadas a classes (que não são as mesmas coisas, você pode
ter classes sem objetos i.e. módulos).
Além disso, as classes em Java não são first-class objects (assim como
em Perl 5 também não são, ao contrário de Perl 6, Python ou
Javascript).

> perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)' 
> 
> Bom neste exemplo eu estou vendo um objeto CPAN::Shell que é composto de vários métodos como o install que está sendo utilizado no exemplo. 

Não. Você está vendo a classe CPAN::Shell e chamando o class-method "install".
No próprio trecho da documentação que você citou não está escrito a
palavra objeto uma só vez.

Class-methods são simplesmente funções com namespace definido e que
podem utilizar os recursos de herança pois a classe é definida em
run-time. Classes em Perl 5 não são first-class objects.

Class-methods muitas vezes podem atuar sobre objetos, como é feito em
muitas das core classes de Java. IMO, essa abordagem é ruim e os
object-methods deveriam ser privilegiados, já que a proposta de Java é
ser tão OO quanto seja possível. Mas esse não é o lugar dessa
discussão. ;-)

-Nilson Santos F. Jr.


Mais detalhes sobre a lista de discussão Cascavel-pm