» Tutorial de POO |
Por Elias Gervásio Pereira Junior, em 09/11/2006. |
Introdução Bom pessoal, o objetivo desse tutorial é tentar explica da forma mais simples possível a POO (Programação Orientada à Objetos). A idéia de fazer esse tutorial surgiu da diversidade de apostilas e tutoriais que existem na internet, mais que a grande maioria na minha opinião são ineficientes, principalmente no quesito simplicidade. Longe de ser um exímio programador, mesmo assim, tentarei passar pra vocês parte do que aprendi, e os métodos que julguei ser mais fácil para tal ?façanha? (uau, me tornarei um herói?!). Programação Procedural x POO Começaremos, abordando uma comparação entre os dois principais tipos de programação existentes hoje. A programação procedural se define por ter um desfecho de desenvolvimento ?linguição?(ouvi muito isso rsrsrs). Como assim ?linguição?? Veja só: <table style="border-collapse: collapse;" align="center" border="1" cellpadding="5" cellspacing="0" width="98%"><tr><td style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; color: rgb(88, 88, 88);" class="fontecode">comecoDoPrograma { ...faz isso. ...pegue aquilo. ...calcule isso. ...jogue esse valor na tela. ...ok, tá beleza. }//fim do programa</td></tr></table> Tradução é um ?linguição?. Dependendo do programa, você pode ter centenas ou até milhares de linhas num único arquivo. Se você é um programador de linguagem baseada em procedimentos, como eu já fui, posso então imaginar sua cara [] quando alguém te pede um alteração. Conclusão: ?-Terei que revisar e testar as mil linhas que revisei e teste ontem....?. E se você precisar de pedaço de código que já está pronto? ? Ah, essa é fácil, é só copiar e colar o código onde preciso...Acertei??. Euuu, acho que essa não é a melhor opção, pensa um pouquinho... Copiar código que já existe? Obs.: A programação procedural pode ser decomposta em várias partes de código, embora esse paradigma desencoraja esse tipo de desenvolvimento, você também pode desenvolver um ?linguição? em POO, mas nela isso também é desencorajado. O objetivo era somente uma rápida comparação, e amostra da necessidade da quebra desse paradigma. Iniciando a compreensão da POO Primeiramente a POO não é nenhum bicho de 7 cabeças, é um de 27!... Hehe tô brincando... Como a passar do estudo você verá que é simples, que é mais fácil de se trabalhar que com a Procedural, e até divertido... ?Então vamos logo criar um objeto...Iruuu?. Calma! O que na verdade seria um objeto? Objetos O objeto é uma instância de uma classe. Para criarmos um objeto nos precisamos de um modelo, de uma fôrma, de um projeto. O Objeto seria esse projeto em execução, seria uma reserva de endereço na memória do seu computador, conhecida como memória Heap. ?Ah, então temos que ter um projeto de um objeto, para depois podermos criá-lo??. Isso mesmo. Se você está meio confuso, não esquente a cabeça, que mais pra frente você vai entender. Classes ?Já sei, Classe é uma sala de aula??. Poderia até ser. (darhh). Mais dentro do Java ela se define como a fôrma, o projeto do objeto. A Classe de um determinado objeto, dirá ao Java, que o objeto criado(instanciado) a partir dela, terá certas variáveis de instância e certos métodos. ?Ah, agora minha cabeça empipocou tudo!? Eu vou explicar. Explicações Gerais O Objeto é composto de: - Variáveis de Instância(Objeto); - Métodos; Variáveis de Instância São os dados que o objeto contém, elas dizem qual é o estado do objeto. Podemos também dizer que são as coisas que o objeto conhece de si próprio. Métodos É como se fosse as funções(Function) do objeto. São as ações do objeto, é o que eles podem fazer. São esses métodos que alteram o estado e o comportamento do objeto (Dependendo do estado, assumisse certo comportamento). As coisas que o objeto pode fazer, são resultado das chamadas a esses métodos. Exemplo: Vamos construir uma classe, da qual poderá se instanciar um objeto do tipo Televisão. Lembre-se sempre que o Java, sempre tentar chegar o mais perto da realidade do programador. Beleza! Pra criarmos um objeto Televisão, precisaremos primeiramente de um projeto. Então vamos criar o projeto Televisao melhor dizendo, a classe Televisao: Obs.: Nomes de variáveis, classes e métodos, por padrão não são acentuadas. E o nome das classes sempre começam com letra maiúscula. Bom, quais são as características de uma televisão? ?Ah, ela tem volume do som, tamanho, canal...?. Ok. Você concorda que estes serão os dados da televisão? Que eles determinaram qual o seu estado? E também terá que concordar que todos as televisões possuem essas características! Então essas características serão nossas variáveis de instância. Onde será armazenado os estados do objeto televisão. [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] E o que é que uma Televisão faz? ?Ah, ela muda o volume, muda o canal, liga...? Ok. Você concorda que essas são as ações do objeto televisão? É o que ele pode fazer? Então essas ações serão nossos métodos. Eles poderão alterar, se preciso, o estado das variáveis de instância, e também serão responsáveis pelo que o objeto pode fazer, como será determinado comportamento. Então temos: [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem] Em execução seria seguinte: tv é uma instância da classe Televisao(estou afirmando isso). Então, tv.aumentaVolume()(é assim que se chama um método), fará a tv aumentar o volume do som; tv.proximoCanal(), fará a tv mudar o canal. Em ambos os casos, a chamada a esses 2 métodos estará mudando o estado das variáveis volumeSom e canal, para o estado desejado, fazendo assim que a tv se comporte de maneira diferente a cada chamada desses métodos. É isso ai pessoal, só tome cuida ao ficar olhando pras coisa do mundo real e imaginando qual seriam suas variáveis e métodos, na frente de outras pessoas, elas podem achar que você está louco! Conclusão Uma das maiores vantagens da POO é o encapsulamento das variáveis de instância dentro do objeto, a despreocupação com relação a implementação do objeto que está sendo utilizado. No caso da classe Televisao, não te importa onde ela armazena os canais, nem como ela implementa a mudança deles, o que importa é que você aperta o botão e ela muda. Caso você queira modificar completamente a implementação da classe Televisao mantendo o mesmo comportamento, você o poderá fazê-lo tranquilamente, que para o usuário não fará a menor diferença (o usuário, no caso da POO, seria uma interface UI ou mesmo outro objeto). Indicações: -Core Java2 Vol.1 e 2 ? Hostmann Cornell - Editora Makron Books -Use a cabeça! Java ? Sierra & Bates - Editora Alta Books Autor: Elias Gervásio Pereira Junior Desenvolvedor Java ? H&M Soluções ? Caldas Novas Tecnólogo em Processamento de Dados ? Faculdades Objetivo Contato: [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] ou [Tens de ter uma conta e sessão iniciada para poderes visualizar este link] |