Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Brito

ActionScript 3.0 Orientado a Objetos

Recommended Posts

ActionScript 3.0 Orientado a Objetos


Aula 04: Iniciando com a Programação Orientada à Objetos




Transição para OOP

Antes de entrarmos no conceito de OOP, deixar claro aqui que antes todo mundo programava de maneira procedural, que é a programação estruturada, visto que foi o paradigma dominante durante um bom período, onde o principio era orientar os programadores para a criação de estruturas simples em seus programas, usando subrotinas e funções.Só que essa forma de programação não era adequada ao desenvolvimento de software, pois o programador escrevia muito sem necessidade, e isso era um problema comum na década de 60, que era a crescente complexidade de software, problema bem abordado nos livros de Engenharia de Software.
Com isso surge a Orientação a Objetos, com o intuito de simplificar o desenvolvimento de software e auxiliar em problemas como manutenabilidade, reusabilidade entre oturos.

MovieClip Scripts x TimelineScripts x DocumentClass

Não irei perder muito tempo aqui nessa seção visto que são coisas triviais, e não necessitam de uma explicação mais detalhada.Só para resumir essas tres formas consistem em onde colocarmos nossos códigos.

MovieClip Scripts

Essa primeira forma, muito usada pelos desenvolvedores que utilizavam actionscript 1.0 e 2.0, nesta forma inseriamos nossos códigos dentro dos simbolos , como MovieClips e Botões,totalmente sem padrão, e sem uso do paradigma orientado a objetos.Abaixo um exemplo:

onClipEvent (load) {
  trace("Este clip foi carregado.");
}



Timeline Scripts

Modo mais comum encontrado nas aplicações usando o flash,inclusive atualmente.Nesse modo inserimos nosso código, praticamente todo nosso código vai no primeiro frame do nosso documento, essa não é uma prática totalmente orientada a objetos, quando eu digo totalmente, estou me referindo ao seguinte: A partir do momento que você instancia um objeto, e passa a referência-ló através do seu nome de instância, via dotSyntax, acredito eu que você esteja usando um mínimo de orientação a objetos.


DocumentClass

Opção disponível desde a versão Adobe Flash Professional cs3, consiste no seguinte: Escrevemos uma classe simples em um arquivo .as e "Invocamos" essa classe, via o documment class.Abaixo um exemplo:

Classe:

package{
public class HelloWorld{
public function HelloWorld(){
  trace("Hello World");
}

}

}

Imagem Postada

Onde tem ali Class: Nó simplesmente colocamos o nome da Classe, lógico que elas devem estar no mesmo package.

Não se preocupem se não expliquei os detalhes da classe, creio que seja simples demais e vocês com certeza, estão por dentro disso.De qualquer forma estaremos fazendo nossa primeira classe no final.



O que é a Programação Orientada a Objetos?

A programação orientada a objetos parte da ideia de que tudo é um objeto do mundo real, possuindo suas peculiaridades e relacionamentos com outros objetos.
A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.
A seguir a definição de alguns conceitos essências:



Classes

Representa um conjunto de objetos com características afins.Tudo que temos num programa orientado a objetos, vem de uma ou várias classes. A classe deve ser construida de forma abrangente, ou genérica possuindo todas as características do que ela representa.A classe é uma espécie de "container", onde se moldam os objetos. Uma classe descreve os serviços providos por seus objetos e quais informações eles podem armazenar.

Objetos

Um objeto nada mais é que uma instância de uma determinada classe. Afinal o que é instância? Instância é a representação daquela classe em determinado momento.Um exemplo rápido para que fique claro: Existem diversos sites na internet, todos eles são sites, mas o que os diferencia são suas características, no imasters tem o nome, tem o dono e assim sucessivamente,em outro terá outro nome, outro dono, e outras características.Todos eles são objetos, ou instâncias ou ocorrência da classe.

Propriedades ou Atributos

São elementos que definem a estrutura da classe, são as características presente nos objetos. Por exemplo: Numa classe Bicicleta, nós temos como atributos: cor,peso,marchas e por ai vai.

Métodos

Os métodos definem o que os meus objetos podem fazer, ou seja, as habilidades dos meus objetos. Eu tenho minha instância BMX da classe Bicicleta, que tem a habilidade de andar, implementada através do método andar(). O método na classe é apenas uma definição a ação só ocorre quando o método é invocado, pelo objeto BMX.

Reusabilidade

Segundo FERNANDES, Reusabilidade "é o grau de facilidade ou de potencialidade que um componente possui para ser reusado. Está relacionado a alta coesão e baixo acoplamento com outros módulos."
Só trocando em miúdos é quantificar a facilidade que um componente possui para ser reusado.


Manutenabilidade

