Começando com Python #3/undefined

July 23rd, 2007 por jeveaux

Continuando a nossa série de posts sobre como aprender Python, vamos agora começar a falar de OO com Python. Para quem não viu os outros posts, pode ler o primeiro post aqui e o segundo aqui.

Não, eu não esqueci de continuar postando sobre python, apenas demorei um pouco na seqüência.

Objetos são a unidade fundamental de qualquer sistema orientado a objetos. Orientação a objetos é um termo que descreve uma série de técnicas e soluções para problemas computacionais. No nosso caso específico, vamos falar apenas de programação Orientada a Objetos, que é um paradigma de programação no qual um programa é estruturado em objetos, e que enfatiza abstração, encapsulamento, polimorfismo e herança. Em Python, tudo é um objeto (tipos, valores, classes, funções, métodos e, é claro, instâncias).

Em Python, a estrutura essencial para definir novos objetos é a classe. As classes são definidas em código-fonte, onde recebem um nome identificador e encapsulam um conjunto de atributos (dados) e métodos (operações). Vejamos a estrutura simples de uma classe em Python:


CODE:
  1. class MinhaClasse:
  2.     atributo1 = valor;
  3.     atributo2 = valor;
  4.     def metodo1(self):
  5.         #faz alguma coisa
  6.     def metodo2(self, atributo1):
  7.         #faz alguma coisa

Vejamos uma classe funcional agora:


CODE:
  1. class HelloWorld:
  2.     'Minha Primeira Classe em Python'
  3.     i = 123
  4.     def funcao(self):
  5.         return 'Hello World!!!'

As classes suportam dois tipos distintos de operações, são elas: instanciação e referência a atributos.

A referência a atributos possui uma sintaxe padrão para os objetos de classses em Python: obj.atributo. Sendo obj o seu objeto classe e atributo algum atributo válido, seja ele um atributo (variável) do seu objeto classe ou um objeto função (operação). Usando a classe acima podemos referenciar HelloWorld.i e HelloWorld.funcao, estas referências serão válidas e retornarão um inteiro (123) e um objeto função, respectivamente.

A instanciação do objeto classe é como nas demais linguagens orientadas a objetos, nós vamos basicamente iniciar um objeto de um determinado tipo (o tipo é o objeto classse) e atribuir a algum atributo. A instanciação (calling) de uma classe, por default, cria um objeto vazio. Por exemplo, para instanciarmos nossa classe de exemplo:


CODE:
  1. x = HelloWorld()

Porém, muitas classes podem precisar criar um novo objeto em um estado inicial pré-determinado. Para estes casos, existe um método especial que pode ser definido pela classe, é o método __init__(), conforme próximo exemplo. O método __init__() é o construtor da classe e poderá ter ou não atributos, isso vai depender das necessidades de cada classe.


CODE:
  1. class HelloWorld:
  2.     'Minha Primeira Classe em Python'
  3.     i = 123
  4.     def __init__(self):
  5.         self.i = 123456
  6.     def funcao(self):
  7.         return 'Hello World!!!'

Agora, após esta alteração em nossa classe, caso ocorra uma referência ao atributo i sem que haja uma instanciação da classe, o valor retornado será 123, mas caso a classe tenha sido instanciada, o valor retornado será 123456.


CODE:
  1. print HelloWorld.i
  2. 123
  3. x= HelloWorld()
  4. print x.i
  5. 123456

"- E aquela String perdida ali no começo da classe?", você já se perguntou isso? Aquela String é chamada de docstring e pode ser acessada através do atributo __doc__, que no nosso caso irá retornar a String "Minha Primeira Classe em Python". As docstring podem ser inseridas no início de funções, classes e métodos, é uma convenção criada para documentação. Esta documentação poderá ser consultada depois usando o pydoc com o comando help. Abaixo acesso direto ao atributo __doc__ da classe.


CODE:
  1. print HelloWorld.__doc__
  2. Minha Primeira Classe em Python

Consulta ao help da classe usando o pydoc.


CODE:
  1. help(HelloWorld)
  2. Help on class HelloWorld in module __main__:class HelloWorld
  3.  |  Minha Primeira Classe em Python
  4.  |
  5.  |  Methods defined here:
  6.  |
  7.  |  __init__(self)
  8.  |
  9.  |  funcao(self)
  10.  |
  11.  |  ----------------------------------------------------------------------
  12.  |  Data and other attributes defined here:
  13.  |
  14.  |  i = 123

Nós poderíamos ter definido mais informações de documentação nesta classe, nos métodos __init__() e funcao por exemplo. Se fosse o caso, basta adicionar os comentários entre aspas ('') na primeira linha de cada método.

Herança, herança múltipla, exceções e definições de escopo de atributos e métodos serão abordados no próximo post, já estou achando esse aqui muito longo, esta continuação já está em draft e sairá mais rápido! :D

