[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