sábado, 22 de março de 2008

Da série: Aprendendo!

Programando em Rub I - Orientação a Objeto

Tudo no Paradigma de Programação a Orientada a Objetos resume-se em:

  1. Classes
  2. Atributos
  3. Metodos

Na construção de uma Classe, observamos:

  1. Herança
  2. Abstração
  3. Encapsulamento
  4. Polimorfismo

E por fim tudo Acaba em Objeto.

Ou seja, Objetos são Instancias de Classes que forma construídas observado Heranças, Encapsulamento, Polimorfismo e abstração.

Bem! Voce pode estar se perguntando, isso eu ja sabia! Porem vale apena lembrar antes de entrarmos no assunto, pois em alguns momentos esses conseitos serão importantes para esclarecer dúvidas sobre as várias implementações do Paradigma.

Para entendermos melhor vamos analizar a função seguir:

a = 10 + 20

Vamos Ver o que é cada um dos membros dessa função.

“a” - é uma variável

“=” - é um operador

“10″ - é um número

“+” - é um operador

“20″ - é um número

Na primeira olhada na funçao podemos identificar facilmente as partes que a compoem. E bem claro que a função e composta de variáveis, operadores e números.

Bem voltemos então as bases da Orientação a Objetos(no começo do artigo), procure por variáveis, operadores e números. Isso mesmo não existe variáveis, operadores e números, na Orientação a Objetos só existem, Objetos compostos de atributos e metodos.

Vamos rever a função, agora Orientado a Objetos

a = 10 + 20

“a” - é um objeto

“=” - é um método do objeto “a”

“10″ - é um objeto

“+” - é um método do objeto “10″

“20″ - é um objeto

Poderia ser escrito assim:

a.=(10.+(20))

Ou seja, tudo em uma linguagem Orientada a Objetos são objetos.

É assim que Ruby implementa a Orientação a Objetos, tudo que é manipulado em um Programa segue a seguinte ordem, Palavra Reservada, Objeto ou Método, não existe nada além disso.

Isso simplifica muito o aprendizado da linguagem, pois aprendendo as palavras reservadas, o resto é tudo objetos, e quando voce precisa fazer alguma coisa com um objeto basta chamar seus métodos e pronto, simples assim.

Vejamos um exemplo de um objeto em ruby

“eu sou um objeto”

Voce deve estar olhando e vendo que isso é uma String, isso mesmo, e também e um objeto, e tem um monte de métodos

Vamos fazer o texto ficar todo em maiúsculo

“eu sou um objeto”.upcase

“EU SOU UM OBJETO”

Notem, nós chamamos o métodos “upcase” diretamente na String. O Objeto é auto-suficiente, contém todos os métodos pertinentes a sí, isso é muito importante, pois libera a linguagem dessas obrigações.

Vejamos os numeros

10

Isso também é um objeto e tem seus métodos por exemplo, o + é um métodos do objeto 10.

10.+(20)

ou 10 + 20

Um pouco mais de filosofia sobre Orientação a Objetos!

Bem voce deve estar pensando, “bem se o + e um método do objeto 10, eu poderia sobrescreve-lo, e fazer o + realizar qualquer coisa!”, Sim isso mesmo voce pode sobrescrever qualquer método e modifica-lo de acordo com suas necessidade.

Ficaria assim:

class MeuNumero < Fixnum
def +(numero)
42
end
end

numero = MeuNumero.new(1)
# Repare como um operador de soma é um método em ruby, ao contrário de outras linguagens
puts numero+2 # 1+2 = 42 ??? Sim, sobrescrevemos o método de soma para retornar 42 sempre.

Bem mais isso não e perigoso, imagine um método que chama + e que realiza uma divisao, poderia confundir o programador. Isso é verdade, porém da muita flexibilidade, e deixa tudo Orientado a Objetos.

Muitas linguagens como o Java deixam os operadores dentro da própria linguagem e nao como um método do objeto numero, e os númentos também são primitivos e não objetos, com isso se diminui a possibilidade de uso errado das coisas, porém deixa a linguagem muito suja e complexa, pois nao sabe quando deve-se chamar um método ou quando deve-se chamar uma função da linguagem, e também deixa o conseito de Orientação a Objetos errado, por isso que java é PseudoOrientada a Objetos, em alguns pontos ela e totalmente procedural, ou seja:

a = 10 + 20

Isso é totalmente procedural pois:

“10″ - é um número(primitivo)

“+” - é uma função da linguagem java

“20″ - é um número(primitivo)

Essa função em java não é nada orientado a objeto.

Bem essa era a parte filosófoca do nosso artigo, mais era importante saber e relembrar as bases do Conseito de Orientação a Objetos, pois serão muito úteis no aprendizado da linguagem Ruby.

No proximo artigo veremos mais a fundo na Linguagem Ruby (Tipos, Numeros, Strins e Array).

Nenhum comentário: