ActionScript/Classes: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
m Foram revertidas as edições de 187.112.176.206 (disc) para a última versão por Franprarod
Linha 1:
== Sobre Classes ==
Classe é o fundamento da programação orientada a objetos. Elas oferecem um modo simples e organizado para organizar métodos e atributos. Podemos dizer que, sem classes, não há OOP. Se você nunca trabalhou com classes, é interessante aprender, pois sem classes não há como programar efetivamente em AS 3.0, pois esta é toda OO.
 
As classes no ActionScript 3.0 devem sempre estar inseridas dentro de pacotes (<source lang=actionscript3 enclose=none>package</source>). Veja o exemplo a seguir:
<source lang=actionscript3>
package {
import flash.display.MovieClip;
public class Main extends MovieClip {
public function Main() {
trace("Olá!");
}
}
}
</source>
 
 
Iniciamos escrevendo a palavra <source lang=actionscript3 enclose=none>package</source> (pacote) dentro do arquivo que será salvo com a extensão ''.as'' (todo arquivo ActionScript tem que ter esta extensão). O pacote pode ter um nome (<source lang=actionscript3 enclose=none>package teste</source>, por exemplo), mas não é obrigatório.
 
A próxima linha (<source lang=actionscript3 enclose=none>import flash.display.MovieClip</source>) se refere a todos os pacotes que deveram ser importados que serão usados na compilação do nosso pacote.
 
Já <source lang=actionscript3 enclose=none>public class Main extends MovieClip</source> explicita que a classe é pública (<source lang=actionscript3 enclose=none>public class</source>), ou seja, está aberta para uso em outras partes do projeto.
 
A frase <source lang=actionscript3 enclose=none>extends MovieClip</source> faz com que todos os métodos e atributos do pacote MovieClip seja utilizador pela nossa classe "Main". Isso se chama herança, e veremos mais sobre isso mais para frente.
 
E <source lang=actionscript3 enclose=none>public function Main()</source> é o método construtor da classe. Será a função invocada (no caso, executará a função <source lang=actionscript3 enclose=none>trace()</source>) quando a classe é instanciada. Para instanciar, ou seja, passar os métodos e atributos para uma instância, basta fazer isto:
<source lang=actionscript3>
var main:Main = new Main();
</source>
 
Agora, a variável <source lang=actionscript3 enclose=none>main</source> tem os atributos e métodos da classe <source lang=actionscript3 enclose=none>Main</source>, se tornando uma instância de <source lang=actionscript3 enclose=none>Main</source>.
 
== Caminhos de classes ==
 
Você pode querer organizar os caminhos de classes em pastas para facilitar o seu projeto. Isso é possível descriminando na parte de <source lang=actionscript3 enclose=none>import</source> o local onde está o arquivo ''.as'' externo. Por exemplo: se você tem uma classe que gostaria de usar na pasta ''minhapasta'', você deveria acrescentar a ao arquivo que importará esta linha <source lang=actionscript3 enclose=none>import minhapasta.MinhaClasse;</source>. E no pacote a ser importado, ele deverá ter como caminho <source lang=actionscript3 enclose=none>package minhapasta</source>. Se você preferir importar tudo do pacote, você pode importar como <source lang=actionscript3 enclose=none>import minhapasta.*;</source>.
 
Exemplo:
 
Arquivo ''Mamifero.as'' localizado na pasta ''tipo'' (C:/tipo/Mamifero.as):
<source lang=actionscript3>
package tipo{
import flash.display.MovieClip;
import flash.events.Event;
public class Mamifero extends MovieClip {
private var _nome:String;
private var _idade:Number;
public function Mamifero(nm:String, id:Number){
_nome = nm;
_idade = id;
}
public function exibeDados(){
trace("Nome: " + _nome + "\nIdade: " + _idade);
 
}
}
}
</source>
 
Arquivo ''Homem.as'' que importará ''Mamifero.as'' (C:/Homem.as):
<source lang=actionscript3>
package {
import flash.display.MovieClip;
import flash.events.Event;
import tipo.Mamifero;
public class Homem extends Mamifero {
public var olhos:String;
public function Homem(nm:String, id:Number){
trace(nm);
}
}
}
</source>
 
== Atributos de propriedades de classes ==
{| {{prettytable}}
! Tipo
! Descrição
|-
| internal (padrão)
| Visível para referências dentro do mesmo pacote.
|-
| private
| Visível para referências na mesma classe.
|-
| protected
| Visível para referências na mesma classe e em classes derivadas.
|-
| public
| Visível para referências em todos os lugares.
|-
| static
| Especifica que uma propriedade pertence à classe, ao contrário das ocorrências da classe.
|-
| UserDefinedNamespace
| Nome do espaço para nomes personalizado definido pelo usuário.
|}
 
Para uma explicação mais abrangente sobre atributos de classe [http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7f32.html veja neste link da documentação oficial da Adobe].
 
== Ver também ==
* [[Programação orientada a objetos/Classes e Objetos]] - conceitos
 
[[Categoria:ActionScript|{{SUBPAGENAME}}]]