<?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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nuss... E Agora?!? &#187; Flash</title>
	<atom:link href="http://www.nusseagora.blog.br/tag/flash/feed" rel="self" type="application/rss+xml" />
	<link>http://www.nusseagora.blog.br</link>
	<description></description>
	<lastBuildDate>Fri, 04 Feb 2011 12:56:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>O Princípio da Substituição de Liskov</title>
		<link>http://www.nusseagora.blog.br/principio-da-substituicao-de-liskov</link>
		<comments>http://www.nusseagora.blog.br/principio-da-substituicao-de-liskov#comments</comments>
		<pubDate>Thu, 03 Sep 2009 13:42:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Princípio da Substituição de Liskov]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=627</guid>
		<description><![CDATA[Antes de continuarmos pelos padrões de projeto, acho importante ter aqui uma explicação sobre o Princípio da Substituição de Liskov. Ele é comum nas boas práticas de programação orientada a objetos e seus conceitos aparecem muito ao utilizar diversos padrões de projeto, principalmente no uso de Interfaces em padrões como o State (estado), o Strategy (Estratégia) [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">Antes de continuarmos pelos padrões de projeto, acho importante ter aqui uma explicação sobre o Princípio da Substituição de Liskov. Ele é comum nas boas práticas de programação orientada a objetos e seus conceitos aparecem muito ao utilizar diversos padrões de projeto, principalmente no uso de Interfaces em padrões como o <a href="http://nusseagora.blog.br/marios-maquinas-de-estados-padrao-de-projetos-state-parte-2/" target="_blank">State</a> (estado), o Strategy (Estratégia) ou os diversos tipos de Factories (Fábricas). Apesar de sua popularidade, ainda sim costuma dar um nó na cabeça de quem está começando.</p>
<p><span id="more-627"></span>Historicamente falando, O princípio foi introduzido em 1993 (muito recente, como podem ver) por <a title="Barbara Liskov" href="http://pt.wikipedia.org/wiki/Barbara_Liskov">Barbara Liskov</a> e Jeannette Wing no artigo <em>Family Values: A Behavioral Notion of Subtyping</em>. Segundo ele:</p>
<p><em> </em></p>
<blockquote><p><em>Se q(x) é uma propriedade demonstrável dos objetos x de tipo T. Então q(y) deve ser verdadeiro para objetos y de tipo S onde S é um subtipo de T.</em></p></blockquote>
<p><em> </em></p>
<p><em>“Mas hein?!?”</em> Apesar de parecer complicado, não é. Traduzindo isso para uma linguagem mais simples:</p>
<blockquote><p><em>Se você pode chamar um método q de uma classe TMae, pode também chamar o método q de uma classe TFilha com herança de TMae.</em></p></blockquote>
<p><em> </em></p>
<p><em>“Bom, melhorou bastante. Mas você não pode explicar melhor não, Tiago?”</em> Se uma classe herda de outra classe, cria-se a relação de “é um”. Explicar isso à fundo é material para um outro artigo, mas basta dizer que quando a classe <strong>TFilha</strong> herdou os métodos de <strong>TMae</strong>, ela passou a ser uma <strong>TMae</strong> estendida, melhorada (daí algumas linguagens utilizarem a palavra <strong>extends</strong> para definir herança): ela tem TUDO que uma <strong>TMae</strong> tem, além das coisas que só <strong>TFilha</strong> tem.</p>
<p>Se <strong>TFilha</strong> tem tudo que a <strong>TMae</strong> tem, as chamadas por <strong>TMae</strong> podem receber uma <strong>TFilha</strong> sem o menor problema. Entendamos o código abaixo:</p>
<p>Primeiro criamos uma classe TMae:</p>
<pre class="brush:java">package Classes
{
	public class TMae
	{
		public function TMae()
		{
		}

		public function Voce(): void
		{
			trace ("Eu sou uma TMae");
		}
	}
}</pre>
<p>Como <strong>TMae</strong> precisa de uma filha, vamos criá-la herdando de sua mãe:</p>
<pre class="brush:java">package Classes
{
	import Classes.TMae;

	public class TFilha extends TMae
	{
		public function TFilha(): void
		{
			super(); // Chama o construtor da classe TMae
  		}

		public override function Voce():void
		{
			trace ("Eu sou uma TFilha");
		}

		public function Mae():void
		{
			// chama o método Voce() da classe mãe
			super.Voce();
		}
	}
}</pre>
<p>Vale lembrar que TFilha pode ter seus extras, como fiz com o método Mae(), que exibe a mãe de filha, o método <em>Voce()</em> de <em>super</em>. Para colocar isso tudo para funcionar, precisamos da classe TMain:</p>
<pre class="brush:java">package
{
	import flash.display.MovieClip;
	import Classes.TMae;
	import Classes.TFilha;

	public class TMain extends MovieClip
	{
		public function TMain(): void
		{
			var mae: TMae = new TMae();
			var filha: TFilha = new TFilha();

			trace ("======= MAE =======");
			this.testarLiskov(mae);

			trace ("======= FILHA =======");
			this.testarLiskov(filha);

			trace ("======= MAE DA FILHA =======");
			filha.Mae();

			//trace ("======= MAE DA MAE? =======");
			//mae.Mae();
		}

		public function testarLiskov(obj:TMae)
		{
			obj.Voce();
		}
	}
}</pre>
<p>A saída disso é a seguinte:</p>
<pre>	======= MAE =======
	Eu sou uma TMae
	======= FILHA =======
	Eu sou uma TFilha
	======= MAE DA FILHA =======
	Eu sou uma TMae</pre>
<p>Para terminar, lembrem-se que o Princípio da Substituição de Liskov <strong>não é comutativo</strong>. Ou seja: <strong>podemos trocar a TMae por uma TFilha, mas não uma TFilha por uma TMae</strong>. Se <strong>TFilha</strong> pode possuir mais métodos e atributos  que <strong>TMae, não temos como chamá-los diretamente por TMae. </strong>Para confirmar, basta descomentar a linha <em>mae.Mae()</em> e ver que o compilador não consegue encontrar o método <em>Mae()</em> em TMae (claro, ele é de TFilha!).</p>
<p style="text-align: right;">Saiba mais sobre o <a href="http://pt.wikipedia.org/wiki/Princ%C3%ADpio_da_substitui%C3%A7%C3%A3o_de_Liskov" target="_blank">Princípio na Wikipédia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/principio-da-substituicao-de-liskov/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Meme: Game Design ao extremo</title>
		<link>http://www.nusseagora.blog.br/meme-game-design-ao-extremo</link>
		<comments>http://www.nusseagora.blog.br/meme-game-design-ao-extremo#comments</comments>
		<pubDate>Wed, 05 Aug 2009 22:02:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Meme]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=528</guid>
		<description><![CDATA[Por lembrar de alguns jogos que o Dauto me recomendou durante esses meses, resolvi fazer um meme baseado no artigo de ontem. As regras são simples: Liste quantos jogos em Flash quiser. Preferencialmente aqueles que, por algum motivo de design chamaram sua atenção. Diga o que desses jogos te chamou a atenção, seja em quantas [...]]]></description>
			<content:encoded><![CDATA[<p>Por lembrar de alguns jogos que o Dauto me recomendou durante esses meses, resolvi fazer um meme baseado no artigo de ontem. As regras são simples:</p>
<ul>
<li>Liste quantos jogos em Flash quiser. Preferencialmente aqueles que, por algum motivo de design chamaram sua atenção.</li>
<li>Diga o que desses jogos te chamou a atenção, seja em quantas linhas quiser.</li>
<li>Repasse para outros blogs.</li>
</ul>
<p>Começando a brincadeira, chamo o próprio <a href="http://gamedesign.agilonline.info/" target="_blank">Dauto</a>, o <a href="http://diesoftgames.blogspot.com/" target="_blank">Diego</a>, o <a href="http://mexidao.wordpress.com/" target="_blank">Ricardo</a>, o <a href="http://www.selectgame.com.br/" target="_blank">Flausino</a> e o <a href="http://crocidb.com/blog/" target="_blank">Bruno</a>. A minha lista você encontra <a href="http://nusseagora.blog.br/game-design-ao-extremo-jogos-em-flash-que-eu-recomendo/" target="_blank">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/meme-game-design-ao-extremo/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Wiiflash: Desenvolvendo como gente grande</title>
		<link>http://www.nusseagora.blog.br/wiiflash-desenvolvendo-como-gente-grande</link>
		<comments>http://www.nusseagora.blog.br/wiiflash-desenvolvendo-como-gente-grande#comments</comments>
		<pubDate>Mon, 01 Jun 2009 10:02:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Artigos Exteriores]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[jogo]]></category>
		<category><![CDATA[Wii]]></category>
		<category><![CDATA[Wiiflash]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=532</guid>
		<description><![CDATA[Essa é uma dica rápida para quem quer desenvolver para um videogame de última geração. No ByteArray você o WiiFlash, uma biblioteca em Action Script 3.0 que liga faz a comunicação entre seu Wiimote e o Adobe Flash, Flex ou Air. Graças à comunicação do Wiimote (e seus metaperiféricos Nunchuk, Wii Balance Board...),  basta reconhecê-lo [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">Essa é uma dica rápida para quem quer desenvolver para um videogame de última geração. No <a href="http://www.bytearray.org/" target="_blank">ByteArray</a> você o <a href="http://wiiflash.bytearray.org/" target="_blank">WiiFlash</a>, uma biblioteca em Action Script 3.0 que liga faz a comunicação entre seu Wiimote e o Adobe Flash, Flex ou Air.</p>
<p><span id="more-532"></span>Graças à comunicação do Wiimote (e seus metaperiféricos Nunchuk, Wii Balance Board...),  basta reconhecê-lo como um dispositivo Bluetooth no seu PC, rodar o WiiFlash Server e pronto, começar a desenvolver. O problema maior aqui é a documentação toda em inglês, o que pode afastar aqueles que têm dificuldades na língua... Vejam como uma ótima oportunidade para começar a estudá-la!</p>
<p><a href="http://wiiflash.bytearray.org/?page_id=50" target="_blank">Aqui</a> você baixa o Wiiflash com o código fonte, caso queira modificá-lo ou até mesmo adicionar novas funcionalidades à biblioteca.  Na <a href="http://code.google.com/p/wiiflash/">página do Google Project</a> Hosting do WiiFlash você encontra exemplos de como é simples trabalhar com o joystick. Falando nele, <a href="http://wiiflash.bytearray.org/?page_id=25" target="_blank">esse link </a>explica como fazer seu PC reconhecê-lo, podendo trabalhar com mais de 1 ao mesmo tempo.</p>
<p>Esse vídeo em inglês ensina o necessário para que você inicie seu desenvolvimento. Só fique de olho pois ele foi feito em um Mac... Ou seja: nada de Windows Explorer ou Menu Iniciar.</p>
<p>O site <a href="http://www.wiiplayable.com/" target="_blank">wiiplayable</a> possui uma grande lista de jogos em Flash que podem ser jogados diretamente pelo Wii através do Opera.</p>
<p>Abaixo, uma lista de exemplos de uso do wiiflash:</p>
<ul>
<li><a href="http://wiiflash.bytearray.org/?p=160" target="_blank">Simulação de Vôo</a></li>
<li><a href="http://wiiflash.bytearray.org/?p=182" target="_blank">Wiispray</a></li>
<li><a href="http://www.youtube.com/watch?v=tsAt2CASHUM" target="_blank">Wiirimbau</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/wiiflash-desenvolvendo-como-gente-grande/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Escolha do Flash</title>
		<link>http://www.nusseagora.blog.br/a-escolha-do-flash</link>
		<comments>http://www.nusseagora.blog.br/a-escolha-do-flash#comments</comments>
		<pubDate>Fri, 03 Aug 2007 23:02:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[O Jogo]]></category>
		<category><![CDATA[Problemas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=7</guid>
		<description><![CDATA[Lá atrás, há mais de 1 ano, quando abrimos mão de todas as alterações para retomar o design original, tínhamos que encontrar alguma tecnologia que nos permitisse refazer rapidamente tudo aquilo que já estava feito antes, tanto em código quanto em visual. Foi assim que, conversando com meu parceiro de projeto, o Douglas, fiquei sabendo [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><script src="http://rec6.via6.com/link.php?action=widget&amp;url=http://nusseagora.blogspot.com/2007/08/escolha-do-flash.html" type="text/javascript"></script></span></p>
<p style="text-align: justify; margin-left: 70pt">Lá atrás, há mais de 1 ano, quando abrimos mão de todas as alterações para retomar o design original, tínhamos que encontrar alguma tecnologia que nos permitisse refazer rapidamente tudo aquilo que já estava feito antes, tanto em código quanto em visual.</p>
<p class="MsoNormal" style="text-align: justify">Foi assim que, conversando com meu parceiro de projeto, o Douglas, fiquei sabendo das possibilidades do Flash. Tá, eu já ouvia falar do Flash pra o desenvolvimento de sites, mas tudo que eu sabia dele ainda era muito abaixo do que necessitávamos. Queriamos um programa para fazer um jogo, não um site. Isso não sabíamos se ele faria.</p>
<p class="MsoNormal" style="text-align: justify">Douglas deu uma pesquisada nos fórums e viu que era uma ferramenta muito mais poderosa do que achávamos. Era a época do Flash MX, programa que resolvemos adotar para fazer nosso Jogo. Ele conseguiu ser a coisa mais bipolar que eu já vi na vida.</p>
<p class="MsoNormal" style="text-align: justify">Ao mesmo tempo que era muito fácil fazer diversas coisas no Flash, como animações e interface no geral, era muito complicado seguir nosso paradigma de programação, a <em>Orientação a Objetos</em>. Tudo era muito engambiarrado, cheio dos conhecidos “jeitinhos brasileiros” para que funcionasse. Ele era muito poderoso, mas não supria nossas necessidades. Foi um verdadeiro inferno.</p>
<p class="MsoNormal" style="text-align: justify">Enquanto pesquisávamos a solução de alguns problemas, descobrimos a existência de um tal <em>Ellipsis</em>, um pacote de atualização pro Flash MX q resolvia problemas gravíssimos para nosso projeto. Verdade seja dita: o tal do Ellipsis resolveu muitíssimos dos nossos problemas, mas não todos.</p>
<p class="MsoNormal" style="text-align: justify">Os problemas eram causados pelo tal <em>Action Script 2.0</em>, a linguagem de programação do Flash naquela época. Era em AS2.0 que a gente dizia o que acontecia quando clicávamos em um botão, ou que controlava quem causava dano em quem, o quanto causava, quem estava vivo e quem estava morto.... O problema é que ele pirava em coisas simples por não ser uma linguagem de programação que estava 100% integrada ao paradigma em que fazíamos o projeto.</p>
<p class="MsoNormal" style="text-align: justify">Terminado nosso Projeto Final, continuamos a trabalhar no Action Script 2.0 para acertar aquilo que não estava do jeito que queríamos. Isso durou poucas semanas, graças a Deus, pois ficava cada vez mais penoso trabalhar com aquele catiço. Foi quando, mais uma vez, Douglas avisou-me sobre o Flash.</p>
<p class="MsoNormal" style="text-align: justify">Dessa vez, ele me disse sobre o tal do Action Script 3.0, uma tal revolução aí na programação em Flash. O Action Script 3.0 era completamente Orientado a Objetos, o paradigma que nós escolhemos para fazer nosso jogo. Isso facilitaria muito na hora de passarmos pro Jogo tudo aquilo que queríamos que ele tivesse: agora o Jogo ia ser exatamente aquilo que estávamos querendo que ele fosse.</p>
<p class="MsoNormal" style="text-align: justify">Na próxima eu vou falar um pouco sobre o Action Script 3.0 e as razões de tê-lo mantido como linguagem principal do Jogo. Até lá!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/a-escolha-do-flash/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

