Você está na página 1de 18

APLICAO PRTICA DO PARADIGMA DE ORIENTAO A OBJETOS NA PROGRAMAO PARA WEB UTILIZANDO LINGUAGEM JAVA

Natasha Sophie Pereira1

RESUMO

O paradigma da Orientao a Objetos surgiu com o intuito de tornar a prtica de programao de sistemas uma atividade mais prxima da realidade. Usando este paradigma, diversos problemas referentes manuteno, ao reuso de cdigo, e at mesmo expanso de sistemas poderiam ser evitados. Porm, a maior parte dos programadores no o emprega da maneira correta. Para apresentar as reais vantagens do uso deste paradigma, prope-se a linguagem de programao Java, que robusta e completamente baseada neste paradigma. O avano da tecnologia, somado globalizao, tornou estrondosa a popularidade da internet, o que impulsionou a necessidade de adaptar as prticas de programao para este novo mundo. A aplicao da linguagem Java juntamente com o paradigma da Orientao a Objetos exibe um modelo perfeito para a programao de sistemas voltados para a web. Palavras-Chave: Paradigma, Orientao a Objetos, Linguagem de Programao Java, Programao de sistemas voltados para Web.

Centro Universitrio de Anpolis UniEVANGLICA Professora da Disciplina Programao Orientada a Objetos E-Mail: natasha.sophie@gmail.com

Introduo
Inmeras tcnicas de programao e paradigmas so lanados no mercado constantemente, sempre com o objetivo de trazerem melhorias para os sistemas computacionais. A cada perodo, novas necessidades surgem e conceitos vm em conjunto para san-las da melhor maneira. Os conceitos da Orientao a Objetos datam de 1966. Entretanto, s comearam a ser realmente divulgados com o advento da Internet, da computao distribuda, da escalabilidade e da procura constante por performance. Essas evolues aconteceram por volta de 1995. Nessa mesma poca, surgiram a linguagem e plataforma Java, para facilitar a compreenso e emprego desse paradigma. (ANSELMO, 2005) Muito se fala sobre Orientao a Objetos e a cada dia, novos conceitos surgem para facilitar seu entendimento. Por definio, o paradigma de Orientao a Objetos procura abordar a resoluo de um problema atravs de uma construo que represente da melhor forma possvel, como as coisas acontecem no mundo real. (BORATTI, 2007, p. 13). Pode-se traduzir o mundo real como um aglomerado de entidades que interagem entre si, sendo que entidades so tudo aquilo que possua existncia independente, caractersticas e funo no mundo real, ou seja, uma entidade um objeto. Mesmo com todas as facilidades apresentadas por este paradigma, e todas as vantagens em desempenho e manuteno, uma grande parte dos programadores no emprega de forma satisfatria estes conceitos; alguns por falta de conhecimento do paradigma em si, outros por ms prticas, ou tambm pela iluso de se adiantar todo o trabalho da programao. Atualmente, os consumidores de software esto cada vez mais imediatistas. Esse fator pressiona os programadores a deixarem de lado alguns conceitos da Orientao a Objetos, abandonando, portanto, todos os benefcios que seu uso correto propicia a um sistema. Como exemplo, citam-se a manuteno mais rpida e eficiente, a integrao de novos mdulos sem prejuzos para outras partes do sistema, alm da produo de um cdigo muito mais organizado que pode ser entendido por qualquer outra pessoa que nunca teve um contato prvio com o mesmo. Nesse artigo, pretende-se apresentar os principais motivos que fazem com que os conceitos da Orientao a Objetos no sejam empregados em sua totalidade na programao web com Java, alm de elucidar os benefcios que o uso correto desse paradigma traz.

O CONCEITO DO PARADIGMA DE ORIENTAO A OBJETOS


Com base no livro OOP Desmistificado, de Jim Keogh e Mario Giannini (2005), sero apresentados alguns pontos relevantes sobre o que o paradigma de orientao a objetos em sua essncia. Os objetos do mundo real possuem duas caractersticas bsicas: os atributos que so seus aspectos, e os comportamentos que so as aes que eles podem realizar. A partir da pode-se identificar dois tipos diferentes de objetos: os abstratos e os reais. Objetos abstratos so modelos para a criao de objetos reais, onde os descrevem omitindo seus detalhes. Por exemplo, uma pessoa abstrata possui atributos como altura, peso e cor dos olhos, j uma pessoa real tem altura 1,80m, peso 80kg e olhos de cor verde. Pensando assim, os objetos reais podem ser definidos como instncias de objetos abstratos. Ao falar de objetos, o intuito sempre facilitar a compreenso de coisas mais complexas, visto que eles permitem focar nos detalhes relevantes para a resoluo do problema em questo, deixando de lado os detalhes irrelevantes naquele momento. Uma caracterstica importante, quando se trata de programao orientada a objetos, a herana. Esse conceito permite que um objeto receba atributos e comportamentos de outros objetos; dessa forma, no existe a necessidade de repetir caractersticas comuns em cada objeto que necessite us-la. Isso facilita em muito a manuteno futura do cdigo, por exemplo, na insero de uma caracterstica comum um grupo de objetos da aplicao no necessrio que ela seja implantada em cada um deles, mas apenas no objeto de onde os demais herdam a nova caracterstica, podendo ainda ser utilizada por todos (reuso de cdigo). Programas antigos possuam uma srie de instrues que deveriam ser executadas em seqncia para que um computador executasse uma tarefa. Com o benefcio da automatizao dos processos empresariais, surgiu a necessidade de que programas de computador controlassem tambm operaes comerciais. Isso fez com que os programas ficassem maiores e mais complexos, e, conseqentemente com alto custo, demandando um tempo maior para manuteno e quase impossveis de se administrar. Surgiu, ento, a programao procedural que organiza em grupos as instrues que realizam uma tarefa especfica, ou procedimento. Esse conceito simplificou muito a programao, pois organizou o cdigo, permitindo que seus elementos complexos fossem analisados rapidamente, principalmente na localizao um procedimento a ser atualizado. Outro benefcio desse conceito foi a possibilidade de reutilizao de cdigo, onde procedimentos escritos em uma linguagem poderiam ser utilizados em aplicativos que

