<?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>FZTech &#187; Design Patterns</title>
	<atom:link href="http://fztech.dukitan.com/tag/design-patterns/feed/" rel="self" type="application/rss+xml" />
	<link>http://fztech.dukitan.com</link>
	<description>rand() % {Programação, GameDev, TecnoInfo, Software Livre, Null}</description>
	<lastBuildDate>Thu, 05 Jan 2012 16:57:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Repositório de Padrões</title>
		<link>http://fztech.dukitan.com/2010/09/29/repositorio-de-padroes/</link>
		<comments>http://fztech.dukitan.com/2010/09/29/repositorio-de-padroes/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 04:51:42 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[TecnoInfo]]></category>
		<category><![CDATA[Comunidade]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[SugarLoafPlop]]></category>
		<category><![CDATA[Vídeo]]></category>

		<guid isPermaLink="false">http://fztech.dukitan.com/?p=497</guid>
		<description><![CDATA[Durante o SugarLoafPlop2010[1] houve a palestra do prof. Jerffeson (UECE) falando sobre a iniciativa de criação de um repositório[2] de padrões. Em resumo foi apresentada a proposta do repositório de padrões para catalogação dos padrões  publicados nas conferências do SugarLoafPlop,  onde na verdade o repositório funcionará como um grande indexador de conteúdo para localização dos <a href='http://fztech.dukitan.com/2010/09/29/repositorio-de-padroes/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Durante o SugarLoafPlop2010[1] houve a palestra do prof. Jerffeson (UECE) falando sobre a iniciativa de criação de um repositório[2] de padrões. Em resumo foi apresentada a proposta do repositório de padrões para catalogação dos padrões  publicados nas conferências do SugarLoafPlop,  onde na verdade o repositório funcionará como um grande indexador de conteúdo para localização dos padrões por meio de diversas opções.</p>
<p style="text-align: justify;">Abaixo podemos ver na integra o vídeo da apresentação do repositório ocorrido no dia 25/09/2010 durante o Sugar Loaf Plop 2010.<span id="more-497"></span></p>
<p><a href="http://www.youtube.com/watch?v=_S7T3dbAsV0">http://www.youtube.com/watch?v=_S7T3dbAsV0</a></p>
<p><a href="http://www.youtube.com/watch?v=LIJWCPfSTo0">http://www.youtube.com/watch?v=LIJWCPfSTo0</a></p>
<p>Referências</p>
<ol>
<li><a href="http://wiki.dcc.ufba.br/SugarLoafPlop/WebHomePt">http://wiki.dcc.ufba.br/SugarLoafPlop/WebHomePt</a></li>
<li><a href="http://uspr.yolasite.com/">http://uspr.yolasite.com/</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2010/09/29/repositorio-de-padroes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EES &#8211; Defesa de Monografia &#8211; Catálogo de Padrões para Jogos</title>
		<link>http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/</link>
		<comments>http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 00:07:58 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[GBFramework]]></category>
		<category><![CDATA[I]]></category>

		<guid isPermaLink="false">http://fztech.dukitan.com/?p=452</guid>
		<description><![CDATA[A coordenação do curso de Especialização em Engenharia de Software com Ênfase em Padrões de Software da UECE tem o prazer de convidá-lo para a Defesa de Monografia do aluno David de Almeida Ferreira, intitulada &#8220;Catálogo de Padrões para Jogos&#8221;. A defesa ocorrerá no dia 14/06/2010 (segunda-feira) a partir das 16:00 no prédio da Pós-graduação <a href='http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div>
<blockquote>
<div style="text-align: justify">A coordenação do curso de Especialização em  Engenharia de Software com Ênfase em Padrões de Software da UECE tem o  prazer de convidá-lo para a <strong>Defesa de Monografia</strong> do aluno <strong>David de Almeida Ferreira</strong>,  intitulada &#8220;Catálogo de Padrões para Jogos&#8221;. A defesa  ocorrerá no dia <strong>14</strong><strong></strong><strong>/</strong>06/2010 (segunda-feira) a partir das <strong>16:00 </strong>no prédio da Pós-graduação e Pesquisa em Computação da UECE.<span id="more-452"></span></div>
<div>
<div>
<p>Todos os interessados estão  convidados para estarem presentes na ocasião.</p>
<p>Atenciosamente,</p>
</div>
</div>
<div><strong>A Coordenação</strong></div>
</blockquote>
<p>É amigos, agora finalmente estarei dando mais um passo para a conclusão da minha primeira pós graduação, quem tiver o interesse de participar fique a vontade, as restrições que existem são devido a formalidades tradicionais, como por exemplo duração máxima de 30 minutos de apresentação, o que de fato creio ser um tempo muito curto para falar de um trabalho bem extenso, ainda mais que são 5 padrões de projeto a serem apresentados, espero em breve poder oferecer o tema para alguma palestra do GDJCE.</p>
<p>O  resumo do trabalho:</p>
<p style="text-align: justify">Com o amadurecimento da produção de software, percebemos cada vez mais a aplicação das diretrizes da Engenharia de Software, o que traz reconhecidamente melhores resultados do que os software montados de forma caótica. No universo de desenvolvimento de jogos, podemos perceber, ainda um certo grau de amadorismo em relação a produção de software convencionais, pois poucos são os profissionais e empresas, que conhecem ou aplicam as diretrizes utilizadas no desenvolvimento de softwares, onde termos como metodologia, processo, disciplinas, qualidade, conformidade e boas práticas, fazem parte do dia-a-dia do desenvolvimento, geralmente demonstrando um certo grau de maturidade, permitindo assim um controle maior do que é produzido, como produzido-lo e como averiguar sua conformidade com o esperado. Focando na etapa de programação, ou seja, nas questões arquiteturais e de implementação, podemos observar mais claramente uma ausência quase total de informações ou referências sobre a utilização de Design Patterns em jogos, indo além do código, observa-se a falta de literatura especializada, de congressos e discussões focando no assunto. Com isso em mente estamos propondo um trabalho focando em Design Patterns para Jogos, ou seja, estamos documentando alguns padrões percebidos durante o desenvolvimento de jogos, com o objetivo de auxiliar na resolução de problemas encontrados durante o desenvolvimento, além de estimular a aplicação e catalogação de padrões de projeto focados especificamente em jogos. Com base nesta idéia, partimos para a catalogação inicial de alguns padrões de software, os quais são: <strong>1.Font Mapping</strong> 1.1 Intenção Permitir que aplicações multimídias possam escrever informações(textos) na tela para o usuário. 1.2 Motivação Estamos desenvolvendo uma aplicação multimídia como por exemplo um player de vídeo ou um jogo eletrônico, porém necessitamos exibir informações para o usuário, geralmente essas informações são textos composto por caracteres alfa-numéricos, que representam informações sobre o estado do jogo ou do filme. Nestes casos na maioria das vezes desejamos utilizar textos de fontes estilizadas, quer seja pelo seu formato ou pelo estilo utilizado, como por exemplo o uso de sombras, bordas ou degradê. <strong>2.Resource Manager</strong> 2.1 Intenção Permitir que uma aplicação gerencie os recursos multimídia necessários para seu funcionamento. 2.2 Motivação Muitas vezes, estamos desenvolvendo uma aplicação ou um jogo eletrônico, que fará uso de recursos externos ao código fonte, como por exemplo: arquivos de imagens, arquivos de vídeos e arquivos de som. Sendo que diversas vezes uma mesma imagem ou som é utilizado por diversos elementos do jogo, como por exemplo: A animação de uma explosão, que contém 6 quadros(imagens), se em um certo momento do jogo, encontramos 7 aviões na tela, teríamos então que ter em memória o equivalente a 42 imagens, apenas para representar a possível explosão dos aviões. Tendo isso como base, observamos que é necessário um gerenciamento de recursos que além de carregar o que for necessário, quando necessário, possa prover o compartilhamento para que diversos elementos do jogo façam uso. <strong>3.Language Manage</strong>r 3.1 Intenção Permitir que uma aplicação ou jogo, posso suportar múltiplos idiomas. 3.2 Motivação Ao se desenvolver um jogo, uma das primeiras decisões que se toma é a definição de qual será o idioma de seu público alvo, onde geralmente acaba-se optando para que o jogo esteja apenas em um único idioma. Porém com isso eliminamos a possibilidade do mesmo entrar em contato com outros públicos, simplesmente pela barreira da língua. Sendo assim, um jogo em um mundo globalizado, deve permitir ou se adaptar ao idioma nativo de seus jogadores, sem comprometer sua estrutura interna, não sendo aceitável que seja mantido duas ou três versões do mesmo código para gerar versões em português, inglês ou espanhol. <strong>4.AnimaChronos </strong>4.1 Intenção Permitir a criação de animação para jogos, baseado no uso de imagens estáticas. 4.2 Motivação Quando estamos diante de um jogo eletrônico, nossa primeira percepção recaí sobre os gráficos, em principal sobre o movimento hipinótico exercido por eles, ou seja, nosso foco visual é rapidamente atraído para os objetos que se movem na cena, ou seja, as animações. Desta forma é imprescindível ao desenvolvermos um jogo, elaborarmos a capacidade de dar movimento as imagens, fazendo uso extensivo deste recurso conhecido como animação, o qual é o responsável pela completude da vida do personagem e objetos na cena. Tendo isso em mente, necessitamos da capacidade de unir as diversas imagens estáticas de forma padronizada e ordenada para que possamos efetuar as mudanças de quadro de forma controlada, causando o efeito desejado, ou seja, o movimento fluído do personagem ou objeto. <strong>5.Game Struct</strong> 5.1 Intenção Organizar e estruturar o funcionamento interno de um jogo eletrônico. 5.2 Motivação Quando pretendemos criar um jogo eletrônico, devemos ter em mente que um jogo é um software altamente especializado, e por consequência, é bem mais complexo que a maioria dos softwares tradicionais, pois possui um alto grau de interação com seu usuário, ou seja, o jogador, ao mesmo tempo que integra-se com diversos subsistemas e seus componentes, para assim poder executar de forma ordenada, controlada e prevista.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2010/06/12/ees-defesa-de-monografia-catalogo-de-padroes-para-jogos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoF AbstractFactory</title>
		<link>http://fztech.dukitan.com/2007/12/05/gof-abstractfactory/</link>
		<comments>http://fztech.dukitan.com/2007/12/05/gof-abstractfactory/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 02:11:00 +0000</pubDate>
		<dc:creator>davidferreirafz</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[BoUML]]></category>
		<category><![CDATA[C e C++]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[GoF]]></category>

		<guid isPermaLink="false">http://david.dukitan.com/?p=44</guid>
		<description><![CDATA[Blz! Dando continuidade aos post do &#8220;GoF[1]&#8220;, estou agora publicando o exemplo utilizando o padrão &#8220;Abstract Factory[2]&#8220;. Observando o exemplo Abaixo (Veja exemplo anterior[3]) Podemos observar que o modelo proposto tem apenas quatro classes básicas (Verde Claro), e toda a criação do labirinto é feita pela classe &#8220;MazeGame&#8221;. O padrão Abstract Factory, permite a criação <a href='http://fztech.dukitan.com/2007/12/05/gof-abstractfactory/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify">Blz!<br />
Dando continuidade aos post do &#8220;GoF[1]&#8220;, estou agora publicando o exemplo utilizando o padrão &#8220;Abstract Factory[2]&#8220;.</div>
<p>Observando o exemplo Abaixo (Veja exemplo anterior[3])</p>
<div style="text-align: justify"><a href="http://bp2.blogger.com/_JD_-EDbfZUo/R0dzz5veoDI/AAAAAAAAAfg/Mk2CBHn-m_o/s1600-h/GoF_DiagramaClasses.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp2.blogger.com/_JD_-EDbfZUo/R0dzz5veoDI/AAAAAAAAAfg/Mk2CBHn-m_o/s320/GoF_DiagramaClasses.png" border="0" alt="" /></a>Podemos observar que o modelo proposto tem apenas quatro classes básicas (Verde Claro), e toda a criação do labirinto é feita pela classe &#8220;MazeGame&#8221;.<br />
O padrão <span style="font-weight: bold">Abstract Factory</span>, permite a criação de uma família de objetos relacionados sem especificar suas classes concretas, ou seja:</div>
<div style="text-align: justify">Vai definir uma classe base de uma fábrica, que possui os métodos de criação de um conjunto de objetos, os quais são baseados em um ponto genérico(classe base), onde permite assim que tanto a fábrica quanto os objetos a serem construídos sejam de classe que estendam a família de classe raíz.</div>
<p><a href="http://bp0.blogger.com/_JD_-EDbfZUo/R1depK-_5NI/AAAAAAAAAgY/Rw6tqcGHXuc/s1600-h/GoF_DiagramaClasses.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp0.blogger.com/_JD_-EDbfZUo/R1depK-_5NI/AAAAAAAAAgY/Rw6tqcGHXuc/s320/GoF_DiagramaClasses.png" border="0" alt="" /></a></p>
<p>Observando o diagrama de classe acima, podemos notar que:</p>
<ul style="text-align: justify">
<li>Foi definida como fábrica base a classe &#8220;<span style="font-style: italic">MazeFactory</span>&#8220;, a qual define métodos para criação dos tipos básicos &#8220;<span style="font-style: italic">Room</span>&#8220;,&#8221;<span style="font-style: italic">Door</span>&#8220;,&#8221;<span style="font-style: italic">Wall</span>&#8220;;</li>
<li>Foi criada a classe &#8220;<span style="font-style: italic">BombedWall</span>&#8221; que estende a classe &#8220;<span style="font-style: italic">Wall</span>&#8220;;</li>
<li>Foi criada a classe &#8220;<span style="font-style: italic">EnchantedDoo</span>r&#8221; que estende a classe &#8220;<span style="font-style: italic">Door</span>&#8220;;</li>
<li>Foram criadas as classe &#8220;<span style="font-style: italic">RoomWithABomb</span>&#8221; e &#8220;<span style="font-style: italic">EnchantedRoom</span>&#8221; que estendem a classe &#8220;<span style="font-style: italic">Room</span>&#8220;;</li>
<li>Foram criadas duas fábricas que estendem a classe &#8220;<span style="font-style: italic">MazeFactory</span>&#8220;, sendo elas &#8220;<span style="font-style: italic">BombedMazeFactory</span>&#8221; e &#8220;<span style="font-style: italic">EnchantedMazeFactory</span>&#8220;;</li>
</ul>
<div style="text-align: justify">Como podemos observar a classe fábrica base é capaz de construir as peças básicas do labirinto, já a classe fábrica &#8220;<span style="font-style: italic">BombedMazeFactory</span>&#8221; é capaz de construir tudo que a classe &#8220;<span style="font-style: italic">MazeFactory</span>&#8221; faz, além de pela sobrecarga produzir objetos do tipo &#8220;<span style="font-style: italic">RoomWithABomb</span>&#8221; (subclasse de &#8220;<span style="font-style: italic">Room</span>&#8220;) e  &#8220;<span style="font-style: italic">BombedWall</span>&#8221; (subclasse de &#8220;<span style="font-style: italic">Wall</span>&#8220;).</div>
<div style="text-align: justify">Onde para que o usuário desta classe consiga construir labirintos de um dos três tipos &#8220;Básicos&#8221;, &#8220;ComBomba&#8221; ou &#8220;Encantado&#8221; basta ele passar para a classe &#8220;<span style="font-style: italic">MazeGame</span>&#8221; um objeto do tipo de fábrica desejado, como podemos ver no exemplo abaixo:</div>
<p><span style="font-family: courier new">//  MazeFactory factory;</span><br />
<span style="font-family: courier new">//  EnchantedMazeFactory factory;</span><br />
<span style="font-family: courier new"> BombedMazeFactory factory;</span></p>
<p><span style="font-family: courier new"> Maze * aMaze = mazeGame.create(factory);</span></p>
<p><span style="font-style: italic">&#8220;Mudando apenas a instância da factory produzimos o que desejamos.&#8221;</span><br />
Por final o resultado produzido é o apresentado na figura abaixo:</p>
<p><a href="http://bp3.blogger.com/_JD_-EDbfZUo/R1dep6-_5OI/AAAAAAAAAgg/oGZNiVqRN68/s1600-h/GoF_Execucao.png"><img style="margin: 0px auto 10px;text-align: center;cursor: pointer" src="http://bp3.blogger.com/_JD_-EDbfZUo/R1dep6-_5OI/AAAAAAAAAgg/oGZNiVqRN68/s320/GoF_Execucao.png" border="0" alt="" /></a><br />
A melhor forma de entender os padrões é conhecendo sua finalidade e motivação, além de ver sua implementação, então não se esqueça de baixar o código deste exemplo e consultar os links de referência no final deste post.</p>
<p>Download[4]: <a href="http://downloads.sourceforge.net/pjmoo/GoF_AbstractFactory.zip">http://downloads.sourceforge.net/pjmoo/GoF_AbstractFactory.zip</a></p>
<p>T+!<br />
Vida Longa e Próspera!</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Referência<br />
[1]<a href="http://pt.wikipedia.org/wiki/Design_Patterns">http://pt.wikipedia.org/wiki/Design_Patterns</a><br />
[2]<a href="http://pt.wikipedia.org/wiki/Abstract_Factory">http://pt.wikipedia.org/wiki/Abstract_Factory</a><br />
[3]<a href="http://davidferreira-fz.blogspot.com/2007/11/gof-exemplos.html">http://davidferreira-fz.blogspot.com/2007/11/gof-exemplos.html</a><br />
[4]<a href="http://downloads.sourceforge.net/pjmoo/GoF_AbstractFactory.zip">http://downloads.sourceforge.net/pjmoo/GoF_AbstractFactory.zip</a><br />
[5]<a href="http://pjmoo.wiki.sourceforge.net/GoF">http://pjmoo.wiki.sourceforge.net/GoF</a></p>
]]></content:encoded>
			<wfw:commentRss>http://fztech.dukitan.com/2007/12/05/gof-abstractfactory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