Palestra: Web2.0 e Ajax

July 20th, 2007 por jeveaux

Dia 31 de julho vou apresentar um trabalho bem legal: Web2.0 e Ajax. A apresentação irá ocorrer pela SUCESU-ES, na MMurad da Praia do Canto (Vitória-ES) às 19:00h e o investimento para participação é simbólico.Quem estiver aqui em Vitória ou tiver interesse em conhecer um pouco mais sobre Web1.0, Web2.0, Ajax e principalmente que Web2.0 não é Ajax :D compareça, será legal conversar e debater com quem estiver por lá.

Mais informações: Palestra Web2.0 e Ajax.

WTF #001: Windows Update

July 20th, 2007 por jeveaux

Quem não conhece o Worse Than Failure (antigo The Daily WTF)? Se tem uma coisa que eu gosto pra caramba é ler os posts desse blog, são muito bons. E então tive a idéia de criar uma seção no meu blog para os momentos WTF que eu passar, apesar de ser engraçado, espero que eu não tenha muitos motivos pra escrever freqüentemente nesta categoria.

Então começando com mais uma das pérolas que só o Windows pode nos proporcionar. De repente me aparece esse aviso do Windows Update mas como o usuário logado no momento não tinha permissões de administrador da máquina e nem da rede, as minhas opções foram essas: nenhuma!

 

Ohloh

July 13th, 2007 por jeveaux

Um serviço muito legal, uma idéia simples que foi implementada de forma bem interessante. O Ohloh.net é uma comunidade que conecta as pessoas através de seus projetos Open Source. Mais um orkut-like? Pois é, é sim, mas este é interessante, pois pesquisamos, navegamos e encontramos as pessoas através de projetos que já trabalhamos, que já usamos ou que apenas admiramos.

Como o Ohloh funciona? Ele baixa as alterações no repositório do seu projeto (como guest), analisa as alterações, gera métricas e diversas informações úteis sobre o seu projeto e disponibiliza isso em sua comunidade. Com isso, ele te da possibilidades de avaliar projetos (Stacks), associar a sua conta do Ohloh com um determinado usuário num determinado projeto, isso associa com o seu usuário do Ohloh todas as informações do usuário do repositório do projeto, ou seja, quantidade commits, tempo de participação no projeto, quantidade de tecnologias que você conhece e o tempo de experiência com cada uma, com essas informações ele gera métricas importantes sobre o perfil dos desenvolvedores. Você também pode indicar um amigo para se associar com um determinado usuário de um projeto e avaliar também as pessoas, com um sistema de indicações feitas e recebidas chamadas de Kudos. Existe o KudoRanking (tinha que haver algum tipo de competição pra animar as pessoas, ham!?) por enquanto a minha classificação em Kudos é essa:

ohloh profile for jeveaux

Entre e participe você também: www.ohloh.net

JustJava 2007, nos vemos lá

July 10th, 2007 por jeveaux

É isso aí, minha submissão de trabalho para o JustJava 2007 foi aprovada, fiquei sabendo sábado, então agora não tem desculpa, é arrumar as malas e me mandar para São Paulo para atrapalhar a rotina do Paulo e Guilherme Silveira :D (excelentes anfitriões que sempre me acolhem nos eventos)

Bom, a apresentação será sobre: Java Scripting - Linguagens interpretadas pelo Java.

Eu gosto muito do JustJava, ano passado não pude ir, mesmo com o trabalho sobre OpenLaszlo aprovado, tive outros compromissos que me impossibilitaram de participar, mas este ano é certo, estarei lá sim. A melhor parte será o networking com os grandes amigos de fóruns e listas, que diga-se de passagem já está meio atrasado, então, encontrar e discutir com figurinhas como Urubatan, Paulo Silveira, Guilherme Silveira, Shoes, Meyer, DQO, Claudio Miranda, Franklin Samir, Matheus e muitos outros amigos (desculpe quem eu esqueci agora), vai ser bem legal, a tá, terá o evento também. E por favor, quem estiver por lá não deixe de convidar para um happy hour.

FeedBurner Pro Gratuito

July 3rd, 2007 por jeveaux

Logo após a Google adquirir a FeedBurner, como já era de se esperar, o serviço PRO do FeedBurner agora não tem mais custos. Para ativá-lo basta acessar o FeedBurner com a sua conta e nas opções do Feed em questão vá em FeedBurner Stats e selecione a opção Item View, prontinho =). Esta é uma boa para quem quiser acompanhar as estatísicas reais de acesso ao blog/site, inclusive em cada post.
Também foi liberada a MyBrand, que permite ao usuário hospedar e gerenciar as estatísticas do seu feed diretamente em seu servidor. Para solicitar o seu faça através do menu "My Account".