exigiam procedimentos similares, o que resultou em programas mais confiveis, visto que os procedimentos, ao serem reaproveitados, j haviam sido testados nos aplicativos de onde eram nativos. Mesmo com tantas vantagens, ainda remanescia um problema que a programao procedural no poderia resolver conceitualmente. Cada vez que um programa era criado, tentava-se recriar o mundo real, porm, essa reproduo nunca era fiel realidade, pois o mundo real no organizado em procedimentos, mas sim em objetos. A soluo para este problema foi a programao orientada a objetos que utiliza a definio de classes. Uma classe pode ser vista como o molde para a criao de objetos. O ato de instanciar uma classe gera um objeto que possui todas as caractersticas definidas nela (atributos e mtodos). Sendo assim, pode-se dizer que uma classe d origem a diversos objetos com valores particulares para seus atributos, e um objeto a instncia de uma nica classe. Ao declarar uma classe, estipulam-se todas as variveis, chamadas de atributos, nomeando-as, definindo seu tamanho e tipo, para que o computador saiba quanto de memria reservar e como tratar os dados armazenados. Tambm so definidos dentro da classe, os mtodos, ou comportamentos, que os objetos acessaro sempre que o programa necessitar executar tal ao. Alguns mtodos so executados sem a necessidade de dados externos. Outros j exigem que dados sejam informados para que sua execuo ocorra, chama-se esse envio de informao de passagem de parmetros. Tais parmetros sero utilizados pelo mtodo durante a execuo de alguma das instrues que ele contiver. As instrues no corpo do mtodo so executadas de forma seqencial, at que o seu final seja atingido ou uma instruo de retorno seja encontrada. Ao fato de uma classe agrupar uma srie de atributos e mtodos que se relacionam, d-se o conceito de encapsulamento. Na programao procedural, procedimentos e atributos no so associados, podendo ser acessados por qualquer parte do aplicativo, sem restries. J nas linguagens orientadas a objetos, esse agrupamento pode, e deve ser feito, tornando esses mtodos acessveis de acordo com a necessidade apresentada. Segundo Fernando Anselmo (2005), encapsulamento a arte de ocultar o funcionamento de uma classe, disponibilizando apenas os resultados oferecidos por ela. Essa tcnica utilizada para separar o sistema em partes isoladas, isso permite que as diversas partes encapsuladas sejam modificadas em sua estrutura sem que as partes que fazem referncia a ela sejam afetadas. Alm disso, o encapsulamento no permite que seja feito um acesso direto aos atributos de uma instncia, protegendo sua integridade e coeso. O principal objetivo dessa caracterstica tornar o objeto independente de sua implementao interna, para isso, a construo de suas propriedades e mtodos

"escondida" de forma que o usurio precise apenas conhecer a interface do objeto para poder utiliz-lo. Desta forma o desenvolvedor poder alterar tranqilamente a implementao de um objeto (Classe) sem causar transtornos aos usurios. A acessibilidade do contedo de uma classe pode ser controlada utilizando os especificadores de acessos, que podem ser de trs tipos: pblicos, privados e protegidos. O especificador de acesso pblico indica ao computador que qualquer mtodo, de qualquer classe, dentro da aplicao pode acessar aquele mtodo ou atributo. J os especificadores de acesso privado tornam atributos e mtodos de uma classe acessveis somente a mtodos existentes dentro dela mesma, dessa forma, partes externas do aplicativo no podem referenciar ou modificar tais partes. Os especificadores de acesso protegido so uma espcie de extenso flexvel dos especificadores privados, pois limitam o acesso apenas a mtodos da prpria classe ou de classes que herdam caractersticas dela. Utilizam-se os especificadores de acesso para proteger o acesso de mtodos ou atributos dentro de uma classe com relao a outras dentro do aplicativo, permitindo de forma eficaz a associao entre componentes, sem que sejam acessados por quaisquer mtodos dentro do aplicativo, problema que ocorre na programao procedural. Um aspecto importante da orientao a objetos a herana que permite, visando integridade e economia de cdigo, que uma classe herde caractersticas de outras. Uma classe que est sendo herdada chamada de superclasse, ou classe pai. J uma classe que herda caractersticas de outras classes, recebe a denominao de subclasse, ou classe filha. A herana permite a distribuio do desenvolvimento e manuteno de cdigo, alm de indicar uma forma de restringir o acesso a atributos e mtodos das classes de acordo com seus especificadores de acesso, limitando a forma como partes do aplicativo acessam uma classe, o que garante a integridade de um objeto. Naturalmente, uma hierarquia estabelecida entre classes. esse fenmeno, dse o nome de relao pai-filho, onde um filho herda todos os atributos e mtodos, desde que estes estejam especificados com acessos pblicos ou protegidos, de seu respectivo pai. Para determinar onde existe a relao de herana, costuma-se utilizar o mtodo um que funciona, simplesmente, indagando a uma candidata a classe filho se ela um tipo da classe pai. Por exemplo, um aplicativo possui uma classe tipo1 e uma classe tipo2, para saber se existe uma relao de hierarquia entre elas, indagamos um tipo2 um tipo1? se a resposta for positiva, ento existe uma relao hierrquica entre elas. A relao de herana funciona sempre da classe pai para a classe filho. Um filho pode acessar caractersticas do pai, porm, a classe pai, no tem acesso s caractersticas prprias de seus filhos. Podem-se definir, dentro da orientao a objetos, trs tipos de

