Anda di halaman 1dari 12

Orientao a objetos

Origem: Wikipdia, a enciclopdia livre. Ir para: navegao, pesquisa Este artigo ou se(c)o cita fontes fiveis e independentes, mas elas no cobrem todo o texto.
Por favor, melhore este artigo providenciando mais fontes fiveis e independentes, inserindo-as em notas de rodap ou no corpo do texto, nos locais indicados.
Encontre fontes: Google notcias, livros, acadmico Scirus. Veja como referenciar e citar as fontes.

Orientao a objetos Objeto Classe Instncia Abstrao Mtodos Atributo Encapsulamento Herana

A orientao a objetos um paradigma de anlise, projeto e programao de sistemas de software baseado na composio e interao entre diversas unidades de software chamadas de objetos.

Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programao. De fato, o paradigma "orientao a objeto", tem bases conceituais e origem no campo de estudo da cognio, que influenciou a rea de inteligncia artificial e da lingustica, no campo da abstrao de conceitos do mundo real. Na qualidade de mtodo de modelagem, tida como a melhor estratgia para se eliminar o "gap semntico", dificuldade recorrente no processo de modelar o mundo real do domnio do problema em um conjunto de componentes de software que seja o mais fiel na sua representao deste domnio. Facilitaria a comunicao do profissional modelador e do usurio da rea alvo, na medida em que a correlao da simbologia e conceitos abstratos do mundo real e da ferramenta de modelagem (conceitos, terminologia, smbolos, grafismo e estratgias) fosse a mais bvia, natural e exata possvel.

Herana mltipla Polimorfismo Outras referncias Padres de projeto UML Engenharia OO

Na programao orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definido nos mtodos) e estados possveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. C++, C, VB.NET, Java, Object Pascal, ObjectiveC, Python, SuperCollider, Ruby e Smalltalk so exemplos de linguagens de programao orientadas a objetos. ActionScript, ColdFusion, Javascript, PHP (a partir da verso 4.0),

Perl (a partir da verso 5) e Visual Basic (a partir da verso 4) so exemplos de linguagens de programao com suporte a orientao a objetos.

ndice

1 Conceitos essenciais 2 Bibliografia 3 Referncias 4 Ver tambm 5 Ligaes externas

Conceitos essenciais

Classe representa um conjunto de objetos com caractersticas afins. Uma classe define o comportamento dos objetos atravs de seus mtodos, e quais estados ele capaz de manter atravs de seus atributos. Exemplo de classe: Os seres humanos o Subclasse uma nova classe que herda caractersticas de sua(s) classe(s) ancestral(is) Objeto / instncia de uma classe. Um objeto capaz de armazenar estados atravs de seus atributos e reagir a mensagens enviadas a ele, assim como se relacionar e enviar mensagens a outros objetos. Exemplo de objetos da classe Humanos: Joo, Jos, Maria Atributo so caractersticas de um objeto. Basicamente a estrutura de dados que vai representar a classe. Exemplos: Funcionrio: nome, endereo, telefone, CPF,...; Carro: nome, marca, ano, cor, ; Livro: autor, editora, ano. Por sua vez, os atributos possuem valores. Por exemplo, o atributo cor pode conter o valor azul. O conjunto de valores dos atributos de um determinado objeto chamado de estado Mtodo definem as habilidades dos objetos. Bidu uma instncia da classe Cachorro, portanto tem habilidade para latir, implementada atravs do mtodo deUmLatido. Um mtodo em uma classe apenas uma definio. A ao s ocorre quando o mtodo invocado atravs do objeto, no caso Bidu. Dentro do programa, a utilizao de um mtodo deve afetar apenas um objeto em particular; Todos os cachorros podem latir, mas voc quer que apenas Bidu d o latido. Normalmente, uma classe possui diversos mtodos, que no caso da classe Cachorro poderiam ser sente, coma e morda Mensagem uma chamada a um objeto para invocar um de seus mtodos, ativando um comportamento descrito por sua classe. Tambm pode ser direcionada diretamente a uma classe (atravs de uma invocao a um mtodo esttico) Herana (ou generalizao) o mecanismo pelo qual uma classe (sub-classe) pode estender outra classe (super-classe), aproveitando seus comportamentos (mtodos) e variveis possveis (atributos). Um exemplo de herana: Mamfero super-