Manutenabilidade é a facilidade que temos para poder dar manutenção em um determinado sistema , ou bloco de código.Não entrarei em detalhes, pois trata-se de assuntos de engenharia de software.

Trabalho em Grupo

A orientação a objetos permite que os desenvolvedores possam trabalhar em grupos, não só possibilita como, gera grande produtividade na hora do desenvolvimento.Inclusive existem metodologias ágeis de desenvolvimento, como XP e RUP.
Novamente não irei entrar em detalhes, porque está além do escopo do curso.Mas para quem quiser maiores detalhes sobre Rup e XP, acesse o link: RUP e XP


Planejamento e Diagramas UML (visão geral da importância)

Antes de começar, digo aqui que existem duas ferramentas excelentes para se trabalhar com UML, todas duas free e o jude ainda é multiplataforma.

ArgoUML: ArgoUML
Jude: Jude

O Planejamento é uma etapa crucial no desenvolvimento de sistemas, através do planejamento você consegue ganhar tempo na codificação devido a já ter planejado várias etapas do negócio, já ter definido diagramas das classes, entre outros.A seguir casos onde pensamos que o planejamento é desnecessário:

Não existe tempo para o planejamento, o prazo para entrega do projeto é no final do mês.

O tempo que se passa realizando o planejamento, irá fazer com que o tempo de codificação seja diminuído, inclusive tempo que seria gasto com debug. Com isso nós percebemos que planejar é ótimo, inclusive para gerenciar projetos com curto prazo.

Não tem orçamento para o planejamento.

O planejamento irá poupar de gastos futuros de desenvolvimento. Ao se planejar, so se juntam papéis, ou seja o gasto é uma pilha de papel, enquanto não planejar pode levar a um prejuízo gigantesco, de ter que reescrever toda a aplicação do zero, por não ter se preocupado em planejar detalhes simples.

Não preciso de planejamento, meu projeto é pequeno.

O Planejamento é útil em todos os tamanhos de projetos. Imagine que você projeta um sistema para um cliente, e que depois de um certo tempo o seu sistema não foi projetado para por exemplo: compartilhar a relação de produtos com outro dispositivo, ou essa mesma lista não está numa base de dados, enfim são apenas exemplos para ilustrar a importância do planejamento.

UML - The Unified Modeling Language

UML é uma incrível linguagem de modelagem para aplicações. A uml é uma maneira de representar projetos orientados a objetos e mostrá-los, tanto orientado a objetos como o processo.
Quando modelamos uma aplicação, nós tipicamente temos muitas visões sobre a aplicação daí colocamos isso em diagramas. Uml suporta nove tipos de diagramas, que podemos aplicar para criar várias visões: class, object,use cases ,sequence, collaboration, statechart, activity, component e diagrams de implantação. A seguir uma breve descrição de cada um:

Imagem Postada

Não iremos entrar em detalhes aqui, pois não é o nosso foco, entretanto irei mostrar o diagrama de classe abaixo e irei falar um pouco sobre Associação e Generalização, Agregação e Composição.

Diagrama de Classe

O diagrama de classes é sem dúvida o mais importante, iremos usá-lo sempre que planejarmos nossos projetos em Actionscript. O diagrama de classes, descreve a estrutura de sua aplicação, assim como define seus atributos e métodos e os relacionamentos entre eles.


Imagem Postada

Como eu uso o Argo, acima uma imagem sobre o mesmo, assim como a criação de uma classe simples. Notem que assim que criamos a classe, podemos manipula - lá, no painel inferior conseguimos adicionar atributos, adicionar o nome da classe, adicionar métodos, assim como definir o tipo de visibilidade se é private,public ou protected, e assim sucessivamente, podemos fazer todas as mudanças necessárias.


Associação e Generalização

Associação é simplesmente a ligação entre duas classes, ou seja, a relação entre elas.

Imagem Postada

O exemplo acima mostra a relação entre a classe empregado e a classe empresa, os números ali e o (*) representam a cardinalidade da relação, que significa que uma empresa pode ter no mínimo 1 empregado e no Maximo * (vários), e 1 empregado só pertence a uma empresa.

Generalização é um termo em UML que significa herança. Usando generalização em UML, nós podemos definir as classes que herdam de outras classes.

Imagem Postada

Agregação e Composição

Existem situações em que ao modelar uma classe você verá que tem-se muitos componentes, para podermos representar isso em UML, nós usamos a agregação e a composição.Vamos usar o PC como exemplo: Nós temos a classe que representa o PC como um todo, e temos as outras classes que são os componentes que existem num PC. Abaixo figura ilustrando esse esquema:

Imagem Postada

Mas qual a grande diferença entre a agregação e a composição?

Na agregação o todo não pode existir sem suas partes, enquanto na composição os componentes ou as partes não podem existir sem o todo.