herana: simples, mltiplo e em nveis. A escolha do melhor tipo de herana a se empregar, cabe ao programador, que, ao analisar o problema, deve julgar qual se encaixa melhor na soluo. A herana simples determina que uma classe filho possua somente uma classe pai, podendo herdar caractersticas apenas dela. Tambm pode ser empregada a herana mltipla, onde uma classe filho possui duas ou mais classes pai que so completamente independentes entre si. importante lembrar, que a classe filho deve, sempre, passar pelo teste um com todas as classes pai, e herda caractersticas de todas elas. Um problema da herana mltipla o chamado problema do diamante que surge quando duas classes independentes entre si possuem um pai comum, e geram um filho. Esse fato restringe o uso da herana mltipla a apenas algumas linguagens orientadas a objetos. O outro tipo possvel de herana a herana em nveis, onde uma classe pai tem uma classe filho, que tambm pai de outro filho. Cada relao pai-filho considerada um nvel na cadeia. Porm, a classe filha do ltimo nvel precisa, obrigatoriamente, manter a relao um com todas as classes dos nveis anteriores a ela, pois pode herdar suas caractersticas. Deve-se sempre haver uma relao definitiva, ou seja, o teste um no pode falhar nem uma vez, entre as classes para que ocorra a herana em nveis. Se no existir uma relao definitiva, aconselhvel a utilizao da herana mltipla, ou interfaces, de acordo com a linguagem escolhida. As interfaces so classes abstratas implementadas para que outras classes tenham acesso a suas caractersticas quando a herana, mltipla ou em nveis, no pode ser empregada. Outra caracterstica interessante do paradigma de orientao a objetos a abstrao. A abstrao uma forma de projetar o aplicativo para modificaes futuras, pois ela gera uma srie de funes genricas, dando um leque enorme de possibilidades aplicao, alm de impedir que mtodos essenciais ao funcionamento de certas classes deixem de ser implementados. Dentro de uma classe abstrata possvel encontrar mtodos abstratos ou no. Dessa forma, suas classes filhas so obrigadas a implementar os mtodos abstratos, mas podem escolher entre usar o comportamento padro ou modificar o comportamento dos mtodos normais, e tambm podem optar por no utiliz-los. Observando todas as caractersticas do paradigma de orientao a objetos, percebe-se claramente que tal paradigma uma tendncia atual para a programao em geral, e vrias linguagens implementam seus conceitos em aplicaes desktop e principalmente em aplicaes para internet. A linguagem Java um bom exemplo disso, pois foi criada com base nesse paradigma e pode ser chamada de Linguagem 100% Orientada a Objetos.

O PARADIGMA DE ORIENTAO A OBJETOS APLICADO A LINGUAGEM JAVA


Conforme relata Fernando Anselmo (2005), a plataforma JAVA foi criada por um grupo de programadores da empresa Sun Microsystems durante um projeto denominado Green iniciado no final de 1990. A idia do projeto era desenvolver um Controle Remoto Universal que controlaria todos os eletrodomsticos e computadores de uma casa mesmo distncia. O controle remoto foi desenvolvido, mas precisava de uma linguagem que fosse robusta, interpretada, multitarefa, de arquitetura neutra, segura, distribuda, de alta performance e, principalmente, de simples codificao. (ANSELMO, 2005, p. 13) Baseada na linguagem C++ nasceu o OAK como uma melhoria da linguagem antecessora. Porm, por j existir uma linguagem com este nome, precisou-se de um novo. A equipe de programadores, ao visitar uma cafeteria, rebatizou a linguagem criada de Java, nome da cidade de origem de um tipo de caf importado. O projeto Green acabou por se tornar muito caro para ser implementado, e foi deixado de lado. O mesmo no aconteceu com a linguagem. No incio de 1995, em um evento denominado SunWorld, a plataforma Java foi apresentada como portal para aplicaes voltadas para internet. Segundo Fernando Anselmo (2005), Java uma linguagem de programao que possui a orientao a objetos nativa em seus princpios. Durante o desenvolvimento de um aplicativo, o programador acaba sendo induzido a aplicar os conceitos do paradigma de forma natural. Por este motivo, se torna uma linguagem robusta que permite multithreading, ou seja, possibilita que os processos recebam mltiplas chamadas e execues simultneas. Adicionalmente, Java segura, uma vez que os aplicativos rodam atravs de uma mquina virtual (Mquina Virtual Java - JVM), no necessitando ser compilados a cada utilizao. Fcil de ser implementada, Java uma linguagem de texto simples que pode ter o cdigo escrito desde editores de texto comum, at aplicativos desenvolvidos para uso especfico da linguagem, que so as chamadas IDEs (Integrated Development Environment) ou Ambiente Integrado de Desenvolvimento, que agilizam o processo de desenvolvimento. Um cdigo-fonte escrito em linguagem Java nada mais que um arquivo de texto comum contendo classes implementadas e salvo com extenso .java. A partir deste arquivo o compilador ir gerar os arquivos em bytecodes com a extenso .class, ou seja, para cada classe implementada dentro do arquivo .java, o compilador ir gerar um arquivo .class que poder ser interpretado pela JVM em qualquer Sistema Operacional onde esteja instalada.

