<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Daniela Araujo</title>
	<atom:link href="http://blog.nyan.com.br/pt/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nyan.com.br/pt</link>
	<description>Flash, ActionScript e eu.</description>
	<pubDate>Fri, 10 Apr 2009 02:20:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Abstração?</title>
		<link>http://blog.nyan.com.br/pt/2009/04/09/abstracao/</link>
		<comments>http://blog.nyan.com.br/pt/2009/04/09/abstracao/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 02:10:41 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[OOP]]></category>

		<category><![CDATA[abstração]]></category>

		<category><![CDATA[classes]]></category>

		<category><![CDATA[objetos complexos]]></category>

		<category><![CDATA[reuso]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=230</guid>
		<description><![CDATA[Vamos seguindo com o assunto OOP. Hoje vou falar um pouquinho de abstração.
Para não deixar dúvidas sobre o significado da palavra de forma geral, segue a definição do dicionário para o verbo abstrair:
abstrair
Conjugar
do Lat.  abstrahere
v. tr.,
 fazer abstracção;
 separar mentalmente (as qualidades ou propriedades dos seres);
afastar, desprezar;
v. int.,
 considerar isoladamente;
simplificar;
v. refl.,
distrair-se;
alhear-se;
concentrar-se, absorver-se.
E o substantivo abstração:
abstracção
do [...]]]></description>
			<content:encoded><![CDATA[<p>Vamos seguindo com o assunto OOP. Hoje vou falar um pouquinho de abstração.<br />
Para não deixar dúvidas sobre o significado da palavra de forma geral, segue a definição do dicionário para o verbo abstrair:</p>
<blockquote><p><strong>abstrair</strong></p>
<p>Conjugar<br />
do Lat.  abstrahere</p>
<p>v. tr.,<br />
<span style="color: #ff00ff;"> fazer abstracção;<br />
</span><span style="color: #ff00ff;"> separar mentalmente (as qualidades ou propriedades dos seres);</span><br />
afastar, desprezar;</p>
<p>v. int.,<br />
<span style="color: #ff00ff;"> considerar isoladamente;<br />
simplificar;</span></p>
<p>v. refl.,<br />
distrair-se;<br />
alhear-se;<br />
concentrar-se, absorver-se.</p></blockquote>
<p>E o substantivo abstração:</p>
<blockquote><p><strong>abstracção</strong></p>
<p>do Lat. <em> abstractione</em></p>
<p>s. f.,<br />
<span style="color: #ff00ff;">acção de abstrair;</span><br />
<span style="color: #ff00ff;">separação mental de uma das partes de um todo;</span><br />
estado da pessoa absorta em profunda meditação, contemplação, êxtase, enlevo;<br />
distracção;<br />
<span style="color: #ff00ff;">hipótese</span>.</p></blockquote>
<p>Tudo bem, mas o que é abstração quando se fala de orientação a objetos? É exatamente o que o dicionário diz. Abstração não é algo de OOP, mas é sim uma das bases deste paradigma. E pra quem não sabe o que significa paradigma:</p>
<blockquote><p>paradigma | s. m.</p>
<p>paradigma<br />
s. m.<br />
Gram. Modelo (de conjugação ou de declinação).</p></blockquote>
<p>Sempre fui da idéia de não repetir uma palavra ou um conceito só porque é usado dessa forma e aceitar isso&#8230; Me agrada saber o que eu estou falando. Dizem que OOP é um paradigma de programação (análise e/ou projeto) que se baseia em unidades chamadas objetos. Então vamos abstrair. Ignoremos o português engomadinho. OOP é um modelo ou um jeito de se programar onde a gente trata os pedacinhos do sistema como coisas do mundo real.</p>
<p>Então aproveitando o mundo real, posso dizer que nós somos instâncias da classe Pessoa. E pessoas tem características. Como cor de olhos e cabelos. Mas do que interessa num sistema de cadastro de newsletter a cor dos cabelos do usuário? Absolutamente nada! Então esqueça isso. Se a orientação a objetos diz que devemos programar as coisas como são no mundo real, a abstração, que é uma de suas bases, diz: &#8220;<em><strong>mas não exagere, o mundo real é um sistema muito mais complexo que o seu cadastro de newsletter</strong></em>&#8220;. Devemos criar objetos. Eles devem ser &#8220;vivos&#8221;, mas precisam ser coerentes com seu universo.</p>
<p><strong>Indo além da abstração</strong>, se nessa vida posso lhe dar um conselho sobre OOP é: cuidado com objetos complexos. Normalmente eles são formados por outros objetos. E essa é a parte difícil pra quem sai de uma linguagem procedural para OOP. É ai que as vezes algumas pessoas pecam. Elas misturam tanto que uma Pessoa (do mudo real), é apenas uma pessoa e não um objeto complexo formado por  objetos menores. É como se o cérebro fizesse tudo ao invés de mandar as outras partes fazerem o trabalho delas. O objetivo não é entrar em uma aula de anatomia, então do que estou falando?</p>
<p>Lembra do cadastro de newsletter? Vamos supor que nesse caso o usuário precisa interagir com um formulário. Neste formulário temos dois campos (nome e email) e um botão (enviar), precisaremos ter uma outra telinha, que  irá mostrar a mensagem de status do envio do cadastro e precisamos dar ao usuário a oportunidade de voltar para a tela anterior. Então, o cadastro de newsletter é formado por dois objetos: formulário e tela de resposta. O formulário por sua vez é formado por 3 objetos: dois campos (instâncias de uma mesma classe) e um botão. Enquanto a tela de resposta é formada por 2 objetos: um campo de mensagem e um botão de voltar. Com isso, posso concluir que, um cadastro de newsletter é um objeto complexo, formado por 2 objetos complexos, formado por n objetos&#8230; É assim que se programa em OOP, mas por que dividr tanto? Reuso. Esta é a resposta chave. Mas eu acrescento outras coisas que vem de brinde: organização, flexibilidade e independência entre as partes.</p>
<p>Vamos tentar entender mais sobre isso&#8230; Se eu tiver um objeto do tipo <code>FormResponse</code> (me desculpem a falta de documentação, mas não queria deixar o bloco muito extenso):</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">display</span>.<span style="color: #0066CC;">MovieClip</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #006600;">events</span>.<span style="color: #006600;">MouseEvent</span>;
	<span style="color: #0066CC;">import</span> flash.<span style="color: #0066CC;">text</span>.<span style="color: #0066CC;">TextField</span>;
&nbsp;
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> FormResponse <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">MovieClip</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> FormResponse<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">false</span>;
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">backButton</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, <span style="color: #0066CC;">this</span>.<span style="color: #006600;">handleBackButtonClick</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">message</span>:<span style="color: #0066CC;">String</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">messageText</span>.<span style="color: #0066CC;">text</span> = <span style="color: #0066CC;">message</span>;
			<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">true</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #0066CC;">hide</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">false</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #0066CC;">private</span> <span style="color: #000000; font-weight: bold;">function</span> handleBackButtonClick<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">dispatchEvent</span><span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Event<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;backButtonClick&quot;</span>, <span style="color: #000000; font-weight: bold;">true</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
	<span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Você concorda que seria muito mais simples lá na minha classe principal eu usar um objeto desses, através dos métodos <code>show</code> e <code>hide</code>, ao invés de fazer todas ou parte destas instruções repetidamente sempre que precisasse mostrar uma mensagem?</p>
<p>Se eu não escrevesse esta classe, la na minha instância principal eu teria (supondo que todos estes elementos estão adicionados no palco):</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">this</span>.<span style="color: #006600;">formResponse</span>.<span style="color: #0066CC;">visible</span> = <span style="color: #000000; font-weight: bold;">true</span>;
<span style="color: #0066CC;">this</span>.<span style="color: #006600;">formResponse</span>.<span style="color: #006600;">messageText</span>.<span style="color: #0066CC;">text</span> = <span style="color: #ff0000;">&quot;mensagem&quot;</span>;
&nbsp;
<span style="color: #0066CC;">this</span>.<span style="color: #006600;">formResponse</span>.<span style="color: #006600;">backButton</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>MouseEvent.<span style="color: #006600;">CLICK</span>, handleBackButtonClick<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> handleBackButtonClick<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// seu codigo aqui</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Mas eu posso ter apenas isso:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #0066CC;">this</span>.<span style="color: #006600;">formResponse</span>.<span style="color: #0066CC;">show</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;mensagem&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>E o melhor é que se eu quiser fazer uma animação para a entrada/saída, por exemplo, eu preciso apenas alterar a classe FormResponse, enquanto na versão bagunçada ali em cima eu precisaria mudar o código em todos os lugares onde ele aparece.</p>
<p>Simples, não?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/04/09/abstracao/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Classes Abstratas</title>
		<link>http://blog.nyan.com.br/pt/2009/04/07/classes-abstratas/</link>
		<comments>http://blog.nyan.com.br/pt/2009/04/07/classes-abstratas/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 00:43:55 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[OOP]]></category>

		<category><![CDATA[classes abstratas]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=226</guid>
		<description><![CDATA[Embora o ActionScript ainda não tenha recursos de classes e métodos abstratos, não custa não a gente procurar entender um pouquinho mais de Orientação a Objetos. De repente na próxima versão do AS a gente consegue criar classes que não sejam concretas e daí você já vai saber as razões e os motivos de usá-las.
Normalmente [...]]]></description>
			<content:encoded><![CDATA[<p>Embora o ActionScript ainda não tenha recursos de classes e métodos abstratos, não custa não a gente procurar entender um pouquinho mais de Orientação a Objetos. De repente na próxima versão do AS a gente consegue criar classes que não sejam concretas e daí você já vai saber as razões e os motivos de usá-las.</p>
<p>Normalmente as pessoas comparam muito interfaces com classes abstratas, mas são coisas completamente distintas e com objetivos bem diferentes, por isso, ao contrário da maioria, não vou abordar as duas coisas juntas.</p>
<p><strong>Características das classes abstratas:</strong></p>
<ul>
<li>Pode-se dizer que é uma classe incompleta.</li>
<li>Não pode ser instanciada (perfeitamente justificada pelo item acima). </li>
<li>Pode ou não ter métodos abstratos (tem quem diga que deve ter pelo menos um, caso contrário poderia ser uma classe concreta, mas isso é uma questão de ponto de vista e de quão a risca se deve seguir a teoria).</li>
<li>Uma classe que tenha um método abstrato deve ser obrigatoriamente declarada como abastrata, ou seja, não existe método abstrato fora de uma classe abstrata.</li>
<li>Pode ou não ter métodos concretos.</li>
<li>Quando uma classe concreta herdar uma classe abstrata todos os métodos abstratos devem ser implementados.</li>
<li>Uma classe abstrata pode herdar outra classe abstratas e os métodos abstratos só serão obrigatórios na primeira classe concreta da hierarquia.</li>
</ul>
<p>Assim como com classes concretas e interfaces podemos utiizar delas também para realizar operações polimórficas. </p>
<p>As classes abstratas são bastante usadas como template, se quiser entender um pouquinho mais sobre isso, dá uma olhadinha aqui: <a href="http://blog.nyan.com.br/pt/2009/03/25/template-method/">Template Method</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/04/07/classes-abstratas/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adeus duplicateMovieClip, mas cadê o clone?</title>
		<link>http://blog.nyan.com.br/pt/2009/03/29/adeus-duplicatemovieclip-mas-cade-o-clone/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/29/adeus-duplicatemovieclip-mas-cade-o-clone/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 02:43:24 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[bitmap]]></category>

		<category><![CDATA[BitmapData]]></category>

		<category><![CDATA[clone]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=164</guid>
		<description><![CDATA[No ActionScript 3 não existe o duplicateMovieClip e a DisplayObject não implementa nenhum método de clone (espero que isso não dure muito). Ué, mas qual é o problema? É simples. As vezes não é necessária apenas uma nova instância de um objeto, mas uma que carregue consigo o estado do objeto original. Para isso serve [...]]]></description>
			<content:encoded><![CDATA[<p>No ActionScript 3 não existe o <code>duplicateMovieClip</code> e a <code>DisplayObject</code> não implementa nenhum método de <code>clone</code> (espero que isso não dure muito). Ué, mas qual é o problema? É simples. As vezes não é necessária apenas uma nova instância de um objeto, mas uma que carregue consigo o <strong>estado</strong> do objeto original. Para isso serve (ou serviria) o método <code>clone</code>. Na prática, em um dado momento, elas são iguais e são diferentes. Isso quer dizer que elas possuem <a href="?p=166" target="_self">referência a endereços de memória distintos</a> e se uma delas sofrer alteração  a outra se manterá intacta. Ou seja, no momento em que a instância <code>clone</code> é criada ambas possuem o mesmo <strong>estado</strong>, mas não a mesma <strong>identidade</strong>.</p>
<p>Onde isso faz falta?</p>
<p>Suponha que você queira manter 2 imagens iguais aparecendo na tela para simular um efeito de espelho ou que você precise mostrar um thumb e uma imagem grande e esta imagem é carregada dinâmicamente. Você não pode simplesmente dar <code>addChild</code> uma segunda vez, pois o seu objeto vai se mover. Sim, ele vai sumir do lugar antigo e aparecer no novo lugar, mas por quê? Não era para ser uma referência na memória? Sim, continua sendo, mas&#8230; Todo <code>DisplayObject</code> possui uma propriedade <code>parent</code> que faz referência ao <code>DisplayObjectContainer</code> onde ele foi adicionado. Sempre que o método <code>addChild</code> é chamado o valor da propriedade <code>parent</code> é alterado e consequentemente o <code>DisplayObject</code> deixa de estar no lugar anterior, porque afinal de contas ele só tem um pai.</p>
<p>Para <code>Bitmap</code> felizmente existe um jeitinho, mas para outros <code>DisplayObject</code>, não. Mas o que um <code>Bitmap</code> tem de tão especial? Um objeto <code>Bitmap</code> tem em sua <strong>composição</strong> um objeto <code>BitmapData</code>, e este por sua vez tem o método <code>clone</code> implementado. É na propriedade <code>bitmapData</code> que estão armazenadas todas as características da imagem. Segue um exemplo com um <code>Bitmap</code> gerado pelo código, mais especificamente um quadrado vermelho, veja como é simples:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// criando um bitmap (quadrado)</span>
<span style="color: #000000; font-weight: bold;">var</span> bitmap:Bitmap = <span style="color: #000000; font-weight: bold;">new</span> Bitmap<span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> BitmapData<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #000000; font-weight: bold;">false</span>, 0xBB0000<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// adicionando bitmap no palco</span>
<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>bitmap<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// criando um novo bitmap com o clone do bitmap data</span>
<span style="color: #000000; font-weight: bold;">var</span> bitmapClone:Bitmap = <span style="color: #000000; font-weight: bold;">new</span> Bitmap<span style="color: #66cc66;">&#40;</span>bitmap.<span style="color: #006600;">bitmapData</span>.<span style="color: #006600;">clone</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// modificando o posicionamento p/ enxergarmos os 2 elementos</span>
bitmapClone.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">100</span>;
bitmapClone.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">100</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// adicionando o clone no palco</span>
<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>bitmapClone<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Se uma imagem é carregada dinamicamente o processo é exatamente o mesmo, já que todo objeto <code>Bitmap</code> possui em sua composição um <code>BitmapData</code> sendo ele carregado externamente ou não. Então aproveitamos o que a imagem já tem. Segue um exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// declara e instancia um objeto loader</span>
<span style="color: #000000; font-weight: bold;">var</span> loader:Loader = <span style="color: #000000; font-weight: bold;">new</span> Loader<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// adiciona listener para o carregmento da imagem</span>
loader.<span style="color: #006600;">contentLoaderInfo</span>.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span>Event.<span style="color: #006600;">COMPLETE</span>, handleLoadComplete<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// define uma url para carregamento</span>
<span style="color: #000000; font-weight: bold;">var</span> urlRequest:URLRequest = <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://www.nyan.com.br/ico/it.png&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// inicia o processo de carregamento</span>
loader.<span style="color: #0066CC;">load</span><span style="color: #66cc66;">&#40;</span>urlRequest<span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// handle para o evento de complete</span>
<span style="color: #000000; font-weight: bold;">function</span> handleLoadComplete<span style="color: #66cc66;">&#40;</span>event:Event<span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span> 
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #808080; font-style: italic;">// cria referencia para a imagem carregada</span>
	<span style="color: #000000; font-weight: bold;">var</span> image:Bitmap = loader.<span style="color: #006600;">content</span> as Bitmap;	
&nbsp;
	<span style="color: #808080; font-style: italic;">// adiciona a imagem no palco</span>
 	<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>image<span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// cria um novo bitmap e adiciona um clone </span>
	<span style="color: #808080; font-style: italic;">// do BitmapData contido no Bitmap carregado</span>
	<span style="color: #000000; font-weight: bold;">var</span> imageCopy:Bitmap = <span style="color: #000000; font-weight: bold;">new</span> Bitmap<span style="color: #66cc66;">&#40;</span>image.<span style="color: #006600;">bitmapData</span>.<span style="color: #006600;">clone</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
	<span style="color: #808080; font-style: italic;">// adicionando copia no palco</span>
	<span style="color: #0066CC;">this</span>.<span style="color: #006600;">addChild</span><span style="color: #66cc66;">&#40;</span>imageCopy<span style="color: #66cc66;">&#41;</span>;
	<span style="color: #808080; font-style: italic;">// mudando posicionamento para enxergarmos</span>
	imageCopy.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">100</span>;
&nbsp;
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Tem mais uma coisa interessante nisso: se você declarar um novo <code>Bitmap</code>, atribuindo a ele um <code>BitmapData</code> existente mas sem chamar o método <code>clone</code>, também vai funcionar. A diferença é que se você fizer qualquer alteração no <code>bitmapData</code> através de qualquer um dos <code>Bitmaps</code>, ambos serão alterados, o que não acontece quando invocamos o método <code>clone</code>, pois ele sempre retorna uma nova instância. Este é um bom exemplo pra entender a diferença entre instâncias e referências.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/29/adeus-duplicatemovieclip-mas-cade-o-clone/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A febre das redes sociais</title>
		<link>http://blog.nyan.com.br/pt/2009/03/29/a-febre-das-redes-sociais/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/29/a-febre-das-redes-sociais/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 00:25:13 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[Abacatices]]></category>

		<category><![CDATA[facebook]]></category>

		<category><![CDATA[orkut]]></category>

		<category><![CDATA[redes sociais]]></category>

		<category><![CDATA[tempo]]></category>

		<category><![CDATA[twitter]]></category>

		<category><![CDATA[virtual]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=245</guid>
		<description><![CDATA[Parece que todo dia surge uma rede social nova (ou sou eu que não consigo acompanhar esse &#8220;mercado&#8221;). Eventualmente recebo dos meus amigos un convite para participar de alguma rede social que nunca ouvi falar. Mas por que participar de tantas? O engraçado é como essas coisas vão tomando conta do nosso tempo e a [...]]]></description>
			<content:encoded><![CDATA[<p>Parece que todo dia surge uma rede social nova (ou sou eu que não consigo acompanhar esse &#8220;mercado&#8221;). Eventualmente recebo dos meus amigos un convite para participar de alguma rede social que nunca ouvi falar. Mas por que participar de tantas? O engraçado é como essas coisas vão tomando conta do nosso tempo e a maioria das pessoas não se dá conta disso. </p>
<p>Eu sempre achei o Twitter ridículo (embora eu tenha um), mas trabalhar com internet e ter que se manter atualizado (ou simplesmente ser curioso) te força a conhecer certas coisas ao menos pra saber do que você está falando. Pois é, foi assim que criei a minha conta no Twitter. Hoje não acho que ele seja ridículo ou inútil, mas a maneira como é utilizado pela maioria das pessoas não me parece muito inteligente. Nunca gostei de twittar, mas de ler os twits alheios (a febre é tanta que virou até verbo). Depois de um tempo comecei a parceber que este novo hábito tomava uma parte do meu dia e isto de certa forma começou a me preocupar, afinal de contas que informação útil tem em &#8220;hoje não consegui lavar minhas calcinhas&#8221;, &#8220;meu time perdeu de novo&#8221;, &#8220;alguém viu minha xícara por aí?&#8221;, &#8220;não quero mais trabalhar&#8221;, etc. Me parece que o mundo humano, real e tátil está caindo em desuso. As pessoas não conversam mais e as redes sociais estão virando uma forma de escape ou uma forma de não se sentir só.</p>
<p>Na época que o orkut estava em alta, eu era uma anti-orkut principalmente porque nunca fui favorável à modismos. Mas me inscrevi lá também. Uma porque não tinha idéia do que existia lá dentro e outra porque boiava completamente quando meus amigos entravam no assunto. Enquanto era uma rede social tudo bem, mas virou uma rede de frescuras para continuar mantendo as pessoas. Juro que até tentei ter um daqueles bonequinhos que indicam o seu humor e interage com seus amigos.  Hoje minha conta é um pouco abandonada: me conecto vez ou outra pra ver se tenho algum recado, respondo e paro por aí. </p>
<p>Enquanto o orkut foi (ou é, não sei mais) modinha no Brasil, o facebook é a rede social do momento na Itália. E meu interesse nessa rede foi exatamente este. Entrar em contato com parte dessas pessoas para ter mais contato com a língua e com a cultura que sempre me dispertaram tanta curiosidade. É, rendeu. Mas se você faz parte da minha rede de amigos, não me convide para usar aqueles diabos de aplicações. Esse tipo de coisa consome muito tempo.</p>
<p>E por falar nisso, muitas aplicações consideradas 2.0 (não vou entrar nesse mérito) enxergaram a rede social como um nicho para se espalharem ainda mais. É como o netvibes onde você pode ter sua página pública. Ou o delicious onde você tem seu networking. Sinceramente, os meus viraram um aglomerado de informações. Meu delicious tem mais links do que eu consigo ver. Tem coisas que estão lá dentro. Eu sei que estão&#8230; mas não tenho a menor idéia de onde. Ter a informação é bom, mas é mais importante saber o que guardar.</p>
<p>No fim das contas, todo mundo vive reclamando que não tem tempo para fazer certas coisas. Será que não temos realmente tempo ou estamos dedicando nosso tempo livre para fazer coisas sem importância? Sei lá. Algumas vezes tento me imaginar desconectada de toda e qualquer rede social na internet&#8230; mas acho que isso é meio impossível. É como se desconctar do mundo. Então me pergunto: qual é o limite entre viver no real ou no virtual, considerando que aparentemente tudo isso virou uma coisa só?</p>
<p>&#8230;</p>
<p>O mais bizarro de tudo é que esse post vai parar automaticamente no meu twitter e no meu facebook e talvez você tenha vindo até aqui através deles.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/29/a-febre-das-redes-sociais/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Forçando o download de arquivos no Flash</title>
		<link>http://blog.nyan.com.br/pt/2009/03/28/forcando-o-download-de-arquivos-no-flash/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/28/forcando-o-download-de-arquivos-no-flash/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 19:29:10 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Flash]]></category>

		<category><![CDATA[download]]></category>

		<category><![CDATA[FileReference]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=233</guid>
		<description><![CDATA[Quantas vezes já não passamos pela situação onde nosso arquivo era uma imagem, um mp3, um pdf, etc e não queríamos que ele abrisse no navegador, mas ao invés disso desejavamos forçar o download?
Não é necessário comprimir o arquivo (gerar um zip, um rar ou qualquer outra coisa) ou forçar pelo php, .net, etc. Você [...]]]></description>
			<content:encoded><![CDATA[<p>Quantas vezes já não passamos pela situação onde nosso arquivo era uma imagem, um mp3, um pdf, etc e não queríamos que ele abrisse no navegador, mas ao invés disso desejavamos forçar o download?</p>
<p>Não é necessário comprimir o arquivo (gerar um zip, um rar ou qualquer outra coisa) ou forçar pelo php, .net, etc. Você pode usar a  classe <code>FileReference</code>. Todo mundo lembra dessa classe na hora de fazer upload, mas a maioria esquece o método <code>download</code> que abre a caixa de diálogo no navegador para salvar o arquivo. </p>
<p>O código é muito simples:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// definindo url do arquivo</span>
<span style="color: #000000; font-weight: bold;">var</span> fileURL:URLRequest = <span style="color: #000000; font-weight: bold;">new</span> URLRequest<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;http://www.nyan.com.br/ico/feed.png&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #808080; font-style: italic;">// instancionado objeto file reference</span>
<span style="color: #000000; font-weight: bold;">var</span> fileReference:FileReference = <span style="color: #000000; font-weight: bold;">new</span> FileReference<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
fileReference.<span style="color: #006600;">download</span><span style="color: #66cc66;">&#40;</span>fileURL<span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Só não esqueça de uma coisa: O Flash Player 10 sofreu várias atualizações de segurança e uma delas está diretamente relacionada à classe <code>FileReference</code>. Não é possivel chamar os métodos <code>download</code> ou <code>browser</code> se não for através de uma interação do usuário (pressionando uma tecla ou clicando com o mouse, por exemplo).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/28/forcando-o-download-de-arquivos-no-flash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Template Method</title>
		<link>http://blog.nyan.com.br/pt/2009/03/25/template-method/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/25/template-method/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 04:22:11 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[Design Patterns]]></category>

		<category><![CDATA[OOP]]></category>

		<category><![CDATA[classes abstratas]]></category>

		<category><![CDATA[template method]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=211</guid>
		<description><![CDATA[O Template Method é um padrão de projeto que tem como objetivo definir uma base do código (algorítimo ou funcionalidade), deixando que as subclasses completem as tarefas, mas sem alterar a estrutura base.
Se você reparar bem, quando falamos de aproveitamento de código em OOP, esse padrão é a base de quase tudo - ou a [...]]]></description>
			<content:encoded><![CDATA[<p>O <em>Template Me</em><em>thod</em> é um padrão de projeto que tem como objetivo definir uma base do código (algorítimo ou funcionalidade), deixando que as subclasses completem as tarefas, mas sem alterar a estrutura base.</p>
<p>Se você reparar bem, quando falamos de aproveitamento de código em OOP, esse padrão é a base de quase tudo - ou a base de quase tudo se parece muito com ele. O problema dele em relação ao ActionScript é que ele é baseado em classes e métodos abstratos e como a linguagem ainda não disponibiliza este recurso, podemos apenas tapar um olho e simular o padrão.</p>
<p><strong>Nota</strong>: Eu particularmente gosto de usar o prefixo <code>Base</code> em todas as classes que crio em AS e que em teoria deveriam ser classes abstratas. Ao menos assim existe uma forma simples e rápida de identificá-las dentro da estrutura de um projeto ou <em>framework</em>.</p>
<p>Segue um exemplo extremamente simples (e sem funcionalidade) só para entendermos alguns conceitos. </p>
<p>Classe &#8220;abstrata&#8221;:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> BaseTest <span style="color: #0066CC;">extends</span> <span style="color: #0066CC;">MovieClip</span>
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> BaseTest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">// definindo um método que não pode ser sobrescrito</span>
		<span style="color: #0066CC;">public</span> final <span style="color: #000000; font-weight: bold;">function</span> finalMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// chamada a método opcional (gancho)</span>
                        <span style="color: #0066CC;">this</span>.<span style="color: #006600;">hookMethod</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
                        <span style="color: #808080; font-style: italic;">// implementação padrão</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">x</span> = <span style="color: #cc66cc;">200</span>;
&nbsp;
			<span style="color: #808080; font-style: italic;">// chamada ao método que será sobrescrito</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">customMethod</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">// método que deveria ser abstrato</span>
		protected <span style="color: #000000; font-weight: bold;">function</span> customMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// implementação na classe concreta</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">// método gancho que pode ou não ser sobrescrito</span>
		protected override <span style="color: #000000; font-weight: bold;">function</span> hookMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
		<span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Classe concreta:</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;">package
<span style="color: #66cc66;">&#123;</span>
	<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CustomTest <span style="color: #0066CC;">extends</span> BaseTest
	<span style="color: #66cc66;">&#123;</span>
		<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> CustomTest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
		<span style="color: #66cc66;">&#123;</span>
		<span style="color: #66cc66;">&#125;</span>
&nbsp;
		<span style="color: #808080; font-style: italic;">// método que deveria ser abstrato</span>
		protected override <span style="color: #000000; font-weight: bold;">function</span> customMethod<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>:<span style="color: #0066CC;">void</span>
		<span style="color: #66cc66;">&#123;</span>
			<span style="color: #808080; font-style: italic;">// implementação personalizada obrigatória</span>
			<span style="color: #0066CC;">this</span>.<span style="color: #006600;">y</span> = <span style="color: #cc66cc;">45</span>;
                <span style="color: #66cc66;">&#125;</span>
        <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Neste padrão as chamadas normalmente ocorrem mem modo inverso daqueles que normalmente aplicamos. Ao invés de fazer a chamada ao código comum (ou código reutilizado) na classe filha (<code>CustomTest</code>), fazemos as chamadas pela classe pai (<code>BaseTest</code>). Assim, é possivel garantir o fluxo de execução das tarefas pelo objeto.</p>
<p>Podemos observar também que na classe &#8220;abstrata&#8221; os métodos públicos (que são implementados) são declarados com a palavra reservada <code>final</code>, isto significa (garante) que ele não poderá ser sobrescrito. Os métodos personalizáveis, ao contrário, são declarados como <code>protected</code> permitindo que sejam sobrescritos através de herança.</p>
<p>As principais chamadas que a classe &#8220;abstrata&#8221; faz são as seguintes:</p>
<p><strong>Métodos concretos </strong></p>
<p>Da classe abstrata - implementações úteis a todas as classes filhas -, da classe concreta ou de outras classes.</p>
<p><strong>Métodos abstratos</strong></p>
<p>Devem obrigatoriamente ser sobrescritos. Isto é um problema pois não conseguimos garantir a sobrescrita de um método utilizando ActionScript a não ser que seja por interfaces.</p>
<p><strong>Métodos ganchos</strong></p>
<p>Podem ou não ser sobrescritos e são uma implementação opcional. É uma maneira de utilizar herança de forma controlada. Estes métodos não possuem implementação na classe abstrata.</p>
<p> </p>
<p>É interessante que ao usar essa idéia em ActionScript seja definido um padrão para os nomes dos métodos, que facilite a identificação do métodos que são obrigatórios (teoricamente abstratos) e dos que são opcionais, ainda que não se tenha a garantia de um método abastrato.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/25/template-method/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Não existe programador Flash</title>
		<link>http://blog.nyan.com.br/pt/2009/03/24/nao-existe-programador-flash/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/24/nao-existe-programador-flash/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 02:56:09 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/?p=156</guid>
		<description><![CDATA[Na época em que programava outras coisas (que não flash, ou melhor, ActionScript) sempre ouvi o discurso do bom programador ou do mau programador e, outro dia, quando esperava o ônibus para voltar pra casa depois do trabalho comecei a pensar no que seria um bom ou um mau  programador flash. Depois de ir e [...]]]></description>
			<content:encoded><![CDATA[<p>Na época em que programava outras coisas (que não flash, ou melhor, ActionScript) sempre ouvi o discurso do bom programador ou do mau programador e, outro dia, quando esperava o ônibus para voltar pra casa depois do trabalho comecei a pensar no que seria um bom ou um mau  programador flash. Depois de ir e voltar inúmeras vezes com meus pensamentos, cheguei a conclusão que não existe programador flash e por isso minhas idéias já eram baseados em uma coisa sem fundamento. </p>
<p>Se não existe, onde fica toda essa galera que programa para flash? Sinceramente, eu não pensei muito no todo, mas na pequena parcela que pode ser chamada de programador. Ou você é programador ou você não é e isso independe da linguagem que você decidiu se especializar. Um programador conhece e domina lógica - e nos dias de hoje OOP é fundamental - e depois só precisa aplicar isso na linguagem dos seus sonhos (Tá, não é só isso, mas não quero ficar fazendo listas de x ou y).</p>
<p>Mas, segundo o dicionário essa é a definição de programador:</p>
<blockquote><p>Inform.,<br />
aquele que cria programas de computador.</p></blockquote>
<p>Aposto que quem escreveu essa definição não é programador e nunca teve que alterar um código que mais parecia uma macarronada ou as paredes de um quarto pintadas por uma criança de 5 anos&#8230; E sendo realista, não existe programador flash principalmente porque o Flash não é uma linguagem de programação e sim um aplicativo. Só que isso é um erro de nomeclatura ( que cá pra nós devia ser corrigido ) e não é o foco desse post, então eu vou dividir o universo do &#8220;programador flash&#8221; em 2 partes principais: os programadores e os não-programadores.</p>
<p>O cara que faz funcionar, entende como funciona o programa, fuçou horrores na vida, mas parou por aí é um não-programador. Ele conhece sintaxe, mas normalmente não sabe exatamente o que está fazendo. Ele só sabe que vai funcionar porque está assim no exemplo que ele achou na internet ou porque ele já fez 500 vezes desse jeito. Infelizmente, é o que mais tem no mercado e digo infelizmente não pelo mercado apenas, mas pelo futuro profissional dessas pessoas. Boa parte de quem programa para Flash tem um início sem embasamento teórico nenhum: são designers, publicitários, curiosos&#8230; Mas essas pessoas nunca serão programadores ActionScript? Depende de cada um. Conheço ótimos programadores que começaram assim, na curiosidade. Um programador tem que ser capaz de entender a lógica e também de produzir coisas lógicas ( e que de preferência não tenham lógica só na cabeça dele, que é o que acontece muito nesses casos ). </p>
<p>O Programador ActionScript sabe o que está fazendo, mas ele pode ter muita ou pouca experiência. Ele possui n níveis de especilização e isso varia conforme sua experiência com a linguagem, mas não considere isso como anos trabalhados. </p>
<p>Mas onde está o bom ou o mal programador? Bem, pra mim, em termos de código ele nã existe. O que define se alguém é um mau programador ( ou mau profissional ) são suas questões éticas e seus princípios. Cada um deve conhecer os seus limites, fazer o que está de acordo com suas habilidades e ter noção de quanto pode arriscar as coisas em um projeto deixando isso muito claro para todos os envolvidos. </p>
<p>Alguém que realmente é bom ( e bom em qualquer coisa ) está sempre procurando acompanhar a evolução do nicho no qual está inserido. Sempre dando uma olhadinha aqui e outra ali tentando melhorar sua lógica, seu código e sua experiência. Aliás, um programador mais experiente normalmente agrega velocidade aos projetos, mas não quer dizer que um menos experiente necessáriamente vá produzir um código pior, ele só vai levar mais tempo. </p>
<p>Em fim&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/24/nao-existe-programador-flash/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Como não esquecer padrões de projeto?</title>
		<link>http://blog.nyan.com.br/pt/2009/03/21/como-nao-esquecer-padroes-de-projeto/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/21/como-nao-esquecer-padroes-de-projeto/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 04:39:31 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[Abacatices]]></category>

		<category><![CDATA[Design Patterns]]></category>

		<category><![CDATA[OOP]]></category>

		<category><![CDATA[UML]]></category>

		<category><![CDATA[camisetas]]></category>

		<category><![CDATA[guia]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=191</guid>
		<description><![CDATA[Não que eu esteja fazendo propaganda, não é isso! Mas adorei as camisetas com diagramas UML que acabei achando através de um post do blog do Jason McDonald. Elas são ótimas! Quer coisa melhor pra fixar Design Patterns que vestir a camisa? Estou bem tentada a adquirir uma.

 
E pra não dizer que é só um surto [...]]]></description>
			<content:encoded><![CDATA[<p>Não que eu esteja fazendo propaganda, não é isso! Mas adorei as camisetas com diagramas UML que acabei achando através de um <a href="http://www.mcdonaldland.info/2007/11/28/40/" target="_blank">post</a> do blog do<a href="http://www.mcdonaldland.info/" target="_self"> Jason McDonald</a>. Elas são ótimas! Quer coisa melhor pra fixar Design Patterns que vestir a camisa? Estou bem tentada a adquirir uma.</p>
<p style="text-align: center;"><a href="http://www.cafepress.com/codergear/5070993" target="_blank"><img class="aligncenter" title="Camiseta Observer" src="http://images2.cafepress.com/product/240401212v4_240x240_Back_Color-AshGrey.jpg" alt="" width="240" height="240" /></a></p>
<p style="text-align: center;"> </p>
<p>E pra não dizer que é só um surto por camisetas &#8220;<em>nerd</em>&#8220;, tem também um guia de referência rápida feito pelo próprio Jason McDonald, com um resuminho de cada Design Patterns do GoF. Para ver o PDF clique na imagem abaixo. </p>
<p style="text-align: center;"> </p>
<p style="text-align: center;"><a href="http://www.mcdonaldland.info/files/designpatterns/designpatternscard.pdf" target="_blank"><img class="aligncenter" src="http://www.mcdonaldland.info/files/designpatterns/page1thumb.png" alt="" width="415" height="541" /></a></p>
<p style="text-align: center;"><a href="http://www.mcdonaldland.info/files/designpatterns/designpatternscard.pdf" target="_blank"><img class="aligncenter" src="http://www.mcdonaldland.info/files/designpatterns/page2thumb.png" alt="" width="415" height="541" /></a></p>
<p style="text-align: center;"> </p>
<p style="text-align: left;">O post é antigo, mas eu adorei. E você?</p>
<p style="text-align: left;"> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/21/como-nao-esquecer-padroes-de-projeto/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Objetos: instâncias e referências</title>
		<link>http://blog.nyan.com.br/pt/2009/03/20/objetos-instancias-e-referencias/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/20/objetos-instancias-e-referencias/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 02:47:20 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[OOP]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/pt/?p=166</guid>
		<description><![CDATA[Instâncias e referências são coisas completamenete distintas. É importante entender que quando você declarar uma variável não está sendo criada nenhuma instância. 

// declarando variável
var content:MovieClip;


Quando um objeto for criado - uma nova instância pode ser gerada através do operador new -, obtém-se uma referência, que é armazenada na variável.

// cria instância de MovieClip
content = new [...]]]></description>
			<content:encoded><![CDATA[<p>Instâncias e referências são coisas completamenete distintas. É importante entender que quando você declarar uma variável não está sendo criada nenhuma instância. </p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// declarando variável</span>
<span style="color: #000000; font-weight: bold;">var</span> content:<span style="color: #0066CC;">MovieClip</span>;</pre></div></div>

<p style="text-align: center;"><img class="size-full wp-image-175 aligncenter" title="variavel" src="http://blog.nyan.com.br/pt/wp-content/uploads/2009/03/variavel.jpg" alt="variavel" width="280" height="64" /></p>
<p>Quando um objeto for criado - uma nova instância pode ser gerada através do operador <code>new</code> -, obtém-se uma referência, que é armazenada na variável.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// cria instância de MovieClip</span>
content = <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #0066CC;">MovieClip</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p style="text-align: center;"><img class="size-full wp-image-176 aligncenter" title="instancia" src="http://blog.nyan.com.br/pt/wp-content/uploads/2009/03/instancia.jpg" alt="instancia" width="280" height="69" /></p>
<p>Neste exemplo, <code>content</code> é uma variável que armazena um endereço de memória, no qual existe um objeto do tipo <code>MovieClip</code>. A variável <code>content</code> mantém apenas a referência para o objeto e não o objeto em si. Assim, numa atribuição como a mostrada abaixo, não será criado outro objeto <code>MovieClip</code>, mas uma nova referência para ele.</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">// atribuindo referencia de content a content2</span>
<span style="color: #000000; font-weight: bold;">var</span> content2:<span style="color: #0066CC;">MovieClip</span> = content;</pre></div></div>

<p style="text-align: center;"><img class="size-full wp-image-177 aligncenter" title="referencia" src="http://blog.nyan.com.br/pt/wp-content/uploads/2009/03/referencia.jpg" alt="referencia" width="280" height="102" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/20/objetos-instancias-e-referencias/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Convenções de código</title>
		<link>http://blog.nyan.com.br/pt/2009/03/14/convencoes-de-codigo/</link>
		<comments>http://blog.nyan.com.br/pt/2009/03/14/convencoes-de-codigo/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 15:21:17 +0000</pubDate>
		<dc:creator>Daniela</dc:creator>
		
		<category><![CDATA[ActionScript]]></category>

		<category><![CDATA[ag2]]></category>

		<category><![CDATA[coding conventions]]></category>

		<guid isPermaLink="false">http://blog.nyan.com.br/?p=78</guid>
		<description><![CDATA[Não que seja uma coisa do ActionScript, mas me surgiu enquanto programando AS3 na AG2.
Um dia o Tiago Schenkel, programador ActionScript da AG2 Pelotas, me mandou um link de convenções de código e melhores práticas para Flex. Uma documentção da própria Adobe - veja aqui -  e disse:
Dani, essa tu vai gostar!
É, realmente gostei. Sempre vi uma [...]]]></description>
			<content:encoded><![CDATA[<p>Não que seja uma coisa do ActionScript, mas me surgiu enquanto programando AS3 na AG2.</p>
<p>Um dia o Tiago Schenkel, programador ActionScript da AG2 Pelotas, me mandou um link de convenções de código e melhores práticas para Flex. Uma documentção da própria Adobe - <a href="http://opensource.adobe.com/wiki/display/flexsdk/Coding+Conventions">veja aqui</a> -  e disse:</p>
<blockquote><p>Dani, essa tu vai gostar!</p></blockquote>
<p>É, realmente gostei. Sempre vi uma penca de padrões quando vivia no universo sistemas, mas Flash na AG2 está no universo interfaces. Fiquei com aquele documento em mente e comecei a me lembrar o quanto a <a href="http://www.marie.art.br" target="_blank">Lú</a> falava que não conseguia entender a organização do código do Fernando e vice-versa. Até que um dia o <a href="http://www.mozartpetter.com/" target="_blank">Mozart</a> me procurou pra falar que precisávamos  adotar alguma convenção de código. E de fato ele tinha razão. Eu tinha/tenho meus vícios de código, assim como cada um. Agora vivemos num universo de constante adaptação, mas onde todos devem seguir juntos. </p>
<p>Essa é só mais uma história do mundo real onde a ausência de padronização pode gerar classes confusas e atrasar o trabalho como um todo. Este post é só um pensamento sobre isso. As vezes dá pra se questionar se a tudo não fica burocrático demais. Acho que não! A diferença é que toda uma equipe mantém os mesmos  &#8221;vícios&#8221; e assim um pode continuar o trabalho do outro sem ficar varrendo uma classe para saber onde foram colocados os getters. </p>
<p>Como é o tipo de documento a ser mantido e atualizado por um grupo de pessoas tende a ficar cada vez melhor. Os hábitos vão sendo adotados gradualmente e com o tempo todos escrevem classes muito mas legíveis. Consequentemente, sistemas muito mais claros.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nyan.com.br/pt/2009/03/14/convencoes-de-codigo/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
