Em continuação com o tutorial ( 001 - 002 - 003 - 004 - 005 - 006 - 007 - 008 )
5. Programação Orientada a Objectos.
Por muitos a linguagem orientada a objectos é uma maneira simples, rápida e eficaz que se pode traduzir por uma melhor performance no código e uma mais fácil identificação de erros bem como a interpretação por parte de outros programadores. Mas como tudo, também existe outro lado da moeda, que muitos programadores ainda mostram barreira em aceitar esta metodologia de programação e se mostram muito reticentes ao seu uso.
Mas no Action Script 3 não existe outra maneira, ou se programa orientado a objectos ou então é melhor esquecer o AS3.
Daqui para a frente falaremos cada vez mais de este tipo de programação, bem como o seu uso, por isso vamos falar em mais concreto dos benefícios de usar a adequada estruturação do código. Um dos básicos da linguagem orientada a objecto é a compreensão do seu método de funcionamento e estruturação, com especial atenção a:
Class’s: Colecção de funções e variáveis relacionadas para facilitar a interacção com determinados objectos. Isto é o ‘core’ do AS3 e das linguagens OOP, e será mostrado o seu uso em diferentes situações.
Inheritance (Código hereditário) : Uma das grandes vantagens do AS3 (OOP) é a possibilidade de alterar/remover/adicionar propriedades/funções a determinado componente/função/método sem ter que re-inventar a roda, o que nos permite extender uma class/componente sem termos que programar a class do zero, o que além de nos poupar imensas linhas de código, permite também entender melhor o comportamento de determinado componente ou class e melhora-las/adequa-las às nossas necessidades.
Composition (Composição): Como foi falado em cima, esta possibilidade de extender todos os componentes e suas class’s, pode ser muito util, mas não é possível em algumas situações e para isso temos este metodo ”Composition” que é uma técnica que nos permite criar uma class que possa trabalhar com outra em conjunto, e que nada herda de uma possível class de um componente.
Encapsulation: Geralmente não é uma boa ideia expor todos os aspectos de uma class para outras class’s ou aplicação, esta Ecapsulação é um método que permite ”ocultar” a maior parte das propriedades e funçoes de uma class permitindo apenas que certos elementos sejam expostos.
Polymorphism: Este método permite que objectos de diferentes class’s possam ter o mesmo nome e os mesmos eventos e que se comportem de diferentes formas, o que acaba por permitir que não seja necessário que se criem novos métodos sendo depois mais fácil extender essa class…tendo apenas que perceber como o objecto se comporta nas diferentes classes.
Nota: É importante compreender que as linguagens OOP podem não ser fáceis, nem apropriadas para toda a gente ou situação, mas é muito util principalmente quando usada em projectos de média/grande dimensão com bastantes programadores, já que simplifica em muito o trabalho de equipa. Não é obrigado a aprender OOP para saber programar AS3, mas que ficará limitado a quase 50% das possibilidades do AS3 também é bem verdade.
Uma das iniciais vantagens no processo de programar uma linguagem OOP é escolher uma boa plataforma para o seu desenvolvimento, principalmente porque existem variadas maneiras de criar uma interface e várias ferramentas para o fazer. Uma boa prática é que antes de iniciar o seu projecto faça o seu plano de necessidades, objectivos, arquitectura e comportamento de programação. Se fizer isto, é meio caminho andado para perceber que uma linguagem OOP como o AS3 pode satisfazer facilmente as necessidades do projecto, mas não se preocupem em ser demasiado exigentes nos vossos primeiros projectos, porque com certeza que encontrarão problemas e cometerão erros, que servirão para optimizar e melhorar a vossa maneira de trabalhar.
Vamos falar detalhadamente e praticamente de cada um destes pontos…
5.1. Class’s
As class’s são a base de qualquer linguagem OOP, que oferecem uma vantagem e melhoramento enorme em relação à programação não orientada a objectos, e que provavelmente já foram usadas por grande parte dos programadores, mesmo não tendo a intenção de as usar, até mesmo nas partes anteriores deste tutorial já foram usadas class’s indirectamente e se calhar nem repararam. Ao terem aprendido a trabalhar com eventos (addEventListner, removeEventListner e mesmo o eventDispatch), com a displayList (Display Object, e Display Object Container), e até mesmo com arrays que no seu ‘core’ todos este métodos/propriedades são class’s.
Não fiquem preocupados se estão a pensar que não compreenderam o porque do que falei em cima serem class’s porque mais à frente irão compreender, até porque estas class’s não estavam ”visiveis” quando as utilizamos o que por isso acabamos por não ter percebido que eram class’s.
Por exemplo, utilizamos anteriormente propriedades e métodos do Button, como o .width, .x, .y, move() e sem terem percebido, todas estas propriedades pertencem à class Button até aprenderam como criar uma nova instancia dessa class:
var btn:Button = new Button();
que é o fundamental para começar a trabalhar com class’s. Então (já) com toda essa experiência em class’s qual é a dificuldade?? A principal dificuldade explicada mais à frente prende-se como o facto de programar essas mesmas classes, porque como viram é muito fácil usa-las e já sabem bem como o fazer.
Iremos começar por criar uma ”custom class”, ou seja, uma class personalizada, vejam:
package teste
{
import mx.controls.Button;
public class teste extends Button
{
public function teste()
{
trace("Botão");
}
}
}
Esta é a estrutura base de uma clas pelo que vamos passar a explicar detalhadamente:
Iniciamos a declaração package indicando o seu nome (teste), não é literalmente obrigatória, mas começamos já assim para explicar bem as coisas, logo depois usamos o import que indica à nossa class que vamos fazer uso de uma outra class (Button), se não colocar-mos esse import o compilador não saberá nem indentificará esta class como uma ”extensão” de outra, e simplesmente não funcionará.
Indicamos então a iniciação da nossa class do package, (public class test) e vamos extender a class button (extends Button), que fará com que todas as propriedades, métodos e eventos da class buttom estejam disponiveis para uso na nossa class.
Por final temos a função/método base da nossa class. (public function teste)
Para usarmos esta class, bastaria fazermos no nosso projecto:
import teste.teste;
var meubtn:teste = new teste;
é familiar não é?
Esta declaração é exactamente igual a qualquer outra declaração de objectos, pelo que agora podem perceber o quanto simples é criar uma class. Como resultado desta nossa class, a variavel meuBtn será exactamente igual a um Button porque a nossa class teste extende um button e mais nada faz, pelo que se usarem depois do código em cima:
addChild(meuBtn)
será apresentado um botão no stage, exactamente igual a um Button normal, ou seja, não notarão qualquer diferença entre:
import teste.teste;
var meubtn:teste = new teste;
addChild(meubtn);
e
var meubtn2:Button = new Button;
addChild(meubtn2);
5.1.1. Class Paths (caminhos das class’s)
O caminho das class’s pode-se entender como sendo o caminho físico onde a class se encontra, no exemplo em cima, ao definir package teste, estamos a definir também o caminho desta class, que ficou organizada no sistema de ficheiros (em directorias) como:
->Projecto:
->teste (package)
->teste (class)
Bom, por agora é tudo…
Continua…