A utilizao da JVM para interpretar a aplicao Java a torna porttil. Existe um tipo de JVM especfico para cada tipo de dispositivo ou Sistema Operacional, e todas elas tm a capacidade de interpretar o mesmo aplicativo desenvolvido em Java, sem que seja necessrio alterar o cdigo. Java tambm uma linguagem distribuda, pois permite que um aplicativo possa acessar remotamente aplicativos que esto sendo executados em mquinas diferentes. Em JAVA, uma classe apenas o modelo para a criao de um objeto. Para que seus mtodos e atributos sejam utilizados, antes necessrio que a classe seja carregada na memria operacional do dispositivo, isto se chama instanciao, e, em Java, acontece atravs do uso da palavra reservada new. Um objeto a instancia de uma classe, podendo receber valores e executar suas funcionalidades sempre que outro objeto fizer referncia a ele. Uma classe um conjunto de mtodos que possuem caractersticas que se complementam para a criao de um objeto. De acordo com as funcionalidades estabelecidas em cada classe, possvel categoriz-las dentro da aplicao. Esta categorizao feita atravs da separao de classes com funcionalidades similares em pacotes, da mesma forma como um Sistema Operacional trata a separao de seus arquivos em diretrios, exceto pelo fato de que, em Java, no permitida a criao de subpacotes. A classificao das classes por meio de pacotes no altera em nada o funcionamento tcnico da aplicao, servindo apenas para a melhor organizao fsica do cdigo-fonte. Para que uma classe possa fazer uso das funcionalidades de classes contidas em pacotes diferentes do que ela est, deve fazer referncia prvia a este pacote atravs da palavra chave package. Os qualificadores utilizados na linguagem Java so: public, private e protected. Com o uso deles, possvel definir quais mtodos e/ou atributos da classe podem ser acessados e como este acesso deve ocorrer. Para que sejam encapsulados, todos os atributos de uma classe, assim como alguns mtodos que complementam o funcionamento de outros dentro da prpria classe, e at mesmo a implementao de todos os mtodos, devem ser declarados como private (privado) ou protected (protegido). Os mtodos de acesso ou mutao que so declarados como public (pblico), garantem a consistncia das informaes passadas aos demais mtodos e atributos. Java suporta sobrecarga de mtodos. Ou seja, dentro de uma mesma classe, mais de um mtodo possui o mesmo nome e retorno, porm, assinaturas diferentes. De acordo com Rafael Santos (2003), a assinatura de um mtodo composta pelo seu nome juntamente com o tipo e o nmero de argumentos passados a ele. Segundo o autor, o tipo de retorno no faz parte da assinatura de um mtodo, e cabe ao compilador, baseado na assinatura, escolher qual mtodo dever ser executado. Essa tcnica til quando um

sistema possui diversas formas de se executar uma mesma funcionalidade dependendo dos parmetros passados. A utilizao da herana em JAVA permite a criao de uma classe baseada em outra, de forma que os componentes, no privados, da classe base sejam compartilhados com a nova, que pode utiliz-los ou complement-los conforme seja necessrio. Fernando Anselmo (2005), explica que o fato de uma classe herdada poder ter seus mtodos alterados na classe filha, no implica em alterao dos mtodos originais, em contrapartida, se os mtodos de uma classe pai forem alterados, todas as classes que compartilham esses mtodos sofrem alteraes automaticamente. Rafael Santos (2003) deixa claro que se existe um cdigo em uma classe que possa complementar outra, no existe a necessidade de reimplementar, ao contrario, o reuso do cdigo deve ser feito. Segundo Fernando Anselmo (2005), reuso trata-se da utilizao de algo pronto sem fazer a chamada cpia da classe de um projeto para outro; utiliz-la em sua totalidade (ANSELMO, 2005, p. 63) Em Java, existem duas formas de acessar mtodos em superclasses: A primeira rege que, se o mtodo puder ser utilizado pela subclasse sem alterao, ele pode ser invocado por essa de maneira natural, como se fosse parte da prpria subclasse; a outra forma cabe a mtodos da superclasse que no solucionam o problema de forma completa, assim, eles so invocados na subclasse para ser parte da soluo, e o restante complementado no mtodo da subclasse. Ao fato de uma subclasse declarar mtodos de mesmo nome de mtodos contidos nas superclasses nomeia-se sobreposio, acontece quando os mtodos das superclasses necessitam ser especializados dentro das subclasses. J ao fato de a declarao de atributos nas subclasses com mesmo nome de atributos das superclasses, nomeia-se ocultao, pois seu valor original ser ignorado, recebendo novos valores nas classes filhas. Atravs da herana em Java, podemos observar a especializao e generalizao das classes. A especializao acontece quando a cada subclasse so agregadas funcionalidades de forma a torn-las mais especializadas na soluo de uma parte do problema que a aplicao se prope a resolver. Ao contrrio disso, a generalizao, vista nas superclasses, que so genricas o suficiente para que classes, herdeiras desta, se tornem especialistas. A especializao das classes acaba por entrar no conceito de polimorfismo, onde, de acordo com Rafael Santos (2003), instncias de classes filhas de uma classe ancestral comum sejam trabalhadas por um mesmo mtodo criado para tratar instncias da classe pai. Abstrair a capacidade de isolar os aspectos que sejam importantes a um determinado propsito e suprimir (descartar sem d nem piedade) os que no forem (ANSELMO, 2005, p. 62). Durante a programao de um aplicativo, a abstrao um dos

