<?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>Danilo Trindade &#187; Orientação a objetos</title>
	<atom:link href="http://danilotrindade.com.br/tag/orientacao-a-objetos/feed/" rel="self" type="application/rss+xml" />
	<link>http://danilotrindade.com.br</link>
	<description>Javascript, Php e o que der na telha...</description>
	<lastBuildDate>Wed, 15 Dec 2010 13:15:30 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Classe estática &#8220;Fade in&#8221; e &#8220;Fade out&#8221;</title>
		<link>http://danilotrindade.com.br/classe-estatica-fade-in-e-fade-out/</link>
		<comments>http://danilotrindade.com.br/classe-estatica-fade-in-e-fade-out/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 21:17:41 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[DHTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Animação]]></category>
		<category><![CDATA[Classe Estática]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Exemplo]]></category>
		<category><![CDATA[Fade]]></category>
		<category><![CDATA[Fade in]]></category>
		<category><![CDATA[Fade out]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Lógica]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=119</guid>
		<description><![CDATA[Usar jQuery para agilizar o trabalho é bacana, mas no trabalho, não é verdade?
Eu prefiro saber como foi feito ou no meu caso fazer a lógica &#8220;do zero&#8221; e fazer do meu jeito.
Estou disponibilizando uma classe estática que faz Fade in e Fade out de objetos HTML para ser usada, entendida, melhorada e porque não [...]]]></description>
			<content:encoded><![CDATA[<p>Usar <a class="wpGallery" title="Biblioteca JQuery" href="http://jquery.com"><strong><em>jQuery</em></strong></a> para agilizar o trabalho é bacana, mas no trabalho, não é verdade?</p>
<p>Eu prefiro saber como foi feito ou no meu caso fazer a lógica &#8220;do zero&#8221; e fazer do meu jeito.</p>
<p>Estou disponibilizando uma classe estática que faz <em><strong>Fade in</strong></em> e <strong><em>Fade out</em></strong> de objetos <strong>HTML</strong> para ser usada, entendida, melhorada e porque não criticada?</p>
<p>Podem Ficar a vontade, testem e quaisquer dúvidas comentem.</p>
<p><strong>Baixe o exemplo:</strong></p>
<p><a class="wpGallery" title="Exemplo Fade - Formato ZIP" href="http://danilo.blog.br/scripts/js/util/fade.zip">Fade (ZIP)</a> ou <a title="Exemplo Fade - Formato RAR" href="http://danilo.blog.br/scripts/js/util/fade.rar">Fade (RAR)</a></p>
<p>Abs,<br />
Chapooo!</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/classe-estatica-fade-in-e-fade-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Classe para Redimensionar Objetos</title>
		<link>http://danilotrindade.com.br/classe-para-redimensionar-objetos/</link>
		<comments>http://danilotrindade.com.br/classe-para-redimensionar-objetos/#comments</comments>
		<pubDate>Wed, 06 May 2009 22:08:04 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Html]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Redimensionar]]></category>
		<category><![CDATA[Rel]]></category>
		<category><![CDATA[Script]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=17</guid>
		<description><![CDATA[Caros,
Segue uma classe que a muito tempo queria colocar mas por alguns detalhes não tinha como. É uma classe que serve para redimensionar objs html.
Para testar, baixe o arquivo zipado.
Neste script estou usando uma classe estática Rel onde é util para várias outras coisas.
Baixar o arquivo redimensionar
Bom, até mais!
Abs,
Chapoo
]]></description>
			<content:encoded><![CDATA[<p>Caros,</p>
<p>Segue uma classe que a muito tempo queria colocar mas por alguns detalhes não tinha como. É uma classe que serve para redimensionar objs html.</p>
<p>Para testar, baixe o arquivo zipado.</p>
<p>Neste script estou usando uma classe estática <strong>Rel</strong> onde é util para várias outras coisas.</p>
<p>Baixar o arquivo <a title="Redimensionar" href="/scripts/js/util/redimensionar.zip"><strong>redimensionar</strong></a></p>
<p>Bom, até mais!</p>
<p>Abs,<br />
Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/classe-para-redimensionar-objetos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solução alternativa do Delegate</title>
		<link>http://danilotrindade.com.br/solucao-alternativa-do-delegate/</link>
		<comments>http://danilotrindade.com.br/solucao-alternativa-do-delegate/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 13:29:29 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Contexto]]></category>
		<category><![CDATA[Delegate]]></category>
		<category><![CDATA[Escopo]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Utilidade pública]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=15</guid>
		<description><![CDATA[Em muitos casos que postei aqui e também em situações profissionais usei o Delegate (post anterior) e simplesmente ele resolveu vários problenas quando estava trabalhando com classes e perdia o escopo do objeto em alguns métodos.
A pouco, desenvolvendo uma nova classe, me deparei com um problema chato.
Seguem as Situações:
Tinha numa classe, no método [this.iniciar] um [...]]]></description>
			<content:encoded><![CDATA[<p>Em muitos casos que postei aqui e também em situações profissionais usei o <span style="color: #ffcc00;"><strong><a title="Classe Delegate" href="http://danilotrindade.com.br/classe-delegate/">Delegate</a></strong></span> (post anterior) e simplesmente ele resolveu vários problenas quando estava trabalhando com classes e perdia o escopo do objeto em alguns métodos.</p>
<p>A pouco, desenvolvendo uma nova classe, me deparei com um problema chato.</p>
<p><span style="color: rgb(51, 51, 51);"><strong>Seguem as Situações:</strong></span></p>
<p>Tinha numa classe, no método [this.iniciar] um código que seria executado quando um evento ocorresse, mas ao passar o método para o evento, das duas uma: Ou Conseguia pegar o evento e o escopo era perdido (situação 1) ou tinha o escopo (usando o Delegate) porém não tinha o evento :( (situação 2). Segue abaixo os exemplos:</p>
<p><span style="color: rgb(51, 51, 51);"><strong>Situação 1:</strong></span></p>
<pre class="syntax-highlight:javascript">
...
this.iniciar = function() {
    document.onmousemove = this.verifica;
}

this.verifica = function(e) {
    // Tenho o evento mas não tenho o escopo
}
...
</pre>
<p><span style="color: rgb(51, 51, 51);"><strong>Situação 2:</strong></span></p>
<pre class="syntax-highlight:javascript">
...
this.iniciar = function() {
    document.onmousemove = Delegate.create(this, this.verifica, Array(&#039;&#039;));
}

this.verifica = function(e) {
    // Tenho o escopo mas não tenho o evento
}
...
</pre>
<p><span style="color: rgb(51, 51, 51);"><strong>Consegui resolver o problema da seguinte maneira:</strong></span></p>
<pre class="syntax-highlight:javascript">
NomeDaClasse = function() {
    with(this) {
        ...
        this.iniciar = function() {
            document.onmousemove = this.verifica;
        }

        this.verifica = function(e) {
            // Tenho o evento
            // Tenho o escopo
            teste(); // Não use o this.teste();
        }

        this.teste = function() {
            alert(&#039;Estou no escopo&#039;);
        }
        ...
    }
};
</pre>
<p>Imaginei que usando o with poderia ser uma luz e não acreditei que isso funcionaria até testar!!!</p>
<p><span style="color: rgb(51, 51, 51);"><strong>Obs.:</strong></span><br />
- No exemplo acima, se você usar o [this] dentro do evento, ou seja, dentro do método [this.verifica] você estará no escopo do objeto [document].<br />
- Se você tiver uma função fora da classe com o nome idêntico de algum método da classe não vai dar conflito, porém você não vai acessar a função externa também!</p>
<p>Abs,<br />
Chapooo!</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/solucao-alternativa-do-delegate/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Classe Delegate</title>
		<link>http://danilotrindade.com.br/classe-delegate/</link>
		<comments>http://danilotrindade.com.br/classe-delegate/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 15:15:02 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Utilidade pública]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Contexto]]></category>
		<category><![CDATA[Delegate]]></category>
		<category><![CDATA[Escopo]]></category>
		<category><![CDATA[Função]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=14</guid>
		<description><![CDATA[Caros,
Quando você está programando em Javascript Orientado a Objetos, você pode se deparar com diversos problemas e um deles é a perda de escopo do objeto (this). Uma solução simples é usar a classe Delegate, em poucas palavras ela executa uma função/método no contexto do objeto original.
Segue a classe abaixo:

// No Google...  - Estático
Delegate [...]]]></description>
			<content:encoded><![CDATA[<p>Caros,</p>
<p>Quando você está programando em Javascript Orientado a Objetos, você pode se deparar com diversos problemas e um deles é a perda de escopo do objeto (this). Uma solução simples é usar a classe <em><strong>Delegate</strong></em>, em poucas palavras ela executa uma função/método no contexto do objeto original.</p>
<p><span style="color: #333333;"><strong>Segue a classe abaixo:</strong></span></p>
<pre class="syntax-highlight:javascript">
// No Google...  - Estático
Delegate = {
    versao: &quot;1.0&quot;
}

Delegate.create = function(obj, func, args) {
    f = function() {
        var target = arguments.callee.target;
        var func   = arguments.callee.func;
        var args   = arguments.callee.args;

        return func.apply(target, (args.length &lt; 1 ? arguments : args));
    };

    f.args = (args != undefined &amp;&amp; args.length &gt; 0 ? args : new Array());
    f.target = obj;
    f.func = func;

    return f;
}
</pre>
<p><span style="color: #333333;"><strong>Outra forma bacana e mais simples que achei:</strong></span></p>
<pre class="syntax-highlight:javascript">
Delegate = {
	create: function (obj, func, params) {
		var f = function() { return func.apply(obj, params); };

		return f;
	}
}
</pre>
<p><span style="color: #333333;"><strong>Exemplo da implementação:</strong></span></p>
<pre class="syntax-highlight:javascript">
...
this.a = function() {
// Não chame a função this.b() desta forma,
// pois ela executará antes do tempo correto
	setTimeout(Delegate.create(this, this.b, Array(&#039;&#039;)), 1000);
}

this.b = function() {
	alert(this.c());
}

this.c = function() {
	return &#039;Olá&#039;;
}
...
</pre>
<p>Essa classe me quebrou vários galhos.</p>
<p>Abs,<br />
Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/classe-delegate/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lightbox</title>
		<link>http://danilotrindade.com.br/lightbox/</link>
		<comments>http://danilotrindade.com.br/lightbox/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 14:54:58 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Caixa de luz]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Lightbox]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=10</guid>
		<description><![CDATA[Ae&#8230;
Já tinha feito várias POG&#8217;s para criar um Lightbox e acabei fazendo uma coisa mais descente e que possa ser facilmente usado.
Vamos a implementação:
Baixe o pacote Lightbox.rar, e inclua os arquivos em sua página.
Nas TAG&#8217;s A coloque as seguintes informações nos atributos a seguir:
title = Conteúdo da legenda da foto
rel = CaixaDeLuz
rev = Url da [...]]]></description>
			<content:encoded><![CDATA[<p>Ae&#8230;</p>
<p>Já tinha feito várias POG&#8217;s para criar um <em>Lightbox</em> e acabei fazendo uma coisa mais descente e que possa ser facilmente usado.</p>
<p>Vamos a implementação:</p>
<p>Baixe o pacote <a title="Pacote do Lightbox ( Classe Rel e CaixaDeLuz )" href="/scripts/js/util/lightbox.rar"><strong><span style="color: #888888;">Lightbox.rar</span></strong></a>, e inclua os arquivos em sua página.</p>
<p>Nas TAG&#8217;s A coloque as seguintes informações nos atributos a seguir:</p>
<p><span style="color: #ff0000;">title</span> = Conteúdo da legenda da foto<br />
<span style="color: #ff0000;">rel</span> = CaixaDeLuz<br />
<span style="color: #ff0000;">rev</span> = Url da imagem grande</p>
<p>No onload ou após o carregamento do seu código coloque as linhas de JS:</p>
<pre class="syntax-highlight:javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
    CaixaDeLuz.definirClasses(’NOME_DE_UMA_CLASS‘);
    CaixaDeLuz.definirBotaoFechar(’URL_IMAGEM_FECHAR‘);
    CaixaDeLuz.carrega();
&lt;/script&gt;
</pre>
<p>Os métodos &#8216;<span style="color: #ff6600;">definirClasses</span>&#8216; e &#8216;<span style="color: #ff9900;">definirBotaoFechar</span>&#8216; não são obrigatórios, se não forem invocados executarão suas situações padrões.</p>
<p>O que cada um faz&#8230;</p>
<p><span style="color: #ff6600;">definirClasses</span> = Define uma classe CSS para os elementos onde pode-se, via CSS ajustar cores, bg&#8217;s e etc.<br />
<span style="color: #ff9900;">definirBotaoFechar</span> = Define a imagem do &#8216;close&#8217; da foto, se não for invocado o evento &#8216;close&#8217; acontecerá quando a foto for clicada.</p>
<p>Bom&#8230; É isso!</p>
<p><strong>Obs.:</strong> <span style="color: #808080;"><em>Você poderá usar N vezes em sua página.</em></span></p>
<p>Abs,<br />
Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/lightbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fazendo um scroll personalizado e simples</title>
		<link>http://danilotrindade.com.br/fazendo-um-scroll-personalizado-e-simples/</link>
		<comments>http://danilotrindade.com.br/fazendo-um-scroll-personalizado-e-simples/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 14:28:14 +0000</pubDate>
		<dc:creator>Chapolin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Orientação a objetos]]></category>
		<category><![CDATA[Classes]]></category>
		<category><![CDATA[Objetos]]></category>
		<category><![CDATA[Orientado]]></category>
		<category><![CDATA[Personalizado]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[Rolagem]]></category>
		<category><![CDATA[Scroll]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://danilotrindade.com.br/?p=9</guid>
		<description><![CDATA[Olá,
Já me pediram várias vezes algum script simples para fazer um scroll, então finalmente fiz uma classe para atender esta necessidade.
Fiz uma classe básica, mas vai ajudar quem gostaria de fazer um scroll personalizado e simples.
Segue a implementação:
Baixe o pacote Rolagem.zip
Crie o objeto &#8216;Rolagem&#8217; passando como parâmetro o nome do objeto onde terá o scroll, [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Já me pediram várias vezes algum script simples para fazer um scroll, então finalmente fiz uma classe para atender esta necessidade.</p>
<p>Fiz uma classe básica, mas vai ajudar quem gostaria de fazer um scroll personalizado e simples.</p>
<p><strong>Segue a implementação:</strong></p>
<p>Baixe o pacote <strong><a title="Pacote da Classe Rolagem" href="/scripts/js/util/rolagem.zip"><span style="color: #888888;"><span style="text-decoration: none;">Rolagem.zip</span></span></a></strong></p>
<p>Crie o objeto &#8216;Rolagem&#8217; passando como parâmetro o nome do objeto onde terá o scroll, exemplo:</p>
<pre class="syntax-highlight:javascript">
&lt;script type=&quot;text/javascript&quot;&gt;
    rolagem = new Rolagem();
    rolagem.definirCaixaRolagem(&#039;STRING_ID_OBJETO&#039; OU document.getElementById(&#039;OBJ&#039;));
&lt;/script&gt;
</pre>
<p>E na setas (para cima e para baixo) coloque as <strong><span style="color: #3366ff;">funções</span></strong> nos eventos <span style="color: #339966;">ONMOUSEDOWN</span>, <span style="color: #339966;">ONMOUSEUP </span>e <span style="color: #339966;">ONMOUSEOUT </span>como sugere abaixo, veja:</p>
<p><strong>SUBIR TEXTO</strong> (Seta para baixo):</p>
<pre class="syntax-highlight:xhtml">
    &lt;a href=&quot;javascript:;&quot; onmousedown=&quot;rolagem.definirDirecao(&#039;cima&#039;); rolagem.rolar();&quot; onmouseup=&quot;rolagem.parar();&quot; onmouseout=&quot;rolagem.parar();&quot;&gt;SUBIR&lt;/a&gt;
</pre>
<p><strong>DESCER TEXTO</strong> (Seta para cima):</p>
<pre class="syntax-highlight:xhtml">
    &lt;a href=&quot;javascript:;&quot; onmousedown=&quot;rolagem.definirDirecao(&#039;baixo&#039;); rolagem.rolar();&quot; onmouseup=&quot;rolagem.parar();&quot; onmouseout=&quot;rolagem.parar();&quot;&gt;DESCER&lt;/a&gt;
</pre>
<p>Bom&#8230; é isso!</p>
<p>Abs,</p>
<p>Chapoo</p>
]]></content:encoded>
			<wfw:commentRss>http://danilotrindade.com.br/fazendo-um-scroll-personalizado-e-simples/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
	</channel>
</rss>

