<?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>Sednablog</title>
	<atom:link href="http://sednablog.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sednablog.wordpress.com</link>
	<description>.:: Sem limites para criar ::.</description>
	<lastBuildDate>Fri, 06 Aug 2010 13:23:17 +0000</lastBuildDate>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sednablog.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Sednablog</title>
		<link>http://sednablog.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sednablog.wordpress.com/osd.xml" title="Sednablog" />
	<atom:link rel='hub' href='http://sednablog.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Estamos de mudança!</title>
		<link>http://sednablog.wordpress.com/2010/08/06/estamos-de-mudanca/</link>
		<comments>http://sednablog.wordpress.com/2010/08/06/estamos-de-mudanca/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 13:23:17 +0000</pubDate>
		<dc:creator>Carol Michelassi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=155</guid>
		<description><![CDATA[Olás pessoal! Criamos finalmente (!) um blog dentro do site da Sedna, então agora passaremos a  postar lá. Os posts antigos também foram migrados e estarão todos acessíveis a partir do novo endereço: Blog da Sedna Visitem, atualizem os favoritos! Carol<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=155&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Olás pessoal!</p>
<p>Criamos finalmente (!) um blog dentro do site da Sedna, então agora passaremos a  postar lá. Os posts antigos também foram migrados e estarão todos acessíveis a partir do novo endereço:</p>
<p><a title="Blog da Sedna" href="http://www.sednasoft.com.br/index.php/br/blog" target="_self">Blog da Sedna</a></p>
<p>Visitem, atualizem os favoritos! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Carol</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/155/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/155/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/155/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=155&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/08/06/estamos-de-mudanca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d0a266bde1605bde24c4cd8e855320c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">carolmichelassi</media:title>
		</media:content>
	</item>
		<item>
		<title>String e a plataforma .NET</title>
		<link>http://sednablog.wordpress.com/2010/03/12/string-net/</link>
		<comments>http://sednablog.wordpress.com/2010/03/12/string-net/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 17:41:47 +0000</pubDate>
		<dc:creator>Elias L. Souza</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=125</guid>
		<description><![CDATA[Todos sabem que as Strings são muito utilizadas em qualquer sistema. Mas o que nem todos sabem, é que elas podem ser um tiro no pé do desempenho da aplicação e que existe uma forma correta de utiliza-las. Mas, perai&#8230;como que é isso? A String é um objeto imutável. Isso significa que sempre que você [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=125&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Todos sabem que as Strings são muito utilizadas em qualquer sistema. Mas o que nem todos sabem, é que elas podem ser um tiro no pé do desempenho da aplicação e que existe uma forma correta de utiliza-las.</p>
<p style="text-align:justify;">Mas, perai&#8230;como que é isso?</p>
<p style="text-align:justify;">A String é um objeto <strong>imutável</strong>. Isso significa que sempre que você alterar o conteúdo de um objeto String, na verdade você não altera esse objeto. Você cria um novo objeto com o valor alterado.</p>
<p style="text-align:justify;">Um exemplo clássico disso é</p>
<address>String s = &#8220;teste&#8221;</address>
<address>s.toUpperCase()</address>
<address>Console.write(s);</address>
<address> </address>
<p style="text-align:justify;">
<p style="text-align:justify;">A saída é <strong>teste </strong>e não <strong>TESTE</strong><em>. </em>Nesse exemplo, são criados dois objetos<em> </em>String<em> </em>diferentes.</p>
<p style="text-align:justify;">E qual o motivo da String ser imutavel?</p>
<p style="text-align:justify;">Para explicar isso, vamos voltar um pouco e analisar como o .NET gerencia sua memória.</p>
<p style="text-align:justify;">Quando instânciamos um objeto como <em>Integer i = new Integer(1), </em>é criado um objeto Integer e a variável i faz referência à esse objeto. Se depois fizermos um <em>Integer x = i</em>, temos duas variáveis de referência x e i referenciando (o que não é o mesmo que apontando, <span style="color:#ff0000;">não</span> é um ponteiro!)  o mesmo objeto que contém o valor 1.</p>
<p style="text-align:justify;">Porém, se em seguida eu continuar meu código com <em>Integer y = new Integer(1)</em>, é criado um novo objeto que contém o valor 1 na memória e a variável y referencia a ele. Portanto, x e i fazem referencia a um objeto e y a outro objeto que contém o mesmo valor.</p>
<p style="text-align:justify;">Com Strings, funciona de forma um pouco diferente. A plataforma sabe que muitas Strings se repetem durante a execução de uma aplicação e poderiam ser reaproveitadas, por isso, mantém um <em>pool</em> de Strings.  É menos custoso.</p>
<p style="text-align:justify;">Na execução do código<em>:</em></p>
<address><em> String s1 = &#8220;a&#8221;</em> <em>;</em></address>
<address><em>String s2 = &#8220;a&#8221;</em>, </address>
<p style="text-align:justify;">
<p style="text-align:justify;">Primeiro, é criado um objeto String que contém o valor &#8220;a&#8221; com a variável s1 fazendo referência à ele. Na segunda linha, ao invés de criar um novo objeto contendo o valor &#8220;a&#8221;, o .NET identifica que já existe uma String como o mesmo valor em memória e apenas cria a variável s2 e a faz referenciar o objeto já existente.</p>
<p style="text-align:justify;">Toda ação que eu fizer sobre s1 ou sobre s2 que deveria alterar o valor do objeto referenciado <strong>mantém</strong> o objeto original em memória e <strong>cria um novo </strong>objeto em memória (exemplo do teste e do TESTE, logo acima).</p>
<p style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;">Existem três formas de usar a classe String</p>
<ol>
<li>Através de concatenação</li>
<li>String.format()</li>
<li>String Builder</li>
</ol>
<p style="text-align:justify;">
<p style="text-align:justify;">A concatenação é o modo convencional, pouco eficiente e mais prático.</p>
<p style="text-align:justify;">Você nunca deve fazer algo assim:</p>
<address>string x = &#8220;&#8221;;</address>
<address>for (int i=0; i &lt; 1500; i++)</address>
<address></address>
<address> x += &#8220;a&#8221;;</address>
<address> </address>
<p>Utilize esse método para concatenações mais simples (concatenar campos nome e sobrenome, por exemplo).</p>
<p>A concatenação simples também pode ser feita através do método estático <em><strong>String.Concat</strong></em>.</p>
<p>Já o <em><strong>String.format</strong></em> é uma forma de substituir marcações {} na String por parâmetros ou para formatar a String de acordo com um padrão FormatProvider informado em alguns de seus overloads existentes.</p>
<p>Novamente, é um método eficiente para pequenas operações, pois percorrer a string em busca de padrões {} para a substituição não é muito eficiente.</p>
<address> </address>
<address>String.Format(&#8220;SELECT {0} FROM TABELA WHERE ID = {1}&#8221;, &#8220;campo&#8221;, 10);</address>
<address> </address>
<p>O terceiro modo de utilização de Strings é através da classe <strong>StringBuilder</strong>.</p>
<p>É o modo mais complexo e o mais eficiente de utilização de Strings. Internamente ele gerencia a memória de uma forma mais adequada que a concatenação tradicional, e é específico para a construção de Strings que são muito alteradas durante sua criação, como comandos DML.</p>
<div>
<address>System.Text.StringBuilder query = new System.Text.StringBuilder();<br />
query.Append(&#8220;SELECT * &#8220;);<br />
query.Append(&#8220;FROM tabela t &#8220;);</address>
<address>query.Append(&#8220;inner join tabela2 t2 on &#8220;);</address>
<address>query.Append(&#8221; t2.id = t.fk_t2 &#8220;);<br />
query.Append(&#8220;WHERE id = 10&#8243;);</address>
<address> </address>
<address>executaSQL(query.toString());</address>
<address> </address>
<p>Não é interessante utilizar o StringBuilder para concatenações simples, apenas para comandos mais complexos, já que ele pode ser mais custoso do que concatenações pequenas.</p>
<p>É isso ae,</p>
<p>Elias</p>
</div>
<address> </address>
<address> </address>
<p style="text-align:justify;">
<p style="text-align:justify;">PS: Uma curiosidade:  Em C#, ao se comparar duas Strings com ==,  na verdade é chamado o método Equals da classe String.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=125&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/03/12/string-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/722dde6c3e427b36e8ce4e695798706f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsouza</media:title>
		</media:content>
	</item>
		<item>
		<title>Senhas fortes e Expressões Regulares</title>
		<link>http://sednablog.wordpress.com/2010/03/05/senhas-fortes-e-expressoes-regulares/</link>
		<comments>http://sednablog.wordpress.com/2010/03/05/senhas-fortes-e-expressoes-regulares/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 02:08:23 +0000</pubDate>
		<dc:creator>José Alexandre D&#39;Abruzzo Pereira</dc:creator>
				<category><![CDATA[FLEX]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=119</guid>
		<description><![CDATA[Estava lendo estes dias sobre Expressões Regulares em ActionScript. E não é que surge um possíbilidade de nós usarmos no SCM? Estamos implementando o cadastro de usuários no SCM. A idéia era validar se o usuário tinha digitado pelo menos dois dígitos, uma letra maiúscula e uma mínuscula na senha. Além disto, o tamanho da [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=119&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estava lendo estes dias sobre <a href="http://pt.wikipedia.org/wiki/Express%C3%A3o_regular">Expressões Regulares</a> em <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/RegExp.html">ActionScript</a>. E não é que surge um possíbilidade de nós usarmos no SCM?</p>
<p>Estamos implementando o cadastro de usuários no SCM. A idéia era validar se o usuário tinha digitado pelo menos dois dígitos, uma letra maiúscula e uma mínuscula na senha. Além disto, o tamanho da senha deveria ser entre 6 e 20.</p>
<p>Poderíamos utilizar vários if&#8217;s, verificando isto. Um if para letras maiúsculas, um para letra minúscula, um para verificar da cada dígito, um para o tamanho da string&#8230; Só de pensar nisto já desanima.</p>
<p>Entretanto, com as expressões regulares podemos ter uma solução em duas linhas:<br />
<span style="font-family:courier new,courier,mono;"><br />
private function verificaRegExp(senha: String): Boolean {<br />
&nbsp;&nbsp;var re: RegExp = /(?=.*\d.*\d)(?=.*[a-z])(?=.*[<br />
A-Z])[a-zA-Z0-9]{6,20}/;<br />
&nbsp;&nbsp;return re.test(senha);<br />
}<br />
</span></p>
<p>A idéia não é mostrar neste post como funcionam as expressões regulares. É apenas mostrar que elas existem e que deixam uma solução menos <s>porca</s> poluída.<br />
É claro que nem tudo são vantagens quanto às Expressões Regulares. É muito difícil de manter este código. Portanto, não deixe de comentar bem o código explicando o que o código faz.</p>
<p>Tem uma referência em <a href="http://msdn.microsoft.com/pt-br/library/system.text.regularexpressions.regex.aspx">.net</a> também. Em Object Pascal (Delphi), ainda não encontrei uma legal. Se alguém conhecer, me fala que eu complemento aqui!</p>
<p>Abraços,<br />
Zé Alexandre</p>
<p>Ps.: Mesmo esta solução sendo boa, talvez não será a que iremos utilizar, pois precisamos de uma &#8220;escala&#8221; da força da senha.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/119/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/119/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/119/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=119&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/03/05/senhas-fortes-e-expressoes-regulares/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/934eb27b5747fffacbd618fd295b4f4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Zé Alexandre</media:title>
		</media:content>
	</item>
		<item>
		<title>Iterando coleções através de interfaces</title>
		<link>http://sednablog.wordpress.com/2010/03/01/iterando-colecoes-atraves-de-interfaces/</link>
		<comments>http://sednablog.wordpress.com/2010/03/01/iterando-colecoes-atraves-de-interfaces/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 08:00:47 +0000</pubDate>
		<dc:creator>Carol Michelassi</dc:creator>
				<category><![CDATA[FLEX]]></category>
		<category><![CDATA[POO]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=108</guid>
		<description><![CDATA[Bom, depois do meu último post de más notícias, vem um sobre algo que eu achei realmente legal! Estava precisando simplesmente iterar o conteúdo de grids para gerar tabelas HTML, mas o problema era que temos grids alimentadas com coleções flat (ArrayCollection), outras com dados hierárquicos (HierarchicalCollection) e outras ainda no meio do caminho, agrupadas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=108&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bom, depois do meu último post de más notícias, vem um sobre algo que eu achei realmente legal!</p>
<p>Estava precisando simplesmente iterar o conteúdo de grids para gerar tabelas HTML, mas o problema era que temos grids alimentadas com coleções flat (ArrayCollection), outras com dados hierárquicos (HierarchicalCollection) e outras ainda no meio do caminho, agrupadas (GroupingCollection). O velho getItemAt() não ia funcionar. Já estava pensando horrorizada em vários ifs, métodos recursivos de busca em profundidade e etc, quando decidi ligar o<em> lazy mode</em> e consultar a boa e velha ajuda do Flex, para ver se já não existia algo parecido pronto.</p>
<p><a href="http://sednablog.files.wordpress.com/2010/02/ideia.jpg"><img class="aligncenter size-medium wp-image-107" title="Idéia" src="http://sednablog.files.wordpress.com/2010/02/ideia.jpg?w=300&#038;h=228" alt="Idéia luminosa!" width="300" height="228" /></a><br />
Eis que descubro as incríveis interfaces <strong>ICollectionView</strong> e <strong>IViewCursor</strong>! No caso flat funciona normal, linearmente, e no hierárquico ele faz a busca em profundidade. Com 3 linhas você itera magicamente a coleção, pra qualquer dos tipos que eu falei:</p>
<pre>if (dataProvider is ICollectionView) {</pre>
<pre style="padding-left:30px;">var cursor:IViewCursor = dataProvider.createCursor();
while (!cursor.afterLast) {</pre>
<pre style="padding-left:60px;">trace(cursor.current);
cursor.moveNext();</pre>
<pre style="padding-left:30px;">}</pre>
<pre>}</pre>
<p>Nessas horas é que eu me lembro que devo ler mais a documentação e conhecer o framework!</p>
<p>PS: Dizem por aí que há dois tipos de interfaces: aquelas de menininha (relacionadas a design e todas essas &#8220;perfumarias&#8221;) e aquelas de menininhos (classes <span style="text-decoration:line-through;">burocráticas</span> que o pessoal de OO adoooora). Nesse caso o negócio foi tão clean que nem pareceu uma interface de menininho! =P</p>
<p>Carol</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=108&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/03/01/iterando-colecoes-atraves-de-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d0a266bde1605bde24c4cd8e855320c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">carolmichelassi</media:title>
		</media:content>

		<media:content url="http://sednablog.files.wordpress.com/2010/02/ideia.jpg?w=300" medium="image">
			<media:title type="html">Idéia</media:title>
		</media:content>
	</item>
		<item>
		<title>Furos na sobrecarga e herança do Flex</title>
		<link>http://sednablog.wordpress.com/2010/02/26/furos-na-sobrecarga-e-heranca-do-flex/</link>
		<comments>http://sednablog.wordpress.com/2010/02/26/furos-na-sobrecarga-e-heranca-do-flex/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 14:35:16 +0000</pubDate>
		<dc:creator>Carol Michelassi</dc:creator>
				<category><![CDATA[FLEX]]></category>
		<category><![CDATA[POO]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=102</guid>
		<description><![CDATA[Esses dias aconteceu de eu precisar adaptar um método que funcionava para DataGrid para funcionar também com AdvancedDataGrid, sem dar impacto em todos os componentes do nosso sistema que já o utilizavam. Eis que me deparei de novo com dois fatos tristes, e resolvi dessa vez escrevê-los pra nunca mais ter a ilusão de que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=102&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Esses dias aconteceu de eu precisar adaptar um método que funcionava para DataGrid para funcionar também com AdvancedDataGrid, sem dar impacto em todos os componentes do nosso sistema que já o utilizavam.</p>
<p>Eis que me deparei <strong>de novo</strong> com dois fatos tristes, e resolvi dessa vez escrevê-los pra nunca mais ter a ilusão de que eu podia estar enganada e despertar aquele fio de esperança de que tudo poderia se resolver tão facilmente:</p>
<ul>
<li>Não existe sobrecarga de métodos em Action Script 3! A título de curiosidade, neste <a title="link" href="http://rederia.net/2009/12/01/sobrecarga-de-metodo-no-as3/" target="_blank">link</a> tem a explicação de como &#8220;contornar o problema&#8221;, mas infelizmente ainda é bem distante daquela coisa mágica e transparente que a gente aprende em OO&#8230;É pena!</li>
<li>AdvancedDataGrid não herda de DataGrid! Ainda não consegui achar uma explicação pra isso, se alguém tiver comente por favor!</li>
</ul>
<p>Ainda bem que o AS é bem flexível e sempre dá pra fazer de outro jeito! <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Carol</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=102&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/02/26/furos-na-sobrecarga-e-heranca-do-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d0a266bde1605bde24c4cd8e855320c4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">carolmichelassi</media:title>
		</media:content>
	</item>
		<item>
		<title>Garbage Collection no Flash Player</title>
		<link>http://sednablog.wordpress.com/2010/02/18/garbage-collection-no-flash-player/</link>
		<comments>http://sednablog.wordpress.com/2010/02/18/garbage-collection-no-flash-player/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 23:56:24 +0000</pubDate>
		<dc:creator>José Alexandre D&#39;Abruzzo Pereira</dc:creator>
				<category><![CDATA[FLEX]]></category>
		<category><![CDATA[POO]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=96</guid>
		<description><![CDATA[Estava lendo sobre Garbage Collection no Flash Player neste link aqui. Ele conta como o Flash coleta o seu &#8220;lixo&#8221;. Para isto, duas técnicas utilizadas: o número de referências de um objeto e a marcação e varredura. O primeiro (reference counting) utiliza o número de referências que um objeto tem. Quando o GC precisar, ele [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=96&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Estava lendo sobre Garbage Collection no Flash Player neste link <a href="http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html">aqui</a>. Ele conta como o Flash coleta o seu &#8220;lixo&#8221;.</p>
<p>Para isto, duas técnicas utilizadas: o número de referências de um objeto e a marcação e varredura.<br />
O primeiro (reference counting) utiliza o número de referências que um objeto tem. Quando o GC precisar, ele irá remover da memória o objeto que não tiver nenhum referência. Entretanto este método tem um problema: quando há referências circulares para um objeto, ele nunca é liberado da memória.<br />
Este problema é resolvido com a segunda técnica (mark and sweep). Desta forma, ele passa por todos os objetos criados a partir da raíz (no nosso caso o Application do Flex). Os objetos que não tiverem nenhum referência não são marcados e portanto não podem ser acessados. Um exemplo pode ser visto na figura abaixo: <br /> <br />
<img src="http://www.adobe.com/devnet/flashplayer/articles/garbage_collection/fig01.jpg" alt="Objetos sem mais referências ativas são identificados pelo Flash Player usando a técnica mark and sweep." /><br />
Como resultado, os itens não marcados, que na figura estão em branco, podem ser liberados da memória. Entretanto este é um processo mais custoso, pelo fato de passar por quase todos os objetos.</p>
<p>No artigo ainda existe um simulador para esta segunda técnica que fica bem claro como ele libera os objetos. Façam alguns testes para ver como funcionaria.</p>
<p>Abraços,<br />
Zé Alxandre</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=96&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/02/18/garbage-collection-no-flash-player/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/934eb27b5747fffacbd618fd295b4f4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Zé Alexandre</media:title>
		</media:content>

		<media:content url="http://www.adobe.com/devnet/flashplayer/articles/garbage_collection/fig01.jpg" medium="image">
			<media:title type="html">Objetos sem mais referências ativas são identificados pelo Flash Player usando a técnica mark and sweep.</media:title>
		</media:content>
	</item>
		<item>
		<title>Novo semestre e Flex For Kids</title>
		<link>http://sednablog.wordpress.com/2010/01/22/novo-semestre-e-flex-for-kids/</link>
		<comments>http://sednablog.wordpress.com/2010/01/22/novo-semestre-e-flex-for-kids/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 00:03:19 +0000</pubDate>
		<dc:creator>José Alexandre D&#39;Abruzzo Pereira</dc:creator>
				<category><![CDATA[FLEX]]></category>
		<category><![CDATA[RANDOM]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=91</guid>
		<description><![CDATA[As coisas aki no blog andavam meio paradas no semestre anterior&#8230; Isto aconteceu pois acabamos criando um grupo de e-mails para divulgar as coisas novas que aprendíamos e discutir sobre os problemas do dia-a-dia. Resultado: o blog ficou meio de lado&#8230; Mas o pessoal já voltou colocando novos post no blog (valeu, Elias!). Com o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=91&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As coisas aki no blog andavam meio paradas no semestre anterior&#8230;</p>
<p>Isto aconteceu pois acabamos criando um grupo de e-mails para divulgar as coisas novas que aprendíamos e discutir sobre os problemas do dia-a-dia. Resultado: o blog ficou meio de lado&#8230;</p>
<p>Mas o pessoal já voltou colocando novos post no blog (valeu, Elias!). Com o tempo iremos atualizar com o conteúdo discutido nos e-mails.</p>
<p>Aproveitei e atualizei os links com alguns sites legais.</p>
<p>Venho também para divulgar o evento que ocorrerá no dia 6 de fevereiro, o Flex For Kids:</p>
<p><a href="http://www.flexforkids.com" target="_blank"><img alt="Flex for Kids" src="http://www.flexforkids.com/images/flex_for_kids_728x90.jpg" title="Flex for Kids" /></a></p>
<p>Será um evento que várias pessoas que conhecem Flex no Brasil irão dar palestras online. Todo o lucro conseguido será revertido para as crianças do Cotolengo, uma instituição que cuida de pessoas com paralisia cerebral grave.</p>
<p>Nós da Sedna iremos ver as palestra e ajudar as crianças. Ajudem a divulgar&#8230; Além de ajudar as as crianças, poderão aprender bastante sobre Flex.</p>
<p>Abraços,<br />
Zé Alexandre</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/91/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/91/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/91/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=91&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/01/22/novo-semestre-e-flex-for-kids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/934eb27b5747fffacbd618fd295b4f4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Zé Alexandre</media:title>
		</media:content>

		<media:content url="http://www.flexforkids.com/images/flex_for_kids_728x90.jpg" medium="image">
			<media:title type="html">Flex for Kids</media:title>
		</media:content>
	</item>
		<item>
		<title>Flex e Ant &#8211; FX2Ant</title>
		<link>http://sednablog.wordpress.com/2010/01/21/flex-e-ant-fx2ant/</link>
		<comments>http://sednablog.wordpress.com/2010/01/21/flex-e-ant-fx2ant/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 21:47:10 +0000</pubDate>
		<dc:creator>Elias L. Souza</dc:creator>
				<category><![CDATA[FLEX]]></category>
		<category><![CDATA[RANDOM]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=84</guid>
		<description><![CDATA[Quando temos um sistema complexo, que possui vários módulos, libs e componentes, é comum dividirmos a organização em vários projetos. Mas aí vem o primeiro deploy e a descoberta&#8230;putz! Tenho que fazer um Export Release Build pra caaaada um dos meus projetos! Que porcaria improdutivo! Como todos sabem, o nosso amigo Flex pode ser compilado [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=84&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quando temos um sistema complexo, que possui vários módulos, libs e componentes, é comum dividirmos a organização em vários projetos.</p>
<p>Mas aí vem o primeiro deploy e a descoberta&#8230;putz! Tenho que fazer um Export Release Build pra caaaada um dos meus projetos! Que <span style="text-decoration:line-through;">porcaria</span> improdutivo!</p>
<p>Como todos sabem, o nosso amigo Flex pode ser compilado utilizando tasks do ANT (http://ant.apache.org/).</p>
<p>Ai vem o primeiro pensamento: Beleza! Vou fazer um scriptzinho aqui e resolver minha vida! Mas, como nem tudo são barrinhas verdes de sucesso na vida de um programador, você descobre que construir um script é trabalhoso demais e que as coisas não funcionam como deveriam&#8230;</p>
<p style="text-align:center;">
<div class="wp-caption aligncenter" style="width: 410px"><img title="Big Loser" src="http://www.babble.com/CS/blogs/strollerderby/2007/10/23-End%20of%20Month/loser.gif" alt="" width="400" height="387" /><p class="wp-caption-text">Quando seu script não funciona...</p></div>
<p style="text-align:center;">
<p>É nesse momento de tristeza que você inesperadamente se depara com o <strong>Fx2ANT</strong>. Um plugin para o eclipse que lê as configurações de seu projeto e gera os arquivos de build automaticamente! Isso mesmo, ele gera os arquivos! E não é só isso! Os swfs compilados ficam otimizados!</p>
<p>O FX2Ant faz parte do <strong>Clear ToolKit </strong>(http://www.myflex.org/#products/fx2ant, https://sourceforge.net/projects/cleartoolkit), um pacote de plugins com algumas funcionalidades interessantes para o Flex. Mas atenção, ele só funciona quando o Flex Builder está instalado na versão <strong>plugin</strong>. <strong><span style="color:#ff0000;">Não funciona</span></strong> com a instalação <strong>Stand Alone</strong> do Flex Builder.</p>
<p>Agora o processo todo é simples:</p>
<ol>
<li>Instale o Java (mínimo versão 5)</li>
<li>Instale o ANT</li>
<li>Instale o Eclipse (recomendo versão 3.5.1)</li>
<li>Instale o plugin do ANT para o Eclipse</li>
<li>Instale o plugin do Flex Builder 3 (ele é pago)</li>
<li>Finalmente instale o ClearToolKit</li>
</ol>
<p>Agora é só clicar no projeto com o botão direito e Fx2Ant-&gt;Generate Build Files</p>
<p>Em instantes você vê os scripts que ficou horas tentando descobrir como montar!</p>
<p>No meu caso, eu <span style="text-decoration:line-through;">apanhei muito </span> tive que alterar algumas configurações para que a build efetivamente funcione, por isso é importante conhecer o fluxo do script e saber como o ANT funciona&#8230;</p>
<p>Depois, é só juntar as chamadas aos diversos arquivos *build.xml gerados (um para cada projeto) em um build.xml, para que executando apenas um comando, você consiga compilar todo seu projeto Flex.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/84/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/84/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/84/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=84&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/01/21/flex-e-ant-fx2ant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/722dde6c3e427b36e8ce4e695798706f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsouza</media:title>
		</media:content>

		<media:content url="http://www.babble.com/CS/blogs/strollerderby/2007/10/23-End%20of%20Month/loser.gif" medium="image">
			<media:title type="html">Big Loser</media:title>
		</media:content>
	</item>
		<item>
		<title>C#: Fluxo de construtores estáticos e não estáticos</title>
		<link>http://sednablog.wordpress.com/2010/01/20/c-fluxo-de-construtores-estaticos-e-nao-estaticos/</link>
		<comments>http://sednablog.wordpress.com/2010/01/20/c-fluxo-de-construtores-estaticos-e-nao-estaticos/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 20:15:16 +0000</pubDate>
		<dc:creator>Elias L. Souza</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=78</guid>
		<description><![CDATA[Dado o seguinte código: public class ClassA { static ClassA() { Console.Write(&#8220;AA &#8220;); } public ClassA() { Console.Write(&#8220;A &#8220;); } } class ClassB : ClassA { static ClassB() { Console.Write(&#8220;BB &#8220;); } public ClassB() { Console.Write(&#8220;B &#8220;); } } class ClassC : ClassB { static ClassC() { Console.Write(&#8220;CC &#8220;); } public ClassC() { Console.Write(&#8220;C &#8220;); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=78&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dado o seguinte código:</p>
<p>public class ClassA {</p>
<p>static ClassA() { Console.Write(&#8220;AA &#8220;); }<br />
public ClassA() { Console.Write(&#8220;A &#8220;); }</p>
<p>}</p>
<p>class ClassB : ClassA {<br />
static ClassB() { Console.Write(&#8220;BB &#8220;); }<br />
public ClassB() { Console.Write(&#8220;B &#8220;); }<br />
}</p>
<p>class ClassC : ClassB {<br />
static ClassC() { Console.Write(&#8220;CC &#8220;); }<br />
public ClassC() { Console.Write(&#8220;C &#8220;); }<br />
}</p>
<p>Você saberia dizer qual seria a saida ao criar uma instância de ClassC?!</p>
<p>Um &#8220;new ClassC()&#8221; resultaria em &#8220;CC BB AA A B C&#8221;</p>
<p>Isso acontece porquê os construtores static são chamados no momento em que a classe é carregada pela &#8220;máquina virtual&#8221; e, em cada construtor não estático, existe uma chamada implícita ao construtor (com os mesmos argumentos) da classe pai.</p>
<p>É como se o código dos construtores fosse  ClassC() : base(), ClassB() : base()&#8230;</p>
<p>Então, o comando new ClassC() executa o bloco estático de ClassC e, na primeira linha de seu construtor não estático, carrega o ClassB, que executa o bloco estático e depois chama o construtor de ClassA, que executa seu bloco estático e chama o construtor de Object. Esse construtor, após terminar sua execução, retorna ao construtor de A, que retorna ao construtor de B, que retorna ao construtor de C!!  O código do construtor de C é a última parte a ser executada!</p>
<p>Confuso? Pense da seguinte forma: Os blocos estáticos são executados <strong>de filho para pai</strong>, os não estáticos <strong>de pai para filho!</strong></p>
<p>Porém, se eu fizer</p>
<p>new ClassC();<br />
new ClassB();</p>
<p>A saida será &#8220;CC BB AA A B C A B&#8221;, pois os as classes já foram carregadas na &#8220;máquina virtual&#8221;, então seus blocos estáticos já foram executados.</p>
<p>Até a próxima!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=78&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2010/01/20/c-fluxo-de-construtores-estaticos-e-nao-estaticos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/722dde6c3e427b36e8ce4e695798706f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">elsouza</media:title>
		</media:content>
	</item>
		<item>
		<title>Diretivas de POO no Delphi</title>
		<link>http://sednablog.wordpress.com/2009/07/13/diretivas-de-poo-no-delphi/</link>
		<comments>http://sednablog.wordpress.com/2009/07/13/diretivas-de-poo-no-delphi/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 13:55:21 +0000</pubDate>
		<dc:creator>José Alexandre D&#39;Abruzzo Pereira</dc:creator>
				<category><![CDATA[DELPHI]]></category>
		<category><![CDATA[POO]]></category>

		<guid isPermaLink="false">http://sednablog.wordpress.com/?p=67</guid>
		<description><![CDATA[Neste post irei falar de algumas particularidades do Delphi quanto a especialização/generalização (vulgo herança) na hora de implementar métodos sobreescritos da classe pai. Comecemos com um exemplo (desculpe pelo exemplo já conhecido por todos, mas pelo menos todos entendem): suponha que nós tenhamos duas classes, uma TContaCorrente e uma TContaEspecial, sendo esta última filha da [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=67&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Neste post irei falar de algumas particularidades do Delphi quanto a especialização/generalização (vulgo herança) na hora de implementar métodos sobreescritos da classe pai.<br />
Comecemos com um exemplo (desculpe pelo exemplo já conhecido por todos, mas pelo menos todos entendem): suponha que nós tenhamos duas classes, uma TContaCorrente e uma TContaEspecial, sendo esta última filha da primeira. A primeira tem um atributo saldo, que indica efetivamente quanto de dinheiro tem naquela conta. Já a conta especial, por herdar da primeira, tem também o atributo saldo e um outro limite. Por ser um cliente especial, ele pode gastar o que tem (saldo) junto com o que não tem (limite).<br />
Vamos supor também que você esteja implementando um software para uma máquina de cartão de débito e você precisa consultar se o cliente tem pelo menos o valor da compra disponível. Por isso ambas as classes tem um método getSaldoDisponivel.<br />
Chegamos no objetivo do post. O método da classe TContaCorrente deve implementar de um jeito (retornando apenas o saldo) enquanto o da classe TContaEspecial deve implementar de outra forma (retornando o saldo somado ao limite).<br />
Para isto você deve colocar uma diretiva após a assinatura do método da classe pai: virtual ou dynamic. Na classe filha a diretiva deve ser override.</p>
<p><span style="font-family:courier new,courier,mono;">TContaCorrente = class<br />
private<br />
&nbsp;&nbsp;saldo: double;<br />
public<br />
&nbsp;&nbsp;constructor Create;<br />
&nbsp;&nbsp;function getSaldoDisponivel: double; virtual;<br />
&nbsp;&nbsp;function getSaldo: double;<br />
&nbsp;&nbsp;procedure setSaldo(value: double);<br />
end;</span></p>
<p><span style="font-family:courier new,courier,mono;"><br />
// indica que herda de TContaCorrente<br />
TContaEspecial = class(TContaCorrente)<br />
private<br />
&nbsp;&nbsp;limite: double;<br />
public<br />
&nbsp;&nbsp;constructor Create;<br />
&nbsp;&nbsp;function getSaldoDisponivel: double; override;<br />
&nbsp;&nbsp;function getLimite: double;<br />
&nbsp;&nbsp;procedure setLimite(value: double);<br />
end;</span></p>
<p><span style="font-family:courier new,courier,mono;">function TContaCorrente.getSaldoDisponivel: double;<br />
begin<br />
&nbsp;&nbsp;result := Self.saldo;<br />
end;</span></p>
<p><span style="font-family:courier new,courier,mono;">function TContaEspecial.getSaldoDisponivel: double;<br />
begin<br />
&nbsp;&nbsp;result := Self.getSaldo + Self.getLimite;<br />
end;</span></p>
<p>Caso a diretiva override não tivesse sido colocada, ambos os métodos existiriam na classe filha, getSaldoDisponivel da classe TContaCorrente e getSaldoDisponivel da classe TContaEspecial, entretanto o da classe filha seria ocultado e não seria acessado por um objeto do tipo TContaEspecial, não tendo o resultado que você esperava. Em resumo, seria gerado código a toa para os dois métodos quando apenas um deles estaria disponível. E o Delphi acabaria dando um warning. Um professor meu falava que para encarar os Warnings e Hints como erros. Uma hora pode explodir um erro na cara do usuário. Se não era a qualidade externa que estaria comprometida, seria a interna (do seu código).<br />
A próxima pergunta seria qual a diferença entre virtual e dynamic. Virtual otimiza a velocidade enquanto dynamic otimiza o uso da memória. Esta diferença é apenas para que usa um compilador Win32. Quem utiliza um compilador num projeto .NET não há diferença nenhuma, já que o .NET mapeia métodos do tipo dynamic em métodos do tipo virtual.<br />
Outra forma de evitar isto seria ao invés de colocar a diretiva override, seria colocar a diretiva reintroduce, em que o método seria reintroduzido, e não daria para acessar o método da classe pai através do inherits.</p>
<p>Espero que tenha dado para aprender alguma coisa! Além da experiencia com classes de cálculo da PPU, utilizei <a href="http://www.delphibasics.co.uk/">este</a> e <a href="http://www.aspfree.com/c/a/.NET/The-Delphi-Language-Part-2/6/">este</a> links para escrever este post. Desculpem pelo post longo!</p>
<p>Abraços,<br />
Zé Alexandre</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sednablog.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sednablog.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sednablog.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sednablog.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sednablog.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sednablog.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sednablog.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sednablog.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sednablog.wordpress.com&amp;blog=6452792&amp;post=67&amp;subd=sednablog&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sednablog.wordpress.com/2009/07/13/diretivas-de-poo-no-delphi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/934eb27b5747fffacbd618fd295b4f4e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Zé Alexandre</media:title>
		</media:content>
	</item>
	</channel>
</rss>