pontos mais importantes. O problema sugerido deve ser resolvido de maneira direta e concisa. Isso reduz erros e agiliza o processo de criao. Com Java no seria diferente, a abstrao constante e efetiva, uma vez que quanto mais especialistas so as classes, menor o tempo de manuteno futuro e maior a possibilidade de reuso e de expanso do sistema. Para se tornar especialista em algo, o desenvolvedor da subclasse deve saber o que implementar. Para isso, so declarados, nas superclasses, mtodos do tipo abstract (abstrato), que foram a implementao especializada destes nas subclasses. A declarao de mtodos como abstratos torna abstrata a classe que os contm, a linguagem Java, fora o programador a declar-las como abstratas, alm de no permitir que sejam instanciadas (ARAJO, 2008, p. 130). Todos os mtodos definidos como abstratos na superclasse devem, obrigatoriamente, ser implementados nas subclasses, pois eles so herdados como abstratos, ou seja, sem funcionalidade. Embora a herana seja algo comum na linguagem Java, ela no implementa a herana mltipla [...] herana mltipla, ou seja, especializar uma classe baseada em vrias outras superclasses, e no apenas em uma (ARAJO, 2008, p. 155) j que a clausula extends, utilizada para indicar a herana, s permite estipular uma superclasse. O Java disponibiliza uma forma de simular a herana mltipla, atravs do uso de interfaces. Everton Coimbra (2008) explica que uma classe interface possui apenas a declarao de mtodos abstratos, e deve ser vista como um contrato de servios que uma classe a ser implementada precisa garantir. (ARAJO, 2008, p. 156). Sendo assim, a linguagem, mesmo que indiretamente, preserva o conceito de reuso, onde uma dada classe pode estar aproveitando funcionalidade de diversas outras para complementar a soluo a que se prope. Fernando Anselmo (2005) especifica que a utilizao dos mtodos de herana, implica no reuso de cdigo, o que gera reduo do cdigo a ser implementado e testado, acelerando a programao e garantindo maior confiabilidade s funes. Assim como em qualquer linguagem de programao baseada no paradigma da orientao a objetos, Java prega e propicia condies favorveis ao reuso em aplicaes web, principalmente com a criao de bibliotecas que podem ser utilizadas em diversas aplicaes web por mais

diferentes que sejam.

APLICAO DA LINGUAGEM JAVA NA PROGRAMAO WEB


A Internet surgiu com o intuito de romper barreiras. Tendo o enfoque nessa viso, a empresa Sun desenvolveu a linguagem Java. Com o avano da internet e a constante

necessidade de estar interligando pessoas e sistemas geograficamente separados alavancou o uso do Java no desenvolvimento de sistemas WEB. Oziel Moreira Neto (2006) Descreve que desde 1997 empresas que coorde-nam a evoluo da plataforma de desenvolvimento Java comearam a mapear os problemas computacionais que deveriam ser solucionados pelas aplicaes Web, ento comearam a criar um conjunto de APIs empresariais, que a plataforma enterprise. A plataforma de desenvolvimento Java2 Enterprise Edition (J2EE) traz um conjunto de APIs e servios para facilitar o desenho, o desenvolvimento e a implantao de aplicaes Web integradas corporativamente. (MOREIRA NETO, 2006, p. 24) As aplicaes desenvolvidas em Java com finalidade de ser utilizada na internet so chamadas Applets que so programas inseridos em pginas HTML, executados pelo browser. (FURGERI, 2002, p. 261). De acordo com Srgio Furgeri (2002) o desempenho de um Applet depende das configuraes da mquina do cliente que est acessando o servio, porm, como o aplicativo deve ser transferido para a mquina do usurio, a segurana desse acesso passa a ser muito maior se comparada a um acesso restrito aplicaes que rodam somente no servidor remoto. Para que um computador possa executar um Applet necessrio que possua instalada uma mquina virtual compatvel com seu Sistema Operacional. Java foi desenvolvido com capacidade de ser multiplataforma que, de acordo com Srgio Furgeri (2002), muito importante, pois os desenvolvedores no necessitam fazer grandes alteraes na programao de um sistema caso desejem que ele seja disponibilizado em computadores que possuam plataforma diferente daquela onde o sistema foi desenvolvido. Principalmente no caso de Applets essa preocupao muito grande, pois impossvel prever o Sistema Operacional do computador que executar a aplicao. Outra forma de utilizao da tecnologia Java em aplicativos para Web, o JSP que nasceu como uma alternativa responsabilidade de gerar contedo dinmico em aplicaes Web, e tendo a flexibilidade exigida para facilita o desenvolvimento e manuteno dos aplicativos (MOREIRA NETO, 2006, p. 112). Segundo Oziel (2006), Servlet uma pequena aplicao utilizada para criar elementos para atender requisies de clientes remotos formatando uma resposta que ser apresentada ao mesmo. Em uma aplicao Web em Java o servlet receber as requisies do aplicativo, executar as partes mais pesadas do processamento utilizando cdigo totalmente Java e gerar a resposta para o cliente, que uma aplicao que utiliza JSP. O padro MVC (Model-View-Controller), tambm conhecido como padro de desenvolvimento em trs camadas, de acordo com Oziel Moreira (2006), garante que haja uma separao entre a interface, que ser acessada pelo usurio do aplicativo, o controle