7 Comentários
parabéns pelos tutoriais amigo, além da qualidade ajuda muito quem vem da Programação procedural.
tem clareado muito meus pensamentos a respeito da programação OOP!
abraços… e por favor continue
Muito bom! parabéns!
Faz tempo que estava procurando conteúdo sobre as3 em português.. e é complicado pra encontrar..
Mas com esses seus artigos facilitou bastante!
Obrigado! valeu mesmo!
Felipe, Espero que pelo menos fique com a ideia que apesar de ser mais complicado de entender, torna as coisas muito mais simples depois de algum entendimento…
Tobias, Obrigado! Espero que o tsw continue ajudando ainda mais
Abraços.
Olá Mario, primeiramente parabens pelo trabalho…
E queria dizer que foi graças a vc que hoje ja sei um bocado de flex.
Obrigado pelo apoio
Mario, eu tenho uma pergunta:
A sua apostila de Actioscript 3, a que tem todas as aulas juntas, já está disponivel para download?
Boas Jeferson.
Obrigado!
Sim, o e-book que junta os tutoriais de 01 a 011 já está disponivel para download em :
http://msdevstudio.com/blog/2008/06/30/tutorial-action-script-3-parte-i-o-livro/
Abraço.
Mais uma vez obrigado…
Sucesso e muita paz pra vc Mario…
Oupa! não têm de que!
Abraço.