<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bruno Garcia - Blog</title>
	<atom:link href="http://brunovasconcelos.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://brunovasconcelos.wordpress.com</link>
	<description>Repositório de Idéias Perdidas</description>
	<lastBuildDate>Tue, 11 Aug 2009 18:42:14 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='brunovasconcelos.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/9b1019fdf0ea063a980a3d462d90fe51?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Bruno Garcia - Blog</title>
		<link>http://brunovasconcelos.wordpress.com</link>
	</image>
			<item>
		<title>Padrões de Software &#8211; Composite</title>
		<link>http://brunovasconcelos.wordpress.com/2009/08/04/padroes-de-software-composite/</link>
		<comments>http://brunovasconcelos.wordpress.com/2009/08/04/padroes-de-software-composite/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 19:34:29 +0000</pubDate>
		<dc:creator>Bruno Garcia</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[Padrões de Software]]></category>
		<category><![CDATA[Pattern Composite]]></category>
		<category><![CDATA[Reutilização de Software]]></category>

		<guid isPermaLink="false">http://brunovasconcelos.wordpress.com/?p=30</guid>
		<description><![CDATA[O Composite é um padrão estrutural que compartilha objetos em estruturas de árvore para representar hierarquias parte-todo, permitindo que clientes tratem objetos individuais e composições de objetos uniformemente. Ele é utilizado para aplicações que desejam ignorar a diferença entre composição de objetos e objetos individuais.
Um exemplo de problema solucionado pelo Composite é o seguinte: um [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brunovasconcelos.wordpress.com&blog=3667533&post=30&subd=brunovasconcelos&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">O <em>Composite</em> é um padrão estrutural que compartilha objetos em estruturas de árvore para representar hierarquias parte-todo, permitindo que clientes tratem objetos individuais e composições de objetos uniformemente. Ele é utilizado para aplicações que desejam ignorar a diferença entre composição de objetos e objetos individuais.</p>
<p style="text-align:justify;">Um exemplo de problema solucionado pelo <em>Composite</em> é o seguinte: <em>um congresso inscreve participantes que podem ser um indivíduo ou uma instituição, e cada indivíduo tem um assento no congresso</em><strong>. </strong></p>
<p style="text-align:justify;">Segue abaixo o diagrama de classes e o código fonte que demonstram a implementação do padrão como solução.</p>
<div id="attachment_31" class="wp-caption aligncenter" style="width: 452px"><a href="http://brunovasconcelos.files.wordpress.com/2009/08/composite.jpg"><img class="size-full wp-image-31" title="composite" src="http://brunovasconcelos.files.wordpress.com/2009/08/composite.jpg?w=442&#038;h=338" alt="Diagrama de Classes utilizando o padrão Composite" width="442" height="338" /></a><p class="wp-caption-text">Diagrama de Classes utilizando o padrão Composite como solução</p></div>
<p>Classe abstrata para componente Participante:</p>
<pre class="brush: java;">
public abstract class Participante {

	public String getNome() {
		throw new UnsupportedOperationException();
	}

	public int getAssento() {
		throw new UnsupportedOperationException();
	}

	public void adicionar(Participante participante) {
		throw new UnsupportedOperationException();
	}

	public void remover(Participante participante) {
		throw new UnsupportedOperationException();
	}

	public Participante getFilho(int index) {
		throw new UnsupportedOperationException();
	}
}
</pre>
<p>Classe folha para tipo primitivo Individuo:</p>
<pre class="brush: java;">
public class Individuo extends Participante {

	private String nome;

	private int assento;

	public Individuo(String nome, int assento) {
		this.nome = nome;
		this.assento = assento;
	}

	@Override
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Override
	public int getAssento() {
		return assento;
	}

	public void setAssento(int assento) {
		this.assento = assento;
	}

	@Override
	public String toString() {
		return &quot;Nome: &quot; + this.nome + &quot; - Assento: &quot; + this.assento;
	}
}
</pre>
<p>Classe composite para tipo composto Instituição:</p>
<pre class="brush: java;">
import java.util.ArrayList;
import java.util.List;

public class Instituicao extends Participante {

	private String nome;

	private List&lt;Participante&gt; membros;

	public Instituicao(String nome) {
		this.nome = nome;
		membros = new ArrayList&lt;Participante&gt;();
	}

	@Override
	public void adicionar(Participante participante) {
		membros.add(participante);
	}

	@Override
	public void remover(Participante participante) {
		membros.remove(participante);
	}

	@Override
	public Participante getFilho(int index) {
		return membros.get(index);
	}

	@Override
	public String getNome() {
		return nome;
	}

	public List&lt;Participante&gt; getMembros() {
		return membros;
	}

	@Override
	public String toString() {
		return &quot;Instituição: &quot; + this.nome;
	}

	public void imprimeMembros() {
	   for (Participante membro : membros) {
	      System.out.println(membro + &quot; - Instituição: &quot; + this.nome);
	   }
	}
}
</pre>
<p>Classe cliente Congresso que utiliza interface de Participante para realizar operações:</p>
<pre class="brush: java;">
import java.util.ArrayList;
import java.util.List;

public class Congresso {

	private String nome;

	private int totalAssentos;

	private List&lt;Participante&gt; participantes;

	public Congresso(String nome, int totalAssentos) {
	    this.nome = nome;
	    this.totalAssentos = totalAssentos;
	    participantes = new ArrayList&lt;Participante&gt;();
	}

	public String getNome() {
	    return nome;
	}

	public int getTotalAssentos() {
	    return totalAssentos;
	}

	public int getTotalParticipantes() {
	    int totalParticipantes = 0;

	    for (Participante participante : participantes) {
		if (participante instanceof Individuo) {
		  totalParticipantes++;
		} else if (participante instanceof Instituicao) {
		  Instituicao instituicao = (Instituicao) participante;
		  totalParticipantes += instituicao.getMembros().size();
		}
	    }

	    return totalParticipantes;
	}

	public void adicionarParticipante(Participante participante) {

	   if (participante instanceof Individuo) {

		if (totalAssentos &gt; participantes.size()) {
		  participantes.add(participante);
		} else {
		  throw new UnsupportedOperationException(&quot;Congresso não possui 				assentos livres!&quot;);
		}

         } else if (participante instanceof Instituicao) {

	    Instituicao t = (Instituicao) participante;

           if (totalAssentos &gt; participantes.size() + t.getMembros().size()) {
				participantes.add(participante);
	    } else {
		throw new UnsupportedOperationException(&quot;Congresso não possui&quot;                      		 + &quot; quantidade de assentos livres que Instituição necessita!&quot;);	   	    }
	  }
	} 

	public void imprimeParticipantes() {
	  System.out.println(&quot;----- Listagem de Participantes -----&quot;);
	  for (Participante participante : participantes) {
	    if (participante instanceof Individuo) {
	     System.out.println(participante + &quot; - Instituição: Sem Filiação&quot;);
	    } else if (participante instanceof Instituicao) {
	     Instituicao instituicao = (Instituicao) participante;
	     instituicao.imprimeMembros();
	    }
	  }
	}

	@Override
	public String toString() {
	   return this.nome + &quot; - Assentos: &quot; + this.totalAssentos
		+ &quot; - Participantes: &quot; + getTotalParticipantes();
	}

	public static void main(String[] args) {
	Congresso congresso = new Congresso(&quot;Congresso Nacional&quot;, 5);
	  Participante bruno = new Individuo(&quot;Bruno Garcia&quot;, 1);
	  Participante sarney = new Individuo(&quot;José Sarney&quot;, 2);

	  congresso.adicionarParticipante(bruno);
	  congresso.adicionarParticipante(sarney);

	  Participante eduardo = new Individuo(&quot;Eduardo Suplicy&quot;, 3);
	  Participante mercadante = new Individuo(&quot;Aloisio Mercadante&quot;, 4);

	  Participante partidoTrabalhadores = new Instituicao(&quot;PT&quot;);
	  partidoTrabalhadores.adicionar(eduardo);
	  partidoTrabalhadores.adicionar(mercadante);

	  congresso.adicionarParticipante(partidoTrabalhadores);

	  System.out.println(congresso);
	  congresso.imprimeParticipantes();
	}
}
</pre>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brunovasconcelos.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brunovasconcelos.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brunovasconcelos.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brunovasconcelos.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brunovasconcelos.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brunovasconcelos.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brunovasconcelos.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brunovasconcelos.wordpress.com/30/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brunovasconcelos.wordpress.com/30/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brunovasconcelos.wordpress.com/30/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brunovasconcelos.wordpress.com&blog=3667533&post=30&subd=brunovasconcelos&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://brunovasconcelos.wordpress.com/2009/08/04/padroes-de-software-composite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6e176e2ff0a572a8a4166059681126ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">brugarvas</media:title>
		</media:content>

		<media:content url="http://brunovasconcelos.files.wordpress.com/2009/08/composite.jpg" medium="image">
			<media:title type="html">composite</media:title>
		</media:content>
	</item>
		<item>
		<title>Feature Driven Development (FDD)</title>
		<link>http://brunovasconcelos.wordpress.com/2008/09/04/feature-driven-development-fdd/</link>
		<comments>http://brunovasconcelos.wordpress.com/2008/09/04/feature-driven-development-fdd/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 13:42:46 +0000</pubDate>
		<dc:creator>Bruno Garcia</dc:creator>
				<category><![CDATA[Engenharia de Software]]></category>
		<category><![CDATA[fdd]]></category>
		<category><![CDATA[feature driven development]]></category>

		<guid isPermaLink="false">http://brunovasconcelos.wordpress.com/?p=5</guid>
		<description><![CDATA[O Desenvolvimento Guiado Por Funcionalidades (FDD) é uma metodologia ágil para o processo de engenharia de software, elaborado com foco na entrega freqüente de “software funcionando” para os clientes e na utilização de boas práticas durante o ciclo de seu desenvolvimento.
Criado em 1997 num grande projeto de sistema de empréstimos em Java para o banco [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brunovasconcelos.wordpress.com&blog=3667533&post=5&subd=brunovasconcelos&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>O <strong>Desenvolvimento Guiado Por Funcionalidades</strong> (FDD) é uma <strong>metodologia ágil</strong> para o processo de engenharia de software, elaborado com foco na entrega freqüente de “<strong><em>software funcionando</em></strong>” para os clientes e na utilização de <strong>boas práticas</strong> durante o ciclo de seu desenvolvimento.</p>
<p>Criado em 1997 num grande projeto de sistema de empréstimos em Java para o banco <strong>United Overseas Bank</strong>, em Singapura. União entre a experiência de análise e modelagem orientadas por objetos de <strong>Peter Coad</strong>, e o gerencimento de projetos de <strong>Jeff De Luca</strong>.</p>
<p><object type='application/x-shockwave-flash' wmode='transparent' data='http://static.slideshare.net/swf/ssplayer2.swf?id=582297&#038;doc=featuredrivendevelopment-fdd-1220496910550087-8' width='425' height='348'><param name='movie' value='http://static.slideshare.net/swf/ssplayer2.swf?id=582297&#038;doc=featuredrivendevelopment-fdd-1220496910550087-8' /><param name='allowFullScreen' value='true' /><param name='allowScriptAccess' value='always' /></object></p>
<div style="width:425px;text-align:left;"><span style="color:#000000;"><strong>- Site Oficial e Conceito no WikiPedia:</strong></span></div>
<div style="width:425px;text-align:left;"><span style="color:#0000ff;"><br />
</span></div>
<div style="width:425px;text-align:left;"><span style="color:#0000ff;"><a href="http://www.featuredrivendevelopment.com">http://www.featuredrivendevelopment.com</a><br />
<a href="http://en.wikipedia.org/wiki/Feature_Driven_Development">http://en.wikipedia.org/wiki/Feature_Driven_Development</a></span></div>
<div style="width:425px;text-align:left;"></div>
<p></p>
<div style="width:425px;text-align:left;">- <strong>Heptagon – Consultoria e Treinamento em FDD. </strong></div>
<div style="width:425px;text-align:left;"><a href="http://www.heptagon.com.br/fdd"><br />
</a></div>
<div style="width:425px;text-align:left;"><a href="http://www.heptagon.com.br/fdd">http://www.heptagon.com.br/fdd</a></div>
<div style="width:425px;text-align:left;"><a href="http://www.heptagon.com.br/fdd-links">http://www.heptagon.com.br/fdd-links</a></div>
<div style="width:425px;text-align:left;"></div>
<p></p>
<div style="width:425px;text-align:left;"><strong>- Entrevista Com Jeff DeLuca Sobre FDD (PodCast em Inglês)</strong></div>
<p></p>
<div style="width:425px;text-align:left;"></div>
<div style="width:425px;text-align:left;"><a href="http://www.se-radio.net/podcast/2008-01/episode-83-jeff-deluca-feature-driven-development">http://www.se-radio.net/podcast/2008-01/episode-83</a></div>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/brunovasconcelos.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/brunovasconcelos.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brunovasconcelos.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brunovasconcelos.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brunovasconcelos.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brunovasconcelos.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brunovasconcelos.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brunovasconcelos.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brunovasconcelos.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brunovasconcelos.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brunovasconcelos.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brunovasconcelos.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brunovasconcelos.wordpress.com&blog=3667533&post=5&subd=brunovasconcelos&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://brunovasconcelos.wordpress.com/2008/09/04/feature-driven-development-fdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6e176e2ff0a572a8a4166059681126ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">brugarvas</media:title>
		</media:content>
	</item>
		<item>
		<title>Na Natureza Selvagem (Into The Wild)</title>
		<link>http://brunovasconcelos.wordpress.com/2008/05/07/into-the-wild/</link>
		<comments>http://brunovasconcelos.wordpress.com/2008/05/07/into-the-wild/#comments</comments>
		<pubDate>Wed, 07 May 2008 11:05:12 +0000</pubDate>
		<dc:creator>Bruno Garcia</dc:creator>
				<category><![CDATA[Filmes]]></category>
		<category><![CDATA[Cinema]]></category>
		<category><![CDATA[Into The Wild]]></category>
		<category><![CDATA[Na Natureza Selvagem]]></category>
		<category><![CDATA[Trailers]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Depois de terminar a faculdade com brilhantismo, Chris McCandless, jovem americano saudável e de família rica, doa todo o dinheiro que tem, abandona o carro e a maioria de seus pertences, adota outro nome e some na estrada, sem nunca mais dar notícias aos pais. Dois anos depois, aparece morto num lugar ermo e gelado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brunovasconcelos.wordpress.com&blog=3667533&post=1&subd=brunovasconcelos&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Depois de terminar a faculdade com brilhantismo, Chris McCandless, jovem americano saudável e de família rica, doa todo o dinheiro que tem, abandona o carro e a maioria de seus pertences, adota outro nome e some na estrada, sem nunca mais dar notícias aos pais. Dois anos depois, aparece morto num lugar ermo e gelado no Alasca.</p>
<p><span style="text-align:center; display: block;"><a href="http://brunovasconcelos.wordpress.com/2008/05/07/into-the-wild/"><img src="http://img.youtube.com/vi/0YBDpPIhEYo/2.jpg" alt="" /></a></span></p>
<p><span style="text-align:center; display: block;"><a href="http://brunovasconcelos.wordpress.com/2008/05/07/into-the-wild/"><img src="http://img.youtube.com/vi/UDorNilxPUY/2.jpg" alt="" /></a></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/brunovasconcelos.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/brunovasconcelos.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brunovasconcelos.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brunovasconcelos.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brunovasconcelos.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brunovasconcelos.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brunovasconcelos.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brunovasconcelos.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brunovasconcelos.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brunovasconcelos.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brunovasconcelos.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brunovasconcelos.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=brunovasconcelos.wordpress.com&blog=3667533&post=1&subd=brunovasconcelos&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://brunovasconcelos.wordpress.com/2008/05/07/into-the-wild/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6e176e2ff0a572a8a4166059681126ae?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">brugarvas</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/0YBDpPIhEYo/2.jpg" medium="image" />

		<media:content url="http://img.youtube.com/vi/UDorNilxPUY/2.jpg" medium="image" />
	</item>
	</channel>
</rss>