do fluxo, que ser diretamente ligado persistncia dos dados, e da regra de negcio, que conter todas as regras levantadas durante a fase de projeto, a separao permite que cada uma dessas camadas sejam alteradas isoladamente. Na programao para internet, essa separao essencial para correes de erros especficos, sem que todo o sistema seja imobilizado durante a manuteno. Java uma linguagem flexvel que pode ser utilizada no desenvolvimento de sistemas pequenos at sistemas grandes. Por ser completamente Orientada a Objetos, facilita a manuteno futura dos sistemas, alm de ser bastante propcia ao reuso de cdigo. Alm disso, Java uma linguagem expansvel e permite que sejam acopladas ao sistema funcionalidades pr-programadas, sejam elas da mesma linguagem ou de outras linguagens, dando uma enorme gama de possibilidades ao sistema de crescer sem que seja necessrio reescrever funcionalidades j disponibilizadas por outros sistemas. Java possui, nativo da linguagem, a capacidade de executar diversas tarefas diferentes ao mesmo tempo, isso chamado Multithreading. No caso de Aplicaes Web, que recebero o acesso de inmeros clientes simultneos, extremamente importante que a aplicao reaja bem a isso. Java uma linguagem de programao criada a partir do surgimento da internet e para ser utilizada neste meio, como j citado no captulo 03 deste artigo, tornando-a referncia para o surgimento e adaptao de outras.

AS VANTAGENS DA LINGUAGEM JAVA COM RELAO OUTRAS LINGUAGENS ORIENTADAS A OBJETOS VOLTADAS PARA PROGRAMAO WEB
O paradigma de orientao a objetos, independente da linguagem onde empregado, torna a programao mais eficiente, rpida e expansvel, caractersticas muito visadas neste momento onde a internet e tambm as tecnologias portteis so fortemente difundidas. Cada linguagem utiliza o paradigma de uma forma particular, e tm suas vantagens na maneira como aplica, porm, todas visam uma mesma coisa: A criao de aplicativos que sejam facilmente mantidos, que tenham um rpido desenvolvimento, que sejam passveis de alteraes, e, acima de tudo, que interajam, sem grandes dificuldades, com outras aplicaes, sejam elas desenvolvidas na mesma linguagem ou no. Com vistas em explicitar a flexibilidade que o paradigma de Orientao a Objetos tem por poder ser empregado em diversas linguagens, duas outras linguagens, alm do Java, sero apresentadas, o Ruby e o PHP (a partir da verso 5). Ambas so linguagens criadas para o desenvolvimento de aplicaes Web, e so chamadas Orientadas a

Objetos, assim como a linguagem Java, sero comparadas a esta, amplamente apresentada em captulos anteriores deste artigo. De acordo com Justin Williams (2007), Ruby uma linguagem interpretada e orientada a objetos, tendo sido desenvolvida em 1993, porm, sua primeira apresentao ao pblico s aconteceu em 1995. A idia inicial do desenvolvedor era criar uma linguagem para reduzir o trabalho do desenvolvedor, criando mtodos com nomes simples, que indicam exatamente sua funcionalidade. Apesar de ter sido desenvolvida em meados da dcada de 90, a linguagem s comeou a ficar popular em 2001. A linguagem PHP foi desenvolvida em 1994, segundo Eduardo Moraz (2005), mas, assim como o Ruby, a primeira verso utilizada pelo pblico foi disponibilizada um pouco depois de sua criao, em meados de 1995. Aceito rapidamente pelos programadores, a linguagem se difundiu rapidamente e em 1997 aproximadamente 50 mil sites j utilizavam a linguagem em seus aplicativos. No captulo 03 deste artigo, foi citada a apresentao da plataforma Java para o pblico em 1995, porm, de acordo com Srgio Furgeri (2003), foi a partir de 1996 que a linguagem comeou a ser utilizada mais freqentemente no desenvolvimento de aplicativos. As trs linguagens apresentadas so gratuitas, e possuem o cdigo aberto, em particular a linguagem Java passou a ter o cdigo aberto em 2007, e mesmo assim, a empresa criadora no liberou todo o cdigo. O fato de o PHP ser uma linguagem de fcil aprendizado e por ser fcil encontrar servidores para hospedagem e a um custo bem baixo, quando comparado ao Java e Ruby, faz do PHP a escolha de muitos iniciantes em programao para a web. Atualmente, o custo para hospedagem de sistemas em Java est acessvel, e assim como PHP, comum encontrar planos para hospedagem de sistemas Web desenvolvidos nessa linguagem, ao contrrio de Ruby, onde poucos servidores se dedicam ao servio, o que torna o custo muito alto, tentando resolver isso, foi criado o JRuby, que permite ao Ruby rodar na mesma mquina virtual do Java, aumentando sua portabilidade e reduzindo custos com hospedagem. Em questo de suporte a novos usurios, as linguagens PHP e Java esto mais propcias que Ruby, at mesmo devido popularidade que elas j ganharam entre os desenvolvedores. bem maior a quantidade de material disponvel para pesquisa, e a comunidade na Web de desenvolvedores bem mais ativa, auxiliando na resoluo de problemas e esclarecimentos de dvidas. PHP uma linguagem mais simples e o tempo de aprendizado muito menor que as outras duas linguagens apresentadas, sendo a melhor escolha para programao de pequenos sistemas para Web. Para desenvolver um sistema em Ruby necessrio estudar sua estrutura de objetos, porm, ele est ganhando lugar no mercado devido simplicidade