Um bom exemplo para ilustrar a composição é o ser humano, se o ser humano morre os órgãos morrem também.A diferença no diagrama de classes entre composição e agregação é somente o diamante da relação ilustrada nas figuras, enquanto na agregação o diamante é sem preenchimento, na composição o diamante é preenchido na cor preta.

Imagem Postada

Finalmente com isso acredito que tenha passado o básico de uml, para aqueles que não sabiam ou nunca tinham ouvido falar.

Criando sua primeira Classe

Vamos criar uma classe simples. Vamos criar a classe Paciente, como estou desenvolvendo um sistema para a área farmacéutica então já ta na minha cabeça... rsrsrs


package{
	
	//Aqui definimos nossos imports
	
public class Paciente{  //Letra Maiscula na hora de criar sua classe
	
	 public var nome:String;
	 public var rg:int;
	 public var cpf:int;
	 
	// Vamos deixar com poucos atributos
	
		public function Paciente(nome:String,rg:int,cpf:int){
			//Aqui estou atribuindo os valores que recebo no construtor, no momento da inicializacao do
			//objeto
			
				this.nome = nome;
				this.rg = rg;
				this.cpf = cpf;
				trace("Bem vindo Paciente " + this.nome);
				trace("Seu RG é " + this.rg);
				trace("Seu CPF é " + this.cpf);
			
			
			}
			//Preciso definir metodos principalmente métodos set e get
			//Mas que no momento nao irei definir pois ainda veremos isso mais a frente
	
	
			public function agendaConsulta():void{
				
				// Código responsável por agendar a consulta
				}
	
	
	
	}
	
	
	
	}

Para testarmos nossa classe, basta salvar essa classe como Paciente, junto do mesmo arquivo fla.Dai criamos nosso arquivo fla, pode salvar com qualquer nome, abrimos o primeiro frame e simplesmente digitamos:


var paciente1:Paciente = new Paciente("kisuke",123456,123456);


Com isso terminamos nossa primeira classe.Acredito que tenha colocado mais coisas do que deveria na classe, mas o Michel me perdoa.Percebam que coloquei os atributos publicos, porque não poderia definir os métodos get e set's, senão colocaria ele private.

Referências:

Reusabilidade

Dicas sobre Actionscript

Livro Orientação a Objetos

Abs espero que gostem e qualquer coisa comentem, perguntem sintam-se livre ,para opiniar melhoras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wow, sensacional kisuke!

 

super bem explicado e ilustrado!

 

agora vou revisar/melhorar minha parte pra não ficar feio pra mim hauehuaheua

 

O mais legal, é que embora estejamos falando de ActionScript 3, isso serve pra qualquer linguagem orientada a objetos!

 

Parabéns velho!

 

e que venham os comentários/dúvidas =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wow, sensacional kisuke!

 

super bem explicado e ilustrado!

 

agora vou revisar/melhorar minha parte pra não ficar feio pra mim hauehuaheua

 

O mais legal, é que embora estejamos falando de ActionScript 3, isso serve pra qualquer linguagem orientada a objetos!

 

Parabéns velho!

 

e que venham os comentários/dúvidas =)

 

Vlw Michel, muitos problemas me impediram de fazer essa aula antes, mas enfim saiu né.

Abs e obrigado pelos comments

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima aula kisuke.. só tenho algumas dúvidas, quando você diz salvar a classe.. seria em um arquivo .as? no caso no arquivo .fla teria q ter um import certo?

 

outra dúvida.. sempre teremos que declarar na classe as variaveis que iremos usar no construtor ou nas funções?

 

fico no aguardo, forte abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótima aula kisuke.. só tenho algumas dúvidas, quando você diz salvar a classe.. seria em um arquivo .as? no caso no arquivo .fla teria q ter um import certo?

 

outra dúvida.. sempre teremos que declarar na classe as variaveis que iremos usar no construtor ou nas funções?

 

fico no aguardo, forte abraço!

 

 

Vlw WalterDFF, quando eu digo salvar a classe é isso mesmo, crie um arquivo .as e salve sua classe lá. No nosso caso o arquivo .fla não precisa do import, porque estamos trabalhando no mesmo package, se estivessemos trabalhando em pacotes separados ai precisareiamos do import.

Quanto a outra dúvida nem todas variáveis nós declaramos fora, algumas nós precisamos declarar dentro de alguma função, isso depende muito da necessidade no momento, mas é uma boa prática declarar sim nossas variáveis e inicializá-las no construtor.

 

 

Abs qualquer coisa estamos ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh beleza kisuke entendi.. outra duvida.. posso por exemplo colocar um codigo .as dentro de um servidor ao inves de colocar na pasta public_html e fazer requisicoes dele internamente no swf sem nenhum problema?.. todo arquivo .as tem q ficar externo? não sei se expliquei direito o q quero saber..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.