classe de Humano. Ou seja, um Humano um mamfero. H herana mltipla quando uma sub-classe possui mais de uma super-classe. Essa relao normalmente chamada de relao " um"

Associao o mecanismo pelo qual um objeto utiliza os recursos de outro. Pode tratar-se de uma associao simples "usa um" ou de um acoplamento "parte de". Por exemplo: Um humano usa um telefone. A tecla "1" parte de um telefone Encapsulamento consiste na separao de aspectos internos e externos de um objeto. Este mecanismo utilizado amplamente para impedir o acesso direto ao estado de um objeto (seus atributos), disponibilizando externamente apenas os mtodos que alteram estes estados. Exemplo: voc no precisa conhecer os detalhes dos circuitos de um telefone para utiliz-lo. A carcaa do telefone encapsula esses detalhes, provendo a voc uma interface mais amigvel (os botes, o monofone e os sinais de tom) Abstrao a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando caractersticas menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe uma abstrao de entidades existentes no domnio do sistema de software Polimorfismo consiste em quatro propriedades que a linguagem pode ter (atente para o fato de que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo): o Universal: Incluso: um ponteiro para classe me pode apontar para uma instncia de uma classe filha (exemplo em Java: "List lista = new LinkedList();" (tipo de polimorfismo mais bsico que existe) Paramtrico: se restringe ao uso de templates (C++, por exemplo) e generics (Java/C) o Ad-Hoc: Sobrecarga: duas funes/mtodos com o mesmo nome mas assinaturas diferentes Coero: a linguagem que faz as converses implicitamente (como por exemplo atribuir um int a um float em C++, isto aceito mesmo sendo tipos diferentes pois a converso feita implicitamente) Interface um contrato entre a classe e o mundo externo. Quando uma classe implementa uma interface, ela est comprometida a fornecer o comportamento publicado pela interface[1] Pacotes (ou Namespaces) so referncias para organizao lgica de classes e interfaces[1]

Bibliografia

Carlos Sica. PHP Orientado a Objetos - Fale a Linguagem da Internet. 1 ed. Rio de Janeiro: Cincia Moderna, 2006.

Pablo Dall'Oglio. PHP Programando com Orientao a Objetos: Inclui Design Patterns. 1 ed. So Paulo: Novatec, 2007. 576 p. ISBN 978-85-7522-137-2

Referncias
1. a b Lesson: Object-Oriented Programming Concepts (em ingls). Oracle Corporation. Pgina visitada em 20 de novembro de 2010.

Ver tambm
Outros projetos Wikimedia tambm contm material sobre este tema: Livros e manuais no Wikilivros

Padres de projeto de software Framework Classe Arquitetura de dados Administrao de dados Modelagem de dados

Ligaes externas

rogramao Orientada a Objetos: uma introduo


Criado 29/out/2007 s 10h14 por Marcio Frayze David 83

Introduo
Um breve relato da histria da Programao Orientada a Objetos
O termo Programao Orientada a Objetos foi criado por Alan Kay, autor da linguagem de programao Smalltalk. Mas mesmo antes da criao do Smalltalk, algumas das ideias da POO j eram aplicadas, sendo que a primeira linguagem a realmente utilizar estas idias foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967. Note que este paradigma de programao j bastante antigo, mas s agora vem sendo aceito realmente nas grandes empresas de desenvolvimento de Software. Alguns exemplos de linguagens modernas utilizadas por grandes empresas em todo o mundo que adotaram essas idias: Java, C#, C++, Object Pascal (Delphi), Ruby, Python, Lisp, ... A maioria delas adota as idias parcialmente, dando espao para o antigo modelo procedural de programao, como acontece no C++ por exemplo, onde temos a

possibilidade de usar POO, mas a linguagem no fora o programador a adotar este paradigma de programao, sendo ainda possvel programar da forma procedural tradicional. Este tipo de linguagem segue a idia de utilizar uma linguagem previamente existente como base e adicionar novas funcionalidades a ela. Outras so mais "puras", sendo construidas do zero focando-se sempre nas idias por trs da orientao a objetos como o caso das linguagens Smalltalk, Self e IO, onde TUDO orientado a objetos.

Idias bsicas da POO


A POO foi criada para tentar aproximar o mundo real do mundo virtual: a idia fundamental tentar simular o mundo real dentro do computador. Para isso, nada mais natural do que utilizar Objetos, afinal, nosso mundo composto de objetos, certo?! Na POO o programador responsvel por moldar o mundo dos objetos, e explicar para estes objetos como eles devem interagir entre si. Os objetos "conversam" uns com os outros atravs do envio de mensagens, e o papel principal do programador especificar quais sero as mensagens que cada objeto pode receber, e tambm qual a ao que aquele objeto deve realizar ao receber aquela mensagem em especfico. Uma mensagem um pequeno texto que os objetos conseguem entender e, por questes tcnicas, no pode conter espaos. Junto com algumas dessas mensagens ainda possvel passar algumas informaes para o objeto (parmetros), dessa forma, dois objetos conseguem trocar informaes entre si facilmente. Ficou confuso? Vamos a um exemplo prtico: imagine que voc est desenvolvendo um software para uma locadora e esta locadora tem diversos clientes. Como estamos tentando modelar um sistema baseado no sistema real, nada mais obvio do que existirem objetos do tipo Clientes dentro do nosso programa, e esses Clientes dentro do nosso programa nada mais sero do que objetos que "simulam" as caractersticas e aes no mundo virtual que um cliente pode realizar no mundo real. Vamos apresentar exemplo mais detalhadamente mais para frente, mas antes precisamos especificar mais alguns conceitos.

O que uma Classe, Atributo e Mtodo? E pra que serve o Construtor?


Uma classe uma abstrao que define um tipo de objeto e o que objetos deste determinado tipo tem dentro deles (seus atributos) e tambm define que tipo de aes esse tipo de objeto capaz de realizar (mtodos). normal no entender isso logo de cara, mas os conceitos de classes e subclasses so relativamente simples: Tente pensar no conceito de Classes utilizado na Biologia: um animal uma classe, e tem suas caractersticas: um ser vivo capaz de pensar, precisa se alimentar para viver, etc, etc. O Ser Humano uma sub-classe dos animais. Ele tem todas as caractersticas de um animal, mas tambm tem algumas peculiaridades suas, no encontradas nas outras sub-classes de animais. Os pssaros tambm so animais, mas possuem caractersticas prprias.

Note que uma Classe no tem vida, s um conceito. Mas os Objetos (animais, serem humanos, pssaros, etc) possuem vida. O seu cachorro rex um Objeto (ou instncia) da classe Cachorro. A classe Cachorro no pode latir, no pode fazer xixi no poste, ela apenas especifica e define o que um cachorro. Mas Objetos do tipo Cachorro, estes sim podem latir, enterrar ossos, ter um nome prprio, etc. A criao de uma nova Classe dividida em duas partes: os seus atributos e os seus mtodos. Os atributos so variveis que estaro dentro de cada um dos objetos desta classe, e podem ser de qualquer tipo. Por exemplo, a classe Cachorro poder ter o atributo nome que ser do tipo String. Assim, cada Objeto desta classe ter uma varivel prpria chamada nome, que poder ter um valor qualquer (Rex, Frodo, Atila, ...). Mtodos sero as aes que a Classe poder realizar. Quando um objeto desta classe receber uma mensagem de algum outro objeto contendo o nome de um mtodo, a ao correspondente a este mtodo ser executada. Por exemplo, caso um objeto da classe Dono envie uma mensagem para um objeto do tipo Cachorro falando "sente", o cachorro ir interpretar esta mensagem e conseqentemente ir executar todas as instrues que foram especificadas na classe Cachorro dentro do mtodo sente. Um construtor tem uma funo especial: ele serve para inicializar os atributos e executado automaticamente sempre que voc cria um novo objeto. Quando voc especifica os atributos de uma classe, voc apenas diz ao sistema algo como "objetos desta classe Pessoa vo ter uma varivel chamada Nome que do tipo String, uma varivel chamada idade que do tipo inteiro, etc, etc". Mas estas variveis no so criadas, elas s sero criadas no construtor. O construtor tambm pode receber parmetro, desta forma, voc pode passar para o construtor uma String contendo o nome da Pessoa que voc est criando, sua idade, etc. Normalmente, a sintaxe algo parecido com isto: Pessoa joao := new Pessoa( "Joo", 13 ); Este cdigo gera um novo objeto chamado joao que do tipo Pessoa e contem os valores "Joo" como nome e 13 como idade. Caso voc tenha entendido o texto acima, voc entendeu 99% do que esta por trs da orientao a objetos. O mais importante entender como funciona a comunicao entre os objetos, que sempre segue o seguinte fluxo: -Um objeto A envia uma mensagem para o objeto B. -Objeto B verifica qual foi a mensagem que recebeu e executa sua ao correspondente. Esta ao est descrita no mtodo que corresponde a mensagem recebida, e est dentro da Classe a qual este objeto pertence.

Exemplo
Voltando ao exemplo da locadora: Voc est desenvolvendo um software para uma locadora. Esta locadora ter diversos clientes. Podermos ento criar uma classe explicando para o computador o que um Cliente: para isso precisaramos criar uma classe chamada Cliente, e com as seguintes caractersticas (atributos):

Nome Data de Nascimento Profisso

Mas um cliente mais do que simples dados. Ele pode realizar aes! E no mundo da POO, aes so descritas atravs da criao de mtodos. Dessa forma, objetos da nossa classe Cliente poder por exemplo executar as seguintes aes (mtodos):

AlugarFilme DevolverFilme ReservarFilme

Note o tempo verbal empregado ao descrever os mtodos. Fica fcil perceber que trata-se de aes que um Cliente pode realizar. muito importante perceber as diferenas entre Atributo e Mtodo. No comeo normal ficar um pouco confuso, mas tenha sempre em mente:

Atributos so dados. Mtodos descrevem possveis aes que os objetos so capazes de realizar.

Assim, nosso sistema pode ter vrios Objetos do tipo Cliente. Cada um destes objetos possuir seu prprio nome, data de nascimento e profisso, e todos eles podero realizar as mesmas aes (AlugarFilme, RevolverFilme ou ReservarFilme).

Herana
Voltando a idia das classes na Biologia: um ser humano um animal. Ele tem todas as caractersticas (atributos) e pode realizar todas as aes (mtodos) de um animal. Mas alm disso, ele tem algumas caractersticas e aes que s ele pode realizar. Em momentos como este, utilizado a herana. Uma classe pode estender todas as caractersticas de outra e adicionar algumas coisas a mais. Desta forma, a classe SerHumano ser uma especializao (ou subclasse) da classe Animal. A classe Animal seria a classe pai da serHumano, e logicamente, a classe SerHumano seria a classe filha da Animal. Uma classe pode sempre ter vrios filhos, mas normalmente as linguagens de programao orientadas a objetos exigem que cada classe filha tenha apenas uma classe pai. A linguagem C++ permite que uma classe herde as caractersticas de varias classes (herana mltipla), mas C++ no um bom exemplo quando se est falando sobre conceitos de POO. Um exemplo um pouco mais prximo da nossa realidade: vamos supor que estamos desenvolvendo um sistema para um banco. Nosso banco possui clientes que so pessoas fsicas e pessoas jurdicas. Poderiamos criar uma classe chamada Pessoa com os seguintes atributos:

Nome Idade

Em seguida, criamos 2 classes que so filhas da classe Pessoa, chamadas PessoaFisica e PessoaJuridica. Tanto a classe PessoaFisia como a PessoaJuridica herdariam os atributos da classe Pessoa, mas poderiam ter alguns atributos a mais. A classe PessoaFisica pode ter por exemplo o atributo RG enquanto a classe PessoaJuridica poderia ter o atributo CNPJ. Dessa forma, todos os objeto da classe PessoaFisica ter como atributos:

Nome Idade RG

E todos os objetos da classe PessoaJuridica tero os seguintes atributos:


Nome Idade CNPJ

Os mtodos so anlogos: poderamos criar alguns mtodos na classe Pessoa e criar mais alguns mtodos nas classes PessoaJuridica e PessoaFisica. No final, todos os objetos teriam os mtodos especificados na classe Pessoa, mas s os objetos do tipo PessoaJuridica teriam os mtodos especificados dentro da classe PessoaJuridica, e objetos do tipo PessoaFisica teriam os mtodos especificados na classe PessoaFisica.

Polimorfismo
Um dos conceitos mais complicados de se entender, e tambm um dos mais importantes, o Polimorfismo. O termo polimorfismo originrio do grego e significa "muitas formas". Na orientao a objetos, isso significa que um mesmo tipo de objeto, sob certas condies, pode realizar aes diferentes ao receber uma mesma mensagem. Ou seja, apenas olhando o cdigo fonte no sabemos exatamente qual ser a ao tomada pelo sistema, sendo que o prprio sistema quem decide qual mtodo ser executado, dependendo do contexto durante a execuo do programa. Desta forma, a mensagem "fale" enviada a um objeto da classe Animal pode ser interpretada de formas diferentes, dependendo do objeto em questo. Para que isto ocorra, preciso que duas condies sejam satisfeitas: exista herana de uma classe abstrata e casting (outras situaes tambm podem resultar em polimorfismo, mas vamos nos centrar neste caso). Herana nos j definimos previamente, mas o que uma classe abstrata? E o que esse tal de casting?

Uma classe abstrata uma classe que representa uma coleo de caractersticas presentes em vrios tipos de objetos, mas que no existe e no pode existir isoladamente. Por exemplo, podemos criar uma classe abstrata chamada Animal. Um Animal tem diversas caractersticas (atributos) e podem realizar diversas aes (mtodos) mas no existe a possibilidade de criarmos objetos do tipo Animal. O que existem so objetos das classes Cachorro, Gato, Papagaio, etc. Essas classes, estendem a classe Animal herdando todas as suas caractersticas, e adicionando algumas coisas a mais. "Animal" s uma entidade abstrata, apenas um conjunto de caractersticas em comum, nada mais. Voc pode olhar para um objeto da classe Cachorro e falar "isto um animal, pois estende a classe Animal", mas voc nunca vai ver um objeto que seja apenas da classe Animal, pois isso no existe! como eu olhar para voc e falar "voc um objeto da classe SerVivo". Essa afirmao est correta, mas voc na verdade um objeto da classe SerHumano, que por sua vez herda todas as caractersticas da classe SerVivo (que por sua vez uma classe abstrata, j que no podemos criar algo que seja apenas classificado como "SerVivo", sempre vamos classifica-lo de forma menos genrica). Resumindo: uma classe abstrata um conjunto de informaes a respeito de uma coleo de outras classes. Uma classe abstrata sozinha completamente intil, j que no podemos instanciar um objeto desta classe, podemos apenas instanciar objetos de classes que estendem a classe abstrata inicial. Ela serve apenas para simplificar o sistema, juntando em um nico lugar diversas caractersticas que so comuns a um grupo de classes. Nunca esquea disso: voc nunca vai poder criar um objeto do tipo de uma classe abstrata. Sempre crie objetos das classes que estendem esta classe abstrata. J o termo casting utilizado quando nos foramos o sistema a ver um certo objeto como sendo de um determinado tipo que no o seu tipo original. Supondo que temos a situao a seguir:

Essa uma representao na notao UML (Unified Modeling Language) que nos informa que existe a definio de trs classes em nosso sistema: existe a classe abstrata Animal (note que ela est em itlico, isso significa na notao UML que trata-se de uma classe abstrata) e existem tambm outras duas classes chamadas Cachorro e Gato, que so filhas da classe Animal. Ou seja, todo objeto das classes Cachorro e Gato vo ter todas as caractersticas (atributos e mtodos) presentes na classe Animal, e mais algumas caractersticas prprias.

Imagine que vamos criar um sistema de cadastro de animais. Vamos, por questes didticas, supor que todos os animais de nosso sistema fiquem armazenados em um array. Ento existiria um array contendo objetos dos tipos Gato e do tipo Cachorro. Mas armazenar diversos tipos diferentes de objetos em um nico array no uma boa idia, pois depois, para extrair essas informaes de volta bastante complicado. Mas pare e pense por um instante: objetos do tipo Cachorro e objetos do tipo Gato so tambm objetos do tipo Animal, correto? Bom, ento podemos criar um array capaz de armazenar Animais! Assim nossa vida fica bem mais fcil, bastando atribuir ao array os objetos (do tipo Cachorro e Gato - que estendem a classe Animal) que queremos guardar. Em forma algortmica, seria mais ou menos: Animal[] listaDeAnimais = new Animal[100]; // Criamos um array com 100 posies que armazena objetos do tipo Animal. listaDeAnimais[0] = new Cachorro("Frodo"); // Criamos um novo objeto do tipo Cachorro com o nome Frodo e armazenamos no array listaDeAnimais[1] = new Gato("Alan"); // Criamos um novo objeto do tipo Gato com o nome Alan e armazenamos no array ....... Certo! Agora temos um array com vrios objetos do tipo Animal. Agora vamos fazer um looping por todos esses objetos, enviando para cada um deles a mensagem "fale". O que iria acontecer? Inicialmente, vamos supor que a classe abstrata Animal possui o mtodo "fale", e que ele seja implementado (de forma algortmica) da seguinte forma:
Classe Animal { mtodo fale() { imprimaNaTela(" Eu sou mudo! "); } }

Desta forma, todo objeto que de alguma classe que estenda a classe Animal vai ter automaticamente o mtodo "fale", e isso inclui todos os objetos das classes Cachorro e Gato. Mas todos eles, atualmente, ao receber a mensagem "fale" vo responder imprimindo na tela a mensagem "Eu sou mudo!". Mas Gatos e Cachorros podem falar! O que podemos fazer sobreescrever o mtodo fale para cada uma das classes, substituindo ento seu contedo pelo comportamento que queremos que cada subclasse tenha. Por exemplo, poderamos escrever na classe Gato do seguinte mtodo:
Classe Gato { Mtodo fale() { imprimaNaTela(" Miaaaaaauuuuuu! "); } }

Para a classe Cachorro, poderamos fazer de forma semelhante:

Classe Cachorro { Mtodo fale() { imprimaNaTela(" Au au au! "); } }

Agora, se fizermos um looping entre todos os objetos contidos em nosso array criado anteriormente enviando para cada objeto a mensagem "fale", cada um deles ir ter um comportamento diferente, dependendo se um Cachorro ou um Gato. Nosso looping entre todos os animais cadastrado no nosso sistema seria mais ou menos assim:
int cont; para cont de 0 a 100 faa { listaDeAnimais[cont].fale(); }

Isto polimorfismo! Uma mesma mensagem enviada para diferentes objetos da mesma classe (Animal) e o resultado pode ser diferente, para cada caso. :-)

Vantagens da POO

Os sistemas, em geral, possuem uma diviso de cdigo um pouco mais lgica e melhor encapsulada do que a empregada nos sistemas no orientados a objetos. Isto torna a manuteno e extenso do cdigo mais fcil e com menos riscos de insero de bugs. Tambm mais fcil reaproveitar o cdigo. mais fcil gerenciar o desenvolvimento deste tipo de software quando temos uma equipe grande. Podemos fazer uma especificao UML antes de iniciar o desenvolvimento do software em si, e em seguida dividirmos o sistema em classes e pacotes, e cada membro da equipe pode ficar responsvel por desenvolver uma parte do sistema.

Desvantagens da POO

Na minha opinio, o aprendizado do paradigma de programao orientada a objetos bem mais complicado no incio do que os velhos sistemas procedurais. Para comear a programar necessrio ter estabelecido uma srie de conceitos bastante complexos. J na programao procedural tradicional, basta decorar meia dzia de comandos e voc j consegue fazer um programa simples. Dificilmente uma linguagem orientada a objetos conseguir ter um desempenho em tempo de execuo superior a linguagens no orientadas a objetos.

Concluses
Espero que com este texto voc tenha ao menos entendido o bsico da orientao a objetos. No se preocupe caso voc tenha "viajado" em algumas partes do texto, perfeitamente normal. Agora siga em frente, continue estudando e leia um bom livro sobre a linguagem de programao que quer aprender. Caso esteja dando seus primeiros passos no mundo orientado a objetos, um bom comeo pode ser a linguagem Ruby. Ela uma linguagem interpretada e bastante fcil de aprender, e ainda assim, possui um bom

sistema de orientao a objetos, sendo um timo ambiente para comear. Alm disso, Ruby uma linguagens que vem crescendo bastante no mercado, sendo que tem se destacado bastante no desenvolvimento de softwares para web, substituindo linguagens como como PHP, Perl e Java.
'Orientacao a objetos bem legal! :) At a prxima!' out.

Marcio Frayze David formado em Cincia da Computao pela PUC-SP e trabalha com desenvolvimento de softwares utilizando Java (J2SE, J2ME e J2EE) e Smalltalk. Ele tambm membro do grupo Insaners, que desenvolve jogos open-source para Windows, Linux e celulares. Nas horas vagas gosta de sair com sua namorada e tocar bateria. Pode ser contactado atravs do email "mfdavid em gmail.com" ou em seu blog. 83 comentriosPor Marcio Frayze David. Revisado 22/fev/2011 s 14h56