de seu cdigo, que possui menos linhas que cdigos feitos nas outras linguagens, o que acelera a confeco de aplicativos e sistemas Web. Entre as trs linguagens, Java a mais complexa para se aprender devido s vrias particularidades com relao ao emprego por completo da Orientao a Objetos. A linguagem Ruby foi desenvolvida para acelerar o processo de desenvolvimento, sua estrutura possui vrios mtodos previamente desenvolvidos, onde o programador pode apenas fazer chamadas a eles no decorrer da programao. O problema no emprego desses recursos a manuteno futura, que mais lenta. Essa linguagem, tambm, abre espao para melhorias automticas no aplicativo durante o tempo de execuo, podendo adicionar, por si s, mtodos em uma classe ou, at mesmo, em instncias dessa classe, sendo assim, uma dada instncia pode se comportar diferente de outra instncia da mesma classe (JUNIOR, 2006, p. 02). As linguagens Java e PHP, diferentemente da Ruby, no tm essa capacidade, o que garante ao programador um maior controle sobre o cdigo, e conseqentemente sobre a aplicao, que est desenvolvendo. Na programao de sistemas para internet importante que o desenvolvedor tenha o maior controle possvel sobre o que est sendo apresentado ao usurio, visto que erros so mais dificilmente encontrados devido disseminao do acesso ao sistema. No caso do PHP, a possibilidade de emprego da programao procedural pode ser um problema para manutenes, pois o cdigo fica extenso e de difcil compreenso. Java segue uma estrutura de classes e heranas que, mesmo sendo mais complexa de desenvolver e gastar mais tempo de programao, mais facilmente compreendida em futuras manutenes. Ruby, por possuir vrias funcionalidades pr-desenvolvidas e seguir uma estrutura de objetos, trata tudo em seu cdigo como objeto, at mesmo variveis, classes, e os prprios objetos. Nem Java nem Ruby abrem espao para a programao procedural, sendo assim, seu cdigo mais curto, principalmente em Ruby, o que facilita o manuseio e compreenso. Na programao de sistemas e aplicativos para Web, devido ao fato de que o sistema est sendo executado, exceto no caso de Applets, fora do computador que o est acessando, ou seja, o acesso feito remotamente, quanto mais rpida for a resposta s requisies melhor. Sistemas com cdigos muito longos, escritos de forma procedural, tendem a ter resposta mais lenta. PHP e Ruby so linguagens interpretadas pelo servidor, nelas no existe a compilao do cdigo, dependendo da aplicao isto atrasa o desenvolvimento, uma vez que erros somente sero apontados durante a execuo. J na linguagem Java, onde existe a compilao antes da interpretao, os erros so percebidos antes mesmo da execuo do aplicativo. A percepo de erros antes de se executar o sistema muito til no

desenvolvimento de sistemas para internet, poupando tempo no desenvolvimento, visto que o sistema ser disponibilizado no servidor somente quando estiver com os erros corrigidos. Em Java o aplicativo executado pela JVM instalada no servidor, ou, no caso de Applets, executado pela Mquina Virtual instalada no cliente, rodando em seu browser. A prvia compilao do cdigo em Java permite o chamado write once, run everywhere, ou seja, o cdigo escrito em uma plataforma, e a partir do momento em que ele compilado em bytecodes, pode ser interpretado por uma mquina virtual instalada em qualquer plataforma sem que sejam necessrios ajustes no cdigo, isso no acontece com PHP, e em Ruby, essa caracterstica somente pode ser obtida a partir do momento que seja feito o uso do JRuby, ferramenta que permite ao sistema ser executado em uma mquina virtual Java, ento, o Ruby acaba por absorver a portabilidade nativa do Java. Esta vantagem do Java muito til, visto que o desenvolvedor no tem como saber o Sistema Operacional instalado no computador que ir acessar seu sistema ou mesmo do servidor onde sua aplicao ser hospedada. Java e Ruby nasceram da Orientao a Objetos, sendo este seu paradigma principal. O PHP nasceu como uma linguagem estruturada e aos poucos foi incorporando os conceitos da Orientao a Objetos, apenas a partir de sua verso 5 pode-se dizer que possui a Orientao a Objetos como seu principal paradigma, mesmo assim ainda permite, caso o desenvolvedor deseje, a possibilidade de programao procedural. Atualmente, as trs linguagens possuem o paradigma bem estruturado e incorporam seus conceitos, quando o desenvolvedor segue esses padres o cdigo se torna mais legvel e de mais fcil manuteno. As trs linguagens possuem modificadores de acesso pblico, privado e protegido para seus atributos e mtodos, restringindo o acesso classes do sistema, e garantindo maior segurana para sistemas que esto na internet, sujeitos a todo tipo de acesso e intenes. Java e Ruby foram o desenvolvedor a respeitar a herana, e possuem tratamento de excees em seus mtodos nativos, alm possuir Garbage Collector para fazer a gerncia da memria operacional, efetuando automaticamente a limpeza de dados que no sero mais utilizados durante a execuo do aplicativo. Em PHP, ao contrrio dos anteriores, nenhuma dessas caractersticas est presente, a limpeza da memria no automtica, sendo necessrio que o programador invoque um mtodo em particular. A limpeza da memria deixa a mquina onde o sistema est rodando mais rpida e, conseqentemente, aumenta o tempo de resposta das requisies Das trs linguagens de programao apresentadas, a nica que permite a sobrecarga de mtodos Java, porm, todas possuem biblioteca standard, que a biblioteca padro da linguagem. Java e Ruby possuem variveis fortemente tipadas, j em

PHP no existe a necessidade de se utilizar mtodos para converter os diversos tipos de variveis, a linguagem faz isso para o desenvolvedor, isso acontece porque, nas duas primeiras, cada tipo que a varivel pode assumir um objeto. No obrigatria a declarao de tipos de variveis em Ruby e PHP, pois uma vez que suas variveis so gerenciadas dinamicamente no necessrio especificar um tipo de dados para variveis, sendo que estas podem receber qualquer tipo de informao. Em Java, esta declarao obrigatria e s pode ser feita nas primeiras linhas de cada mtodo ou classe, sendo necessrio especificar o tipo de dados que ir receber, porm isto no impede que seja atribudo um valor string em uma varivel do tipo inteiro, por exemplo, isto pode ser contornado com o uso de Generics do Java. Durante a execuo de sistemas Web, quanto mais direta for a execuo do cdigo, menor o tempo de resposta, em sistemas com muitas requisies, a gerencia dinmica das variveis pode acarretar em demora na resposta ao cliente. Java e Ruby possuem ferramentas para documentao embebidas no cdigo, PHP no disponibiliza esse recurso ao desenvolvedor, porm, igualmente ao Java, PHP possui classes de interface e classes abstratas, enquanto Ruby no possui. Em Ruby tudo tratado como objeto, j em PHP e Java, vrios mtodos podem ser criados. Dentre as trs tecnologias apresentadas, Java a que melhor se destaca em questo de desempenho quando se submetido a um fluxo alto e constante de trabalho, como o caso de sistemas para Web, e medida que a mquina onde a aplicao est rodando melhorada, o desempenho do sistema tambm melhorado proporcionalmente. PHP, em relao a custo de produo e manuteno, mais vivel visto que o custo para se preparar um desenvolvedor menor, assim como custo com hospedagens e com a prpria linguagem, ou seja, o custo de investimentos para o desenvolvimento de um sistema em PHP menor se comparado ao desenvolvimento em uma das outras duas linguagens apresentadas, e at mesmo o custo com hospedagem consideravelmente menor Vrios pontos diferem as linguagens de programao, sendo assim, no se pode dizer que uma linguagem de programao superior qualquer outra, antes, deve-se analisar o contexto onde ela ser empregada e escolher a linguagem que melhor se destaca dentro dessa realidade.

CONSIDERAES FINAIS
Diante do estudo realizado sobre os conceitos do paradigma de Orientao a Objetos, pode-se defini-lo como um dos principais conceitos na programao atual, principalmente na programao para internet. Quando aplicado em sua completude, como

acontece com a linguagem Java, uma poderosa ferramenta de desenvolvimento, que visa no somente o ato da programao, mas tambm a performance durante a utilizao do aplicativo e o cenrio da manuteno futura. Ao comparar os conceitos da Orientao a Objetos com o dia-a-dia no mundo real, podem-se perceber as semelhanas e a partir do momento em que essas semelhanas so assimiladas pelo desenvolvedor o desenrolar da programao baseada nestes conceitos passa a ser rpido e simples. A linguagem Java simples por natureza, as dificuldades encontradas em seu uso so geralmente devido ao desconhecimento dos conceitos da Orientao a Objetos. Neste artigo buscou-se esclarecer os maiores mitos sobre este paradigma, deixando mais simples e atrativo o uso do mesmo, principalmente quando empregado juntamente coma linguagem Java, criada a partir dos conceitos da Orientao a Objetos e voltada para a programao de sistemas Web. A integrao da linguagem Java com os paradigmas da Orientao a Objetos torna a manuteno futura rpida, pois proporciona ao desenvolvedor o controle total sobre o cdigo desenvolvido. Alm de que, a integrao de novos mdulos a um sistema j desenvolvido simples e no necessita de muitas alteraes nas demais partes do sistema. A utilizao correta dos conceitos da Orientao a Objetos torna o desenvolvimento mais gil e fcil, tornando o cdigo mais legvel e a manuteno muito mais rpida e menos traumtica. Como a linguagem Java permite ao programador aplicar todos os conceitos do paradigma, seu uso sempre indicado na confeco de sistemas para Web, sejam eles de grande ou pequeno porte.

Referncias
ANSELMO, Fernando. Aplicando Lgica Orientada a Objetos em Java. 2 Ed. Atual. E ampl. Florianpolis: VisualBooks, 2005. ARAJO, Everton C. Orientao a Objetos com Java simples, fcil e eficiente. Florianpolis: VisualBooks, 2008. BORATTI, Isaias C. Programao Orientada a Objetos em Java. Florianpolis: VisualBooks, 2007. FURGERI, Srgio. Java 2: Ensino Didtico: Desenvolvendo e Implementando Aplicaes. So Paulo: rica, 2002. JNIOR, Eustquio R. O. Ruby: Conhecendo a Linguagem. Rio de Janeiro: Brasport, 2006.

KEOGH, Jim; GIANNINI, Mario. OOP Desmistificado: Programao Orientada a Objetos. Rio de Janeiro: AltaBooks, 2005. MORAZ, Eduardo. Treinamento Prtico em PHP. So Paulo: Digerati Books, 2005. MOREIRA NETO, Oziel. Entendendo e Dominando o Java para Internet. So Paulo: Digerati Books, 2006. RICARTE, Ivan L. M. Programao Orientada a Objetos: Uma abordagem com Java. Campinas: FEEC/UNICAMP, 2001. SANTOS, Rafael. Introduo Programao Orientada a Objetos Usando Java. 7 Reimpresso. Rio de Janeiro: Elsevier, 2003. WILLIAMS, Justin. Rails Solutions: Ruby on Rails made easy. New York: Friends of ED, 2007.