<?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; UML</title>
	<atom:link href="http://www.nusseagora.blog.br/tag/uml/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 que raios é a UML – Parte 3</title>
		<link>http://www.nusseagora.blog.br/raios-e-uml-parte-3</link>
		<comments>http://www.nusseagora.blog.br/raios-e-uml-parte-3#comments</comments>
		<pubDate>Sun, 13 Sep 2009 01:47:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Unified Modelling Language]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=637</guid>
		<description><![CDATA[Como pedido pelo Alexandre Ceni na 2a parte da micro-série sobre a UML, a 3a parte consiste em exemplos gráficos dos diagramas previamente citados.  Os diagramas que não fazem parte do Nuss... E agora?!? são da wikipedia. Essa página vai estar em constante modificação, pois vou substituindo os diagramas da wikipedia por aqueles que forem [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">Como pedido pelo Alexandre Ceni na <a href="http://nusseagora.blog.br/raios-e-uml-–-parte-2/" target="_blank">2a parte da micro-série sobre a UML</a>, a 3a parte consiste em exemplos gráficos dos diagramas previamente citados.  Os diagramas que não fazem parte do Nuss... E agora?!? são da <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language" target="_blank">wikipedia</a>. Essa página vai estar em constante modificação, pois vou substituindo os diagramas da wikipedia por aqueles que forem pintando nos artigos aqui. Não é foco do artigo  ensinar como desenvolver tais diagramas, até porque isso  é assunto para futuros artigos. Portanto, vamos a eles?</p>
<p><span id="more-637"></span></p>
<ul>
<li><strong>Diagramas Estruturais (ou de estrutura)</strong></li>
</ul>
<p><em> </em></p>
<table border="0" width="100%">
<tbody>
<tr>
<div id="attachment_64" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2008/04/padroes-de-projeto-questao-de-bom-senso2.jpg"><img class="size-thumbnail wp-image-64" title="Jogo de tabuleiro v2" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2008/04/padroes-de-projeto-questao-de-bom-senso2.thumbnail.jpg" alt="Jogo de tabuleiro v2" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Classes</p></div>
<div id="attachment_640" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/08/Pacotes.jpg"><img class="size-thumbnail wp-image-640" title="Diagrama de Pacotes" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/08/Pacotes-150x150.jpg" alt="Pacotes" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Pacotes</p></div>
<div id="attachment_692" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/EstruturaComposta.jpg"><img class="size-thumbnail wp-image-692" title="EstruturaComposta" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/EstruturaComposta-150x144.jpg" alt="Diagrama de Estrutura Composta" width="150" height="144" /></a><p class="wp-caption-text">Diagrama de Estrutura Composta</p></div></tr>
<tr>
<p><div id="attachment_689" class="wp-caption alignleft" style="width: 160px"><span style="text-decoration: underline;"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Objetos.jpg"><img class="size-thumbnail wp-image-689" title="Objetos" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Objetos-150x144.jpg" alt="Diagrama de Objetos" width="150" height="144" /></a></span><p class="wp-caption-text">Diagrama de Objetos</p></div>
<div id="attachment_691" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Componentes.jpg"><img class="size-thumbnail wp-image-691" title="Componentes" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Componentes-150x150.jpg" alt="Diagrama de Componentes" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Componentes</p></div>
<ul><span style="text-decoration: underline;"></p>
<div id="attachment_690" class="wp-caption alignleft" style="width: 160px"><span style="text-decoration: underline;"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Instalacao.jpg"><img class="size-thumbnail wp-image-690" title="Instalacao" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Instalacao-150x150.jpg" alt="Diagrama de Instalação" width="150" height="150" /></a></span><p class="wp-caption-text">Diagrama de Instalação</p></div>
<p></span></ul>
</tr>
</tbody>
</table>
<ul>
<li><strong>Diagramas Comportamentais (ou de comportamento)</strong></li>
</ul>
<table border="0" width="100%">
<tbody>
<tr>
<div id="attachment_685" class="wp-caption alignleft" style="width: 160px"><span style="text-decoration: underline;"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/CasosDeUso.jpg"><img class="size-thumbnail wp-image-685" title="CasosDeUso" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/CasosDeUso-150x139.jpg" alt="Diagrama de Casos de Uso" width="150" height="139" /></a></span><p class="wp-caption-text">Diagrama de Casos de Uso</p></div>
<div id="attachment_686" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Atividades.jpg"><img class="size-thumbnail wp-image-686" title="Atividades" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Atividades-150x150.jpg" alt="Diagrama de Atividades" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Atividades</p></div>
<div id="attachment_687" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/TransicaoDeEstados.jpg"><img class="size-thumbnail wp-image-687" title="TransicaoDeEstados" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/TransicaoDeEstados-150x150.jpg" alt="Diagrama de Transição de Estados" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Transição de Estados</p></div></tr>
</tbody>
</table>
<ul>
<li><strong>Diagramas de Interação</strong></li>
</ul>
<table border="0" width="100%">
<tbody>
<tr>
<p><div id="attachment_639" class="wp-caption alignleft" style="width: 160px"><strong><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/08/Sequencia.jpg"><img class="size-thumbnail wp-image-639" title="Sequencia" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/08/Sequencia-150x150.jpg" alt="Diagrama de Sequencia" width="150" height="150" /></a></strong><p class="wp-caption-text">Diagrama de Sequencia</p></div>
<div id="attachment_697" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Comunicacao.jpg"><img class="size-thumbnail wp-image-697" title="Comunicacao" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Comunicacao-150x150.jpg" alt="Diagrama de Comunicação" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Comunicação</p></div>
<p><div id="attachment_698" class="wp-caption alignleft" style="width: 160px"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Interacao.jpg"><img class="size-thumbnail wp-image-698" title="Interacao" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/Interacao-150x150.jpg" alt="Diagrama de Interação" width="150" height="150" /></a><p class="wp-caption-text">Diagrama de Interação</p></div></tr>
</tbody>
</table>
<p>Lembrem-se: saber entender os diagramas  é extremamente importante para o desenvolvimento de software: eles são uma forma de descrever exatamente o que você pretende e evitar problemas de comunicação entre os programadores e analistas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/raios-e-uml-parte-3/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>O que raios é a UML – Parte 2</title>
		<link>http://www.nusseagora.blog.br/raios-e-uml-%e2%80%93-parte-2</link>
		<comments>http://www.nusseagora.blog.br/raios-e-uml-%e2%80%93-parte-2#comments</comments>
		<pubDate>Sun, 23 Aug 2009 19:26:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[UML]]></category>
		<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Unified Modelling Language]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=581</guid>
		<description><![CDATA[Continuando a micro-série sobre a UML, é hora de falarmos sobre como utilizá-la. A UML nos disponibiliza diversas ferramentas ou artefatos para que possamos modelar as diversas partes do nosso projeto. Tais ferramentas são chamadas de “diagramas” e não passam de uma forma padronizada de desenhar determinado tipo de problema de forma a simplificar a [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><script src="http://rec6.via6.com/link.php?action=widget&amp;url=http://nusseagora.blog.br/raios-e-uml-%25e2%2580%2593-parte-2%2F" type="text/javascript"></script></span></p>
<p style="margin-left: 70pt; text-align: justify">Continuando a micro-série sobre a UML, é hora de falarmos sobre como utilizá-la. A UML nos disponibiliza diversas ferramentas ou artefatos para que possamos modelar as diversas partes do nosso projeto. Tais ferramentas são chamadas de “diagramas” e não passam de uma forma padronizada de desenhar determinado tipo de problema de forma a simplificar a forma de ver o que eles querem mostrar.</p>
<p><em>“Mas e a flexibilidade que você mencionou no <a href="http://nusseagora.blog.br/o-que-raios-e-a-uml-parte-1/" target="_blank">artigo anterior</a>?” </em>Então... ela tem a ver com a possibilidade de não utilizarmos todos os diagramas e sim aqueles que são relevantes ao nosso problema. Isso diminui muito a quantidade de trabalho e permite que nos foquemos somente no que nos é importante (lembram-se do <a href="http://nusseagora.blog.br/principio-de-pareto-como-solucionar-80-dos-problemas-mexendo-somente-em-20-das-causas/" target="_blank">princípio de pareto</a>, né?).</p>
<p><span id="more-581"></span>Esses diagramas se dividem em 3 grupos:</p>
<ul>
<li><strong>Diagramas Estruturais (ou de estrutura)</strong></li>
</ul>
<p>Mostram que coisas existem e como elas devem estar relacionadas entre si. Em um jogo, os diagramas estruturais mostrariam, por exemplo, quantos itens cabem na mochila do seu personagem, se um item pode ter ou não alguma habilidade especial ou até mesmo como é a estrutura de salvar ou carregar o progresso do jogo. Os Diagramas Estruturais se dividem em:</p>
<ul> <span style="text-decoration: underline;">Diagrama de Classes</span></ul>
<p>Com o Diagrama de Classes você define as dependências das entidades que fazem parte do seu programa. Quantos personagens estão ao mesmo tempo em uma arena ou como organiza-se o seu ranking são exemplos do uso do Diagrama de Classes.</p>
<ul> <span style="text-decoration: underline;">Diagrama de Estrutura Composta</span></ul>
<p>Lembra quando falamos aqui em classes que contem outras classes, como um carro que tem rodas e lataria personalizáveis, ou um personagem que tem um animal de estimação? O diagrama de Estrutura Composta mostra quais relações entre essas “partes” a classe tem, como o personagem mandando seu animal atacar ou o carro ordenando as rodas que parem de girar.<em> “Ué Tiago, é igual a um Diagrama de Classes?”</em> Na realidade, é. Mas, dependendo do que se modela, pode ser visualmente mais simples.</p>
<ul> <span style="text-decoration: underline;">Diagrama de Objetos</span></ul>
<p>Esse diagrama parece-se muito com o Diagrama de Classes, mas define quais objetos foram instanciados em um dado momento do seu programa. Pegando o exemplo anterior, um diagrama de objetos poderia, por exemplo, mostrar quais personagens estão em qual arena, com quais itens e usando quais magias.</p>
<ul> <span style="text-decoration: underline;">Diagrama de Componentes</span></ul>
<p>Define como as coisas físicas estão organizadas no seu projeto. Por exemplo, onde e como estão guardadas os arquivos do seu código-fonte e a dependência entre eles.</p>
<ul> <span style="text-decoration: underline;">Diagrama de Pacotes</span></ul>
<p>Um dos meus preferidos: ilustra as dependências das partes lógicas do seu programa entre si. Essas partes lógicas, em um jogo, poderiam ser “Fase 1”, “Tela de Login” ou “Tela Inicial”. É utilizado também para definir a arquitetura do seu projeto, como as <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1/" target="_blank">camadas e o MVC</a>.</p>
<ul> <span style="text-decoration: underline;">Diagrama de Instalação</span></ul>
<p>Sabe quando você deve instalar um DirectX qualquer para rodar um jogo? Então, esse tipo de dependência é o que os diagramas de instalação modelam. Podem ser utilizados para definir a rede onde um MMORPG roda, mostrando os servidores de jogo, de login, sites, bancos de dados e clientes de jogo.</p>
<ul>
<li><strong>Diagramas Comportamentais (ou de comportamento)</strong></li>
</ul>
<p>Diagramas Comportamentais definem o comportamento das coisas que seu projeto tem, incluindo aí a forma com que ele reage aos estímulos externos.</p>
<ul><span style="text-decoration: underline;">Diagrama de Casos de Uso</span></ul>
<p>Define a forma de interação do usuário com o seu sistema (os tais estímulos externos falados acima). Com ele você diz tudo que seu usuário pode fazer e começa a definir quais são as partes principais do seu sistema. Ele poderá salvar? Então você terá um módulo de savegame com seus próprios casos de Uso (<em>Salvar jogo</em>, <em>Escolher</em> Savegame, <em>Cancelar</em>, <em>Carregar Savegame</em>, por exemplo). Ele utilizará veículos? Então um módulo para controle de veículos será necessário.</p>
<p>Como dica, Casos de Uso iniciam com interação com periféricos. Botões, barras de rolagem, escolha de menus, utilização de teclado... isso tudo dá vida a um caso de uso.</p>
<ul><span style="text-decoration: underline;">Diagrama de Atividades</span></ul>
<p>O Diagrama de Atividades não é muito mais que o antigo “Diagrama de Blocos”. Ele indica a lógica das coisas sem entrar em detalhes de programação. Um diagrama torna muito mais visível uma lógica como a seguinte: <em>“Jogo exibe menu de modos de jogo. Jogador coloca o cursor sobre o modo desejado. Jogador clica no modo escolhido. O jogo carrega a tela inicial daquele modo escolhido, com a opção de confirmar escolha ou cancelar escolha. Se o jogador cancela a escolha do modo, ele volta ao menu principal; se confirma, o jogo carrega aquele modo.”</em></p>
<ul><span style="text-decoration: underline;">Diagrama de Transição de Estados</span></ul>
<p>Como o Mario muda de estado no decorrer de um jogo? Ele pega um cogumelo e vira <strong>Super Mario</strong>, que encosta em um inimigo e vira de novo o <strong>Mario</strong>. Só que o <strong>Mario</strong>, se encostar em um inimigo, <strong>morre</strong>. Cada um desses “tipos de Mario” é um estado. O conjunto da relação entre eles é o que chamamos de <em>Máquina de Estados</em>. O diagrama serve para desenhar o conjunto formado por essas relações.</p>
<ul>
<li><strong>Diagramas de Interação</strong></li>
</ul>
<p>Enquanto os Diagramas Estruturais dizem como as coisas são, os de interação dizem como elas se relacionam. Com eles você modela como um tiro afeta o seu alvo, como é construída uma pista de corrida ou como acessar o conteúdo de um baú de tesouro.</p>
<ul><span style="text-decoration: underline;">Diagrama de Sequencia</span></ul>
<p>O Diagrama de Sequencia mostra a interação entre as diversas classes do sistema em um eixo temporal. Com ele você diz, no exemplo da batalha, que a classe de batalha cria uma arena, cria as árvores da arena, cria o rio da arena, cria dois personagems, cria itens e passa-os para os personagens e, finalmente, coloca-os na arena, exibindo em seguida a mensagem “BATALHEM” na tela.</p>
<ul> <span style="text-decoration: underline;">Diagrama de Comunicação</span></ul>
<p>Diagramas de comunicação mostram a interação das classes do sistema como os Diagramas de Sequencia. Porém, ao invés de uma estrutura cronológica, os Diagramas de Comunicação baseiam-se em uma estrutura analítica, como índices de um livro. Antes que pergunte, sim, é praticamente a mesma coisa que o Diagrama de Sequencia, mas a organização (utilizando o exemplo anterior) ficaria algo assim:</p>
<pre>1 A classe de batalha cria uma arena
    1.1 Cria as árvores da arena
    1.2 Cria o rio da arena
2 Cria dois personagems
    2.1 Cria itens
    2.2 Passa-os para os personagens e
3 Coloca os personagens na arena
4 Exibe a mensagem “BATALHEM” na tela.</pre>
<ul><span style="text-decoration: underline;">Diagrama de Interação</span></ul>
<p>Modelamos com o Diagrama de Interação a interação entre os múltiplos Diagramas de Sequencia e de Comunicação que temos em nosso sistema.</p>
<p>Por enquanto é só. Caso alguém tenha alguma dúvida, pode comentar sobre ela. Isso pode até render uma futura parte para a série!</p>
<p style="text-align: right;"><em>Saiba mais! <a href="http://pt.wikipedia.org/wiki/UML" target="_blank">Wikipedia</a> e <a href="http://advanceduml.wordpress.com/" target="_blank">Advanced Unified Modeling Language</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/raios-e-uml-%e2%80%93-parte-2/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>O que raios é a UML &#8211; Parte 1</title>
		<link>http://www.nusseagora.blog.br/o-que-raios-e-a-uml-parte-1</link>
		<comments>http://www.nusseagora.blog.br/o-que-raios-e-a-uml-parte-1#comments</comments>
		<pubDate>Thu, 13 Aug 2009 01:29:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[Unified Modelling Language]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=546</guid>
		<description><![CDATA[“Tiago, você fala tanto sobre a UML, já falou de Casos de Uso, já mostrou diagramas e mais diagramas, mas até agora não disse: o que raios é a UML?” UML é uma sigla para Unified Modelling Language. Em português, isso pode ser traduzido como Linguagem de Modelagem Unificada. Ou, simplificando, um conjunto de padrões [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify"><em>“Tiago, você fala tanto sobre a UML, já falou de <a href="http://nusseagora.blog.br/casos-de-uso-mas-hein/" target="_blank">Casos de Uso</a>, já <a href="http://nusseagora.blog.br/orientacao-a-objetos-q-raios-e-isso-parte-2/" target="_blank">mostrou diagramas</a> e <a href="http://nusseagora.blog.br/decorando-um-jogo-com-o-padrao-de-projetos-decorator-%E2%80%93-parte-2/" target="_blank">mais diagramas</a>, mas até agora não disse: o que raios é a UML?”</em></p>
<p><em> </em></p>
<p><em><span id="more-546"></span></em>UML é uma sigla para <em>Unified Modelling Language</em>. Em português, isso pode ser traduzido como <em>Linguagem de Modelagem Unificada</em>. Ou, simplificando, um conjunto de padrões de desenho para que você possa modelar um problema orientado a objetos, mostrá-lo a uma pessoa que entenda esses desenhos e ela entender aquilo da forma exata que você estava querendo que ela entendesse. Sabe quando um arquiteto faz uma planta de uma casa? Ou quando um roteirista escreve um roteiro? A idéia é exatamente a mesma, mas com os programas orientados a objetos.</p>
<p><em>“Orientado a Objetos... você já explicou isso <a href="http://nusseagora.blog.br/orientacao-a-objetos-q-raios-e-isso-parte-1/" target="_blank">aqui no nuss</a>... Isso significa que a UML serve para o desenvolvimento de programas para computador, certo?”</em> Tenho 2 respostas para tal pergunta:</p>
<ul>
<li><strong>Sim</strong>. Como dito, a UML ajuda-nos a      desenhar nossas relações orientadas a objetos. Como <strong>um programa OO</strong> <strong>é um      problema orientado a objetos</strong>, ela serve para tal.</li>
<li><strong>Não</strong>. Como dito, a UML ajuda-nos a      desenhar nossas relações orientadas a objetos. Como <strong>qualquer problema do nosso dia-a-dia pode ser organizado segundo a      ótica da Orientação a Objetos</strong>, ela serve para muito mais que só      modelar programas. Podemos, por exemplo, modelar a hierarquia de uma      empresa, com seus departamentos, as funções dos funcionários e até mesmo a      burocracia dos processos, chegando ao extremo de mapear até mesmo quem      está trabalhando demais (ou de menos).</li>
</ul>
<p><em>“Nossa, agora estou surpreso. Nunca pensei nessa possibilidade”. </em>Sim, ela existe, porém é muito pouco usada. Eu já cheguei a explicar o problema de alguns relatórios em um departamento público com diagramas UML, mas para esses fins nunca cheguei a usar muito além disso.</p>
<p><em>“Isso significa que podemos utilizá-la para desenhar nossos problemas, independente de serem programas de computador ou não. Legal. Mas ela é usada mais no desenvolvimento de programas, como jogos de computador. Certo?” </em>Exato. Com a UML, nós desenhamos todo o funcionamento do nosso, por exemplo, jogo. É com ela que eu anoto as características de um personagem, o que ele tem de itens, como são esses itens, como ele reage com o mundo de jogo, o que acontece quando ele ataca ou é atacado, quando pega um item ou passa de fase. A UML está para o programa como uma planta está para uma casa ou o roteiro está para um filme.</p>
<p><em> </em></p>
<p><em>“Aaaaahhh. Acho que agora estou entendendo. Eu desenho com a UML o meu programa antes que os programadores programem as minhas idéias, como o roteirista escreve o roteiro do filme antes dele ser gravado” </em>Novamente, <strong>Sim</strong> e <strong>Não. </strong>A UML não dita como você realiza o seu projeto, só desenha o programa. Ou seja, ela é <strong>independente da metodologia do projeto</strong>. Essa tal “metodologia do projeto” é quem dita o que e quando fazer. Tem metodologias onde fazemos a modelagem antes, outras durante ou até depois a programação. Além disso, algumas têm ciclos repetidos e incrementais durante todo o desenvolvimento, outras fazem tudo antes e, a cada problema encontrado volta-se ao início para corrigir tudo. Não existe “a melhor metodologia”: cada uma tem seus prós e contras, sendo recomendada ou não dependendo do que você pretende fazer. Como pode-se ver, a UML é só uma ferramenta para auxiliar o desenvolvimento do programa, independente de como você pretende desenvolvê-lo.</p>
<p><em>“Nossa. Legal isso. Posso fazer meu jogo com uma metodologia que eu prefira e, mesmo assim, utilizar o que você ensina aqui no Nuss...”</em> Além de ser poderosa e flexível, eu considero esse um dos maiores pontos de sucesso da UML.</p>
<p><em>“Como assim flexível, Tiago?”</em>. Isso já é assunto para a próxima parte desse artigo, onde falarei dos diversos diagramas da UML.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/o-que-raios-e-a-uml-parte-1/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MVC e o Linkage: O que se deve ou não fazer? (parte 3)</title>
		<link>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-3</link>
		<comments>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-3#comments</comments>
		<pubDate>Thu, 01 Nov 2007 16:40:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Linkage]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Padrões de Arquitetura]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Unified Modelling Language]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=32</guid>
		<description><![CDATA[É gente, depois de um bom tempo enrolado com problemas e mais problemas (aparentemente, até o meu MAC foi clonado), eu consigo finalmente disponibilizá esse código (com a ajuda do Douglas, claro). É o que dizem: "antes tarde do que nunca". Falando sobre o código em si, tanto eu quanto o Mário achamos que ele [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align:justify;">É gente, depois de um bom tempo enrolado com problemas e mais problemas (aparentemente, até o meu MAC foi clonado), eu consigo finalmente disponibilizá esse código (com a ajuda do Douglas, claro). É o que dizem: "antes tarde do que nunca". Falando sobre o código em si, tanto eu quanto o <a href="http://vovoviuarede.blogspot.com/">Mário</a> achamos que ele ficou um cado complexo por causa da Controladora usando o Singleton. Pensei seriamente em tirar esse Singleton, mas resolvi deixá ela assim mesmo para que vocês tenham mais um exemplo do uso do padrão num programa. Basta deixar claro que o Singleton <strong>NÃO É NECESSÁRIO</strong> para o exemplo.</p>
<p>Vocês vão notar que eu deixei até as rotinas de debug (como o trace quando se passa o cursor sobre a bola) dentro da estrutura MVC. Além disso, vão também ver que cada camada do nosso Jogo está num pacote homônimo. Conseqüentemente, a estrutura de pastas também reflete essa lógica, organizando de forma muito melhor os arquivos.</p>
<p>Os comentários não estão muito explicados, mas quem tiver ainda alguma dúvida DEVE recorrer às partes <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1/">1</a> e <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-2/">2</a> do artigo sobre o MVC, agora vendo como tudo acontece no código.</p>
<p>Bom, espero que isso ajude a vocês (especialmente ao <a href="http://www.aryel-tupinamba.com/blog/">Aryel </a>que pediu o código). Qualquer dúvida, é só comentar!<br />
Até a próxima!</div>
<div style="text-align:right;"><span style="font-size:85%;">Faça o download do código aqui![download id="4"]</span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-3/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MVC e o Linkage: O que se deve ou não fazer? (parte 2)</title>
		<link>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-2</link>
		<comments>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-2#comments</comments>
		<pubDate>Sat, 20 Oct 2007 13:52:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[O Jogo]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Problemas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Linkage]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Padrões de Arquitetura]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Unified Modelling Language]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=31</guid>
		<description><![CDATA[Agora que todos já sabem como funciona o MVC, vou continuar com a 2a e última parte do artigo. Hoje vou mostrar os pontos positivos e negativos da implantação da arquitetura, além de finalmente mostrar o que isso tudo tem a ver com o Linkage. Pontos positivos: Abstração e desacoplamento das camadas Quando estamos programando [...]]]></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/10/mvc-e-o-linkage-o-que-se-deve-ou-no_20.html" type="text/javascript"></script></span></p>
<p style="margin-left: 70pt; text-align: justify">Agora que todos já sabem como funciona o MVC, vou continuar com a 2a e última parte do artigo. Hoje vou mostrar os pontos positivos e negativos da implantação da arquitetura, além de finalmente mostrar o que isso tudo tem a ver com o Linkage.</p>
<p>Pontos positivos:</p>
<ul>
<li>Abstração e desacoplamento das camadas</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Quando estamos programando a interface do problema, não nos preocupamos com a programação da lógica dele, somente com o que vai e o que vem dela. Dessa forma, podemos facilmente simular todo o funcionamento da lógica do programa com uma classe de testes que simula o funcionamento da lógica. Esse é o conceito de <em>caixa preta</em>, importantíssimo para o bom funcionamento de um software.</p>
<ul>
<li>Facilidade de manutenção</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Graças a esse desacoplamento, é <strong>muito mais</strong> fácil realizar a manutenção de um programa desses. Se for um problema visual, você vai à camada responsável pelo visual do programa e pronto, corrige. Se for um problema de lógica, é na lógica que você buscará a solução. Além disso, graças ao padrão <em>Controlador</em> (<em>Controller</em>), você pode apagar <strong>toda </strong>uma janela sem perder <strong>nada</strong> de sua implementação.</p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Quem está acostumado a adicionar código em um botão sabe exatamente o trabalho que isso ta poupando, mas para quem não está, aí vai um exemplo. Sabe esse Mario 2 que refizeram em 3D pro Nintendo DS? Se eles não usaram o MVC para fazer o original, perderam uma gigantesca parte da lógica do programa só por trocar a interface. Em compensação, usando o MVC de forma correta eles trocariam toda a interface sem mexer em 1 linha da lógica.</p>
<ul>
<li>Possibilidade de Expansão</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">A estrutura de camadas proposta no MVC pode (e deve) ser expandida: criar mais camadas aumenta a coesão e diminui o acoplamento, organizando melhor o seu código. No jogo, por exemplo, além da Lógica e da Interface, temos a camada de Comunicação (rede) e a camada de Armazenamento (Banco de Dados), além das camadas entre elas. Um outro jogo pode, por exemplo, ter uma camada de IA, uma camada de hardware e uma camada de comunicação com outro jogo. O nosso, inicialmente, está assim:</p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify"><img class="aligncenter size-full wp-image-910" title="piramide" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2007/10/piramide.jpg" alt="piramide" width="450" height="228" /></p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">As camadas se comunicam através de <em>Indireções</em>, como os já citados padrões <em>Controlador</em>, <em>Proxy </em>e <em>DBBroker</em>. Isso claro, pode mudar durante a análise de <em>Casos de Uso</em> mais avançados, mas inicialmente, essa é a idéia. Além disso, o funcionamento desses padrões vai ficar para futuros artigos.</p>
<ul>
<li><!--[if !supportLists]-->Facilidade de realização de testes</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Com o programa modularizado, podemos criar classes de teste que rodam nosso programa à exaustão, podendo encontrar bugs estatisticamente impossíveis de encontrarmos. Mas sabe qual é o melhor? Você pode testar isso tudo sem ter NADA de interface pronta: a lógica fica tão independente que chega a funcionar sem a interface. Então não precisamos esperar que o pessoal do desenvolvimento resolva aquele problema dos relatórios para que o pessoal do teste disseque nosso <em>Caso de Uso</em>. Maneiro, não?</p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Pontos negativos:</p>
<ul>
<li><!--[if !supportLists]-->Programação complexa</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">A programação torna-se mais complexa quando aplicamos o MVC. Chamadas consecutivas e abstração do código são extremamente importantes. Além disso, uma documentação de todo o projeto é imprescindível para que as camadas sejam mapeadas e seguidas da forma correta. Além disso, teremos o...</p>
<ul>
<li><!--[if !supportLists]-->Uso extensivo de padrões de projeto</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">O MVC simples já dita o uso do padrão <em>Controller</em>. Expandindo camadas de Comunicação e Armazenamento, ainda usaremos <em>Proxies</em> como o <em>Remote Proxy</em> e <em>Database Brokers</em>. Para desacoplar essas camadas, criaremos várias classes baseadas nos padrões <em>Indireção</em> (usado para desacoplar 2 classes que não deveriam ter visibilidade entre si) e <em>Invenção Pura</em> (padrão que adiciona classes que não estão diretamente ligadas ao problema em si, mas que facilitam a solução dele). No final, a relação entre as classes é bem mais burocrática</p>
<ul>
<li><!--[if !supportLists]-->Dependência do MVC na portabilidade</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Para poder portar um código MVC de forma correta, o programa que irá recebê-lo precisa trabalhar nos moldes do MVC. Por exemplo, se estamos portando uma janela de cadastro de cliente já pronta para um programa parecido, ele tem que estar modularizado de forma a trabalhar com a classe Controladora para que a manutenção seja mínima. Isso causa uma certa dependência à estrutura.</p>
<ul>
<li><!--[if !supportLists]-->Queda de performance</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">As mensagens trocadas navegam entre camadas de forma burocrática e indireta, o que faz com que os programadores “performance acima de tudo” reclamem bastante. Por exemplo, uma chamada a uma função que seria direta numa programação estruturada torna-se uma cadeia de várias subchamadas a métodos que somente levam a chamada para a próxima camada nessa estrutura, como vocÊs viram no diagrama de seqüência lá em cima.</p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">A performance perdida está longe de ser relevante, principalmente com os processadores de hoje em dia, mas mesmo assim continua sendo um ponto negativo da arquitetura.</p>
<p class="MsoNormal" style="text-align: justify"><em>“Ta, ta, eu entendi o MVC. Mas o quê que o Linkage tem à ver com isso???”</em> O linkage do Flash é uma facilidade ao trabalhar com a interface, pois permite que uma classe use os atributos do MovieClip como se fossem atributos de si mesma. A grosso modo, parece muito uma herança de atributos e métodos públicos. O maior problema é que, se não tomarmos cuidado, <strong>acabamos destruindo toda a modularidade do MVC</strong>.</p>
<p class="MsoNormal" style="text-align: justify">O linkage só deve ser usado para que as classes de interface controlem os MovieClips relacionados à elas. No nosso jogo, temos as classes <em>TCarta</em> e <em>TCartaAvatar</em>, ambas controlando uma carta em  jogo. A diferença é que, seguindo o MVC, modularizamos uma carta em 2 camadas:</p>
<ul>
<li><!--[if !supportLists]--><!--[endif]-->TCarta</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Controla a <strong>lógica</strong> da carta: os atributos, as contas, o dano que ela recebe, se ela está no <em>Deck</em>, na <em>Mão</em>, em <em>Jogo</em> ou no <em>Cemitério</em> e coisas do gênero.</p>
<ul>
<li><!--[if !supportLists]-->TCartaAvatar</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Controla todos os efeitos visuais da carta. É ela que desenha a marcação do mouse sobre a carta, quem coloca a carta em qualquer posição, que inicia/pára o arrastar, que gera os efeitos de dano e desenha na tela todos os atributos buscados de TCarta.</p>
<p class="MsoNormal" style="text-align: justify">Dessa forma, podemos trocar completamente a interface sem mexer nas classes de lógica. Trocar para Papervision 3D, a Plasticvision 4D, a Metalvision 5D ou até mesmo OpenGL ou ClosedLG, no nosso projeto, é muuuito mais simples: basta que criemos as mesmas classes de Interface, mas agora programadas com a nova interface. MOLEZA.</p>
<p class="MsoNormal" style="text-align: justify">Essa portabilidade ainda pode ser da interface para a lógica: nossas cartas são arrastadas independente da lógica, elas brilham independente dlógica, elas se movem independente da lógica. Basta chamar os métodos da classe de Interface na hora certa, seja em Action Script 3.0 ou qualquer outra linguagem que o Flash suporte mais pra frente.</p>
<p>Caso uma única classe fosse responsável por isso tudo, durante uma troca de interface ou na hora de portar um trecho do código, a manutenção seria muito mais complicada: você deveria ficar movendo/apagando métodos das classes de lógica. Isso claro, pois estou pensando numa classe bem feita, com métodos bem estruturados. Muitas vezes, o que você encontra são linhas de interface no meio da lógica. Aposto que vários de vocês já viram um “se (this.morto) rode (“AnimacaoMorto”)”. Imaginem trocar o código para o futuro suporte OpenGL nesse caso...</p>
<p class="MsoNormal" style="text-align: justify">Se vocês já pegaram o esquema do MVC e da expansão que fizemos, criando a camada de Armazenamento, já sacou que a carta também terá uma camada de armazenamento. Ela não está implementada ainda, mas seria mais ou menos assim:</p>
<ul>
<li><!--[if !supportLists]--><span><span><span> </span></span></span><!--[endif]-->TCartaDados</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Seria a classe responsável por <em>materializar </em>e<em> desmaterializar</em> a Carta. Pra quem não sabe, <em>materializar</em> é buscar os dados de um objeto no BD e criá-lo em memória e <em>desmaterializar</em> é jogar no BD, destruindo o objeto da memória. Essa classe também seria responsável por todos os outros métodos possíveis</p>
<p class="MsoNormal" style="text-align: justify">Gente, de todos os artigos que fiz até agora, esse foi de longe o que eu mais gostei de escrever. Espero, por meio desse, ajudar a derrubar essa história de que o Action Script é uma linguagem de 2<sup>a</sup> linha e que jogo em Flash é um amontoado de gambiarras. Espero também incentivar os leitores a escrever sobre qualidade de software em AS. Dá mais trabalho na hora de programar, mas esse trabalho é recompensado na hora de reutilizar o código em diversos outros projetos. Pensem nisso e até a próxima!</p>
<p>[EDIT] Não se esqueça de conferir o resto do artigo! <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1/" target="_blank">Parte 1</a> e <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-3/" target="_blank">Parte 3</a>, valeu?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-2/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MVC e o Linkage: O que se deve ou não fazer? (parte 1)</title>
		<link>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1</link>
		<comments>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1#comments</comments>
		<pubDate>Wed, 17 Oct 2007 11:32:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[O Jogo]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Problemas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Actionscript 3.0]]></category>
		<category><![CDATA[Linkage]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Padrões de Arquitetura]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Unified Modelling Language]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=30</guid>
		<description><![CDATA[Eu acredito que muita gente vai me chamar de maluco depois desse artigo, mas espero que todos entendam. Pra começar, vamos falar do MVC (ou Model-View-Controller), uma arquitetura de software baseado na idéia de interações emtre camadas de alta coesão (fazem exatamente aquilo que se propõem a fazer e nada mais que isso) e baixo [...]]]></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/10/mvc-e-o-linkage-o-que-se-deve-ou-no.html" type="text/javascript"></script></span></p>
<p style="margin-left: 70pt; text-align: justify">Eu acredito que muita gente vai me chamar de maluco depois desse artigo, mas espero que todos entendam. Pra começar, vamos falar do MVC (ou <em>Model-View-Controller)</em>, uma arquitetura de software baseado na idéia de interações emtre camadas de <em>alta coesão</em> (fazem exatamente aquilo que se propõem a fazer e nada mais que isso) e <em>baixo acoplamento</em> (são o mais independentes possível entre si).</p>
<p style="text-align: justify"><em>“CALMAÊ!!!! QUE NEGÓCIO É ESSE DE ARQUITETURA??? O MVC NÃO É UM PADRÃO DE PROJETO???”</em> Pois então, como eu disse, muita gente vai me chamar de maluco... Deixa eu explicar:Eu já vi vários sites, artigos e livros chamando o MVC de várias coisas. Já vi chamando de <em>padrão de projeto</em>, com o que eu não concordo. Ele não é um <em>padrão de projeto</em> pelo fato de organizar todo um sistema, não somente um bloco ou pequeno problema. Além disso, para implementar o MVC nós precisamos utilizar <em>padrões</em>, como o <em>controlador </em>(<em>Controller</em>).</p>
<p>Pensando nisso, algumas pessoas começaram a chamá-lo de <em>meta-padrão</em>, coisa que ele não é. Um meta-padrão definiria o comportamento dos <strong>padrões</strong>, não de <strong>toda a</strong> <strong>arquitetura</strong>.</p>
<p>O MVC é isso: ele define como as classes vão se comportar, ditando quem fica onde, faz o quê e, o mais importante, o por quê disso ser assim, bem como faz uma planta de uma casa. Por isso é que, em vários locais (como aqui no <em>Nuss</em>), vocês vão encontrar o MVC como uma <strong>arquitetura de software</strong>.</p>
<p>Isso é um ponto de vista, não chega a influenciar diretamente no uso do MVC. Mas é importante explicar para que ninguém saia com “cara de LG”. Beleza? Então continuemos com o artigo.</p>
<p>Voltando às camadas, é como se você transformasse o software no corpo humano: separasse os ossos e delegasse a eles a sustentação do corpo, o sangue ficaria com o transporte de substâncias pelo organismo e o sistema neurológico se responsabilizasse pela propagação das sensações e ordens do cérebro. É claro que as funções não são bem essas, mas é assim que as coisas funcionam.</p>
<p>O MVC em nosso jogo fica assim:</p>
<p><img class="aligncenter size-full wp-image-904" title="camadas" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2007/10/camadas.jpg" alt="camadas" width="175" height="341" /></p>
<p class="MsoNormal" style="text-align: justify">Com esse diagrama eu posso falar da maior característica do MVC: <strong>Toda e qualquer camada só se comunica com as camadas imediatamente abaixo de si</strong>. Lembrando-se que, para evitar dúvidas, quanto mais próxima do usuário, mais “alta” ou “alto nível” está a camada. Nota-se que <strong>nenhuma</strong> classe da Lógica realiza chamadas à classe Controladora da mesma forma que a classe controladora <strong>não </strong>realiza chamadas à Interface. Além disso, a Interface <strong>não </strong>chama diretamente método algum da Lógica: isso é feito através da <em>classe Controladora</em>, como mostra o <em>Diagrama de Seqüência</em><!--[if gte vml 1]&amp;gt;   &amp;lt;![endif]--><!--[if !vml]--> a seguir:</p>
<p class="MsoNormal" style="text-align: center;"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2007/10/sequencia.jpg"><img class="aligncenter size-full wp-image-905" title="sequencia" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2007/10/sequencia.jpg" alt="sequencia" width="540" height="270" /></a></p>
<p class="MsoNormal" style="text-align: justify">No MVC, cada camada tem uma função específica:</p>
<p style="text-align: justify">
<ul>
<li class="MsoNormal"><em><span>Model</span></em><span> (Modelo / Lógica)</span></li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Essa é a camada de negócios, onde está toda a lógica do teu sistema. No Jogo, por exemplo, é onde estão as classes <em>TCarta</em>, <em>TPersonagem</em>, <em>TLadrilho</em> e todas as outras relacionadas ao funcionamento do núcleo do Jogo (ou <em>engine</em>, se preferir).</p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">
<ul>
<li class="MsoNormal"><em>View</em> (Visão / Interface)</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">Na camada de visão você não encontra NADA além das classes de interface com o usuário. <em>TCartaAvatar</em>, <em>TPersonagemAvatar</em> e <em>TLadrilhoAvatar</em> são exemplos de classes que, no Jogo, ficam na Interface. Outras classes que estão aqui são a <em>TIdioma</em> (que controla todos os textos do programa) e a <em>TJukeBox </em>(recém implementada, que controla todos os sons do jogo)</p>
<p style="text-align: justify">
<ul>
<li class="MsoNormal">Controller (Controladora)</li>
</ul>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">A controladora é uma camada intermediaria entre a <em>Lógica</em> e a <em>Interface</em>, que faz somente a propagação das mensagens da interface para a lógica, visto que a lógica <strong>não pode</strong> se comunicar com a interface.</p>
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify">A continuação do artigo, com os prós e contras da arquitetura, além do que o Linkage do flash tem a ver com isso vai ficar para o próximo. Então gente, até lá!</p>
<p align="right"><em>[EDIT] Seguem os links para as Partes <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-2/" target="_blank">2</a> e <a href="http://nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-3/" target="_blank">3</a> do artigo.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/mvc-e-o-linkage-o-que-se-deve-ou-nao-fazer-parte-1/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

