<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>orientacao-a-objetos &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/orientacao-a-objetos/</link>
	<description>Feed of posts on WordPress.com tagged "orientacao-a-objetos"</description>
	<pubDate>Wed, 23 Dec 2009 18:13:59 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Orientação a Objetos e Adaptações de Performance]]></title>
<link>http://ronanlucio.wordpress.com/2009/11/24/orientacao-a-objetos-e-adaptacoes-de-performance/</link>
<pubDate>Tue, 24 Nov 2009 23:55:33 +0000</pubDate>
<dc:creator>Ronan Lucio</dc:creator>
<guid>http://ronanlucio.wordpress.com/2009/11/24/orientacao-a-objetos-e-adaptacoes-de-performance/</guid>
<description><![CDATA[Após escrever o post &#8220;Programação Orientada a Objetos e o Impacto na Performance&#8221;, vamos]]></description>
<content:encoded><![CDATA[Após escrever o post &#8220;Programação Orientada a Objetos e o Impacto na Performance&#8221;, vamos]]></content:encoded>
</item>
<item>
<title><![CDATA[Classes Anônimas (Anonymous Inner Classes) e Estáticas ( Static )]]></title>
<link>http://iteixeira.wordpress.com/2009/11/20/classes-anonimas/</link>
<pubDate>Fri, 20 Nov 2009 17:37:07 +0000</pubDate>
<dc:creator>franciury</dc:creator>
<guid>http://iteixeira.wordpress.com/2009/11/20/classes-anonimas/</guid>
<description><![CDATA[No último post, comentei sobre classes internas comum e de métodos. Finalizarei sobre o assunto com ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-size:small;"> No último post, comentei sobre classes internas comum e de métodos. Finalizarei sobre o assunto com este post. Onde estarei falando sobre: classes anônimas simples (em suas duas maneiras), classes anônimas definida no argumento e classes internas estáticas. Vamos lá!</span></p>
<p><span style="font-size:small;"><strong>Classes Anônimas Simples</strong></span></p>
<p><span style="font-size:small;">Bom, de cara vamos achar estranho a sintáxe das classes anônimas, pelo fato de ser uma sintáxe não muito comum de se ver, exceto em: Swing, e alguns frameworks como o GWT da google. Segue abaixo um exemplo de como declarar uma classe anônima simples.</span></p>
<p><a href="http://iteixeira.wordpress.com/files/2009/11/anony1.jpg"><img class="size-medium wp-image-59 alignnone" title="Anony1" src="http://iteixeira.wordpress.com/files/2009/11/anony1.jpg?w=300" alt="" width="300" height="202" /></a></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-family:Times New Roman,serif;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="font-size:small;">Olha ae! Definimos uma classe anônima. Mas, porque Anônima? Bom, como o próprio nome diz, e pelo o que vemos acima, é uma classe que não tem nome e sim uma referência a </span></span><span style="color:#000000;"><span style="font-size:small;"><em>Car</em></span></span><span style="color:#000000;"><span style="font-size:small;"> e onde teriamos a criação de um objeto, estamos na verdade definindo uma subclasse de </span></span><span style="color:#000000;"><span style="font-size:small;"><em>Car</em></span></span><span style="color:#000000;"><span style="font-size:small;">, isso mesmo, quando declaramos classes anônimas estamos na verdade criando uma subclasse do tipo do objeto, não da referência. Dentro da classe anônima, pode ser feito qualquer coisa, que for feito em outra classe interna , até mesmo acesso aos seus membros.</span></span></span></span></p>
<p><span style="font-family:Times New Roman,serif;"><span style="font-size:x-small;"><span style="color:#000000;"><span style="font-size:small;"> Outro local, onde podesse ser empregado esta prática é na criação de implementadores. Exemplo, onde </span></span><span style="color:#000000;"><span style="font-size:small;"><em>Car</em></span></span><span style="color:#000000;"><span style="font-size:small;"> poderia ser uma interface, é o único local na linguagem Java, onde daremos um </span></span><span style="color:#000000;"><span style="font-size:small;"><em>new</em></span></span><span style="color:#000000;"><span style="font-size:small;"> em um interface. Com relação aos modificadores, segue a regra de qualquer variável local, se declarada em um método. Outra, não esqueção de adicionar o ponto-e-virgula depois da chave de fechamento (causará erro de compilação) e não podem conter membros </span></span><span style="color:#000000;"><span style="font-size:small;"><em>static</em></span></span><span style="color:#000000;"><span style="font-size:small;">.</span></span></span></span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-size:small;"><strong>Classes Anônimas Definidas no Argumento</strong></span></p>
<p><span style="font-size:small;"> Das classes definidas no argumento, não tem muito o que se falar, devido a única diferença é a forma de declaração eo local obviamente. Veja.</span></p>
<p><span style="font-size:small;"><a href="http://iteixeira.wordpress.com/files/2009/11/anony2.jpg"><img class="size-medium wp-image-62 alignnone" title="Anony2" src="http://iteixeira.wordpress.com/files/2009/11/anony2.jpg?w=300" alt="" width="300" height="274" /></a></span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-size:small;">Percebi, quase igual. Podendo também ser usada com interfaces, não pode ter membros <em>static</em>. Sobre classes anônimas acaba por aqui. Vamos entrar agora nas classes internas estáticas.</span></p>
<p><span style="font-size:small;"><strong>Classes Estáticas</strong></span></p>
<p><span style="font-size:small;"> As classes estáticas são declaradas fora de qualquer método, já vimos que as classes internas de método só podem ter com modificador (não relacionado a acesso) o <em>final. </em>As classes estáticas diferem das comuns, por não poderem acessar membros de instâncias e a forma de instância-las. Os modificadores são os mesmos da classes interna comum. Abaixo um exemplo da declaração.</span></p>
<p><span style="font-size:small;"><a href="http://iteixeira.wordpress.com/files/2009/11/static.jpg"><img class="alignnone size-medium wp-image-66" title="static" src="http://iteixeira.wordpress.com/files/2009/11/static.jpg?w=300" alt="" width="300" height="144" /></a></span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-size:small;">Facil! &#8211; A maneira de instânciar uma classe estática é um pouco diferente, já que ela não precisa de uma instância de sua classe externa, para ser instanciada. Vejamos:</span></p>
<p><a href="http://iteixeira.wordpress.com/files/2009/11/inst_static.jpg"><img class="alignnone size-medium wp-image-67" title="inst_static" src="http://iteixeira.wordpress.com/files/2009/11/inst_static.jpg?w=300" alt="" width="300" height="79" /></a></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --><span style="font-size:small;">Para fixar, vou repetir mais uma vez, classes estáticas não tem acesso aos membros de instância da classe externa. E é isso ai, nossos posts sobre classes internas acabam por aqui!</span></p>
<p><span style="font-size:small;">Obrigado, até o próximo pessoal!</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Programação Orientada Objetos para todos]]></title>
<link>http://robsonalecio.wordpress.com/2009/11/20/programacao-orientada-objetos-para-todos/</link>
<pubDate>Fri, 20 Nov 2009 14:47:41 +0000</pubDate>
<dc:creator>robsonalecio</dc:creator>
<guid>http://robsonalecio.wordpress.com/2009/11/20/programacao-orientada-objetos-para-todos/</guid>
<description><![CDATA[Ontem a noite estava voltando para casa eu e minha dignissíma ilustríssima exuberante linda devotada]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ontem a noite estava voltando para casa eu e minha <span style="text-decoration:line-through;">dignissíma ilustríssima exuberante linda devotada e maravilhosa</span> esposa de carona com um casal de amigos e a irmã da nossa amiga (que é nossa amiga também) e iamos conversando sobre vários assuntos. De repente comentei que antes de vir para Curitiba (sim, eu moro aqui onde faz muito frio e até a gente mofa, sério!) eu estava cursando uma pós-graduação. A nossa amiga perguntou toda interessada:<br />
- Sério? Fazia pós de que?<br />
Eu todo solicito respondi:<br />
- Programação Orientada a Objetos.<br />
Nessa hora eu me senti o nerd dos nerds. Poxa vida, como eu fui idiota. Para mim programação orientada a objetos [momento advogado ON] daqui por diante referida como POO [momento advogado OFF] é comum como faca para açogueiro.<br />
No meu contexto isso tão natural, mas tão natural que até minha mulher já está acostumada com alguns termos, técnicas e até piadas. Sério, sabe aquelas piadas de profissão, tipo &#8220;Existem 10 tipos de pessoas aquelas que sabem binário e as que não sabem&#8221;. Se você não entendeu essa piada tudo bem, você é normal e ainda goza de perfeita saúde, ok? Não precisa se preocupar, <a title="Explicação sobre binário na Wikipedia" href="http://pt.wikipedia.org/wiki/Sistema_bin%C3%A1rio_%28matem%C3%A1tica%29" target="_blank">aqui</a> tem uma explicação que você não precisa entender (para continuar a ler o post, pelo menos).<br />
Então, como ia dizendo, isso para mim é tão natural que nem me toquei que ninguém mais no veículo, exceto minha esposa, fazia a menor idéia do que isso seria. Mas, como Deus é bom, a minha amiga perguntou:<br />
- Mas o que é &#8220;Programação Orientada a Objetos&#8221;.<br />
Neste momento foi que a situação ficou mais complicada. Veja bem caro amigo internauta, para fazer alguns universitários entenderem o que é POO ao longo de 2 ou 3 anos já é díficil. Agora imagina eu tendo que explicar da maneira mais simples possível para um público totalmente leigo no assunto o que é POO. É uma missão digna de Jack Bauer, Macgyver ou Chuck Norris.<br />
Não sei se foi totalmente eficiente a explicação, sabe? O fato é que ou a explicação ficou realmente boa ou eles são camaradaços meus e ótimos atores porque o ar de &#8220;Nossa! Que Legal&#8221; e &#8220;Entendi! Isso é bom pra caramba&#8221; que eles fizeram dava para pintar um quadro, de tão nítido que foi.</p>
<p>A idéia deste post é justamente apresentar uma explicação <strong>nem um pouco técnica</strong>, mas sim didática e simples sobre o que é POO.</p>
<p>Vamos lá, apesar do nome ser bastante intuitivo ele não é muito claro, afinal alguém que ler isso pode pensar &#8220;Hummm, programação orientada a objetos deve ser para fazer programas para celular, TV, DVD player, afinal eles são objetos.&#8221;. Se você pensa não existem pessoas capaz disso então leia o post <a title="Estórias da Vida (1)" href="http://robsonalecio.wordpress.com/2009/11/18/estorias-da-vida-1/" target="_blank">Estórias da Vida (1)</a>.</p>
<p>Vejamos como é simples. Exemplo: Neste presente momento você deve estar de frente com um monitor que está sobre uma mesa e você está sentado em uma cadeira. Monitor, mesa e cadeira são objetos. Mesa e cadeira são móveis certo? Então se fossemos fazer um sistema de loja de móveis  teriamos que dizer ao computador que ele está trabalhando com móveis.</p>
<p>Bom neste ponto já temos o objeto de negócio e o contexto que é loja de móveis.</p>
<p>O que é interessante para uma loja de móveis saber sobre todo e qualquer móvel que ela tenha?<br />
Respondo, são altura, largura, comprimento, peso, cor e marca.<br />
Isso são atributos dos objetos, no caso os móveis, independente de quais sejam os móveis tem esses atributos. Podem ter outros, mas consideremos apenas esses que são relevantes ao nosso contexto.<br />
Em uma pseudo linguagem de programação seria isso:</p>
<p>Movel<br />
atributos: altura, largura, comprimento, peso, cor marca.</p>
<p>No caso da cadeira ela terá tudo o que um móvel tem e uma caracteristica a mais: rodinhas. Uma cadeira pode ou não ter rodinhas. Isso seria um atributo exclusivo da cadeira além de ter todos os outros de móveis.</p>
<p>Cadeira é Movel<br />
atributos: temRodinhas.</p>
<p>Nota: O computador já saberia que sendo móvel Cadeira tem os atributos dele e mais o que foram específicados aqui.</p>
<p>Além de atributos um objeto pode ter comportamentos. Vamos usar um monte de imaginação agora. Muita imaginação mesmo.<br />
Digamos que o nosso sistema de móveis faz testes em cadeiras de rodas motorizadas (Eu disse que era para usar a imaginação, não disse?).<br />
A cadeira de rodas motorizada (neste contexto que é bem absurdo, mas já que estamos usando a imaginação vamos desligar um pouco o realismo) seria um tipo de cadeira que tem rodas (atributo da cadeira) e um motor (atributo exclusivo da cadeira de rodas motorizada).</p>
<p>No caso teriamos uma cadeira capaz de ir em várias direções, mas como ela faria isso?<br />
Digamos que para ir para frente o motor faria força nas rodas, para trás ele mudaria o sentido de rotação das rodas e faria força nelas, para virar para direita ele faria mais força na roda esquerda que na direita e para esquerda o contrário (Meio confuso né?).<br />
Então em pseudo linguagem ficaria:</p>
<p>CadeiraDeRodasMotorizada é Cadeira<br />
atributos: motor.</p>
<p>comportamento fazerForcaNasRodas com: intensidadeParaRodaEsquerda, intensidadeParaRodaDireita é:<br />
rodarRodaComIntensidade usando: ESQUERDA, intensidadeParaRodaEsquerda.<br />
rodarRodaComIntensidade usando: DIREITA, intensidadeParaRodaDireita.<br />
fimDoComportamento.</p>
<p>comportamento irRetoParaFrente é:<br />
fazerForcaNasRodas usando: 10, 10.<br />
fimDoComportamento.</p>
<p>comportamento irRetoParaTras é:<br />
inverterSentidoDeRotacaoDasRodas.<br />
fazerForcaNasRodas usando: 10, 10.<br />
fimDoComportamento.</p>
<p>comportamento virarParaDireita é:<br />
fazerForcaNasRodas usando: 10, 5.<br />
fimDoComportamento.</p>
<p>comportamento virarParaEsquerda é:<br />
fazerForcaNasRodas usando: 5, 10.<br />
fimDoComportamento.</p>
<p>Neste caso temos as seções de comportamento que diz quais comportamentos a cadeira de rodas motorizada tem e o que eles fazem. Não listei aqui como que acontece o inverterSentidoDeRotacaoDasRodas e rodarRodaComIntensidade e nem da onde veio o ESQUERDA e DIREIRA porque é para ser simples não considero relevante, até porque isso é só um exemplo e tinha falado sobre usar a imaginação, lembra?<br />
Se quiser saber pode me contactar ou procure o curso de tecnologia mais próximo.</p>
<p>Se por acaso tivessemos uma cadeira de rodas motorizada que tivesse acento ejetável (imaginação meu caro, use a imaginação não o realismo) ela seria:</p>
<p>CadeiraDeRodasMotorizadaComAssentoEjetavel é CadeiraDeRodasMotorizada<br />
atributos: assentoEjetavel.</p>
<p>comportamento ejetar é:<br />
ativarAssentoEjetavel.<br />
fimDoComportamento.</p>
<p>Neste caso a cadeira de roadas motorizada com assento ejetável teria os atributos de cadeira, de cadeira de rodas motorizada e mais um atributo que seria o assento ejetável. Além disso ela faria tudo que uma cadeira de rodas motorizada faz (irRetoParaFrente, irRetoParaTras, etc.) e além disso ela seria capaz de ejetar o assento.</p>
<p>Não quer usar a imaginação? Acha que uma cadeira de rodas  com assento ejetável é absurdo?<br />
Então pense na seguinte situação: uma pessoa cadeirante usando a sua cadeira de rodas resolve descer uma ladeira, de repente quebram os controles de movimento, as engrenagem e freios de forma que a cadeira começa a acelerar rapidamente. No fim da ladeira está vindo um ônibus biarticulado (coisa comum em Curitiba, então a situação seria aqui, tá?). O motorista do ônibus está todo feliz e contente dirigindo o veículo e começa a andar porque o sinal abriu. Daí o cadeirante que está na cadeira desembestada ladeira abaixo vê que inevitávelmente irá colidir com o grande veículo de transporte coletivo. Antes da colisão garanto que ele pensaria: &#8220;Poxa, se minha cadeira fosse aquela com assento ejetável eu teria usado logo que ela começou acelerar&#8221;.<br />
Pronto. Se tivesse sido uma cadeira motorizada com assento ejetável ele poderia ter se salvado.</p>
<p>Bem, justificativas a parte, depois dos comportamentos definidos basta usarmos eles atraves de uma tela, controle remoto ou seja lá como você imaginou que isto será feito.</p>
<p>É claro que na prática existe muito mais coisa do que isso, mas espero que com essa explicação e exemplo já dá para ter uma boa idéia do que é POO.</p>
<p>Ah, e principalmente, acho que já dá para explicar para quem não sabe nada de programação o que é POO ou passar esse post.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Programação Orientada a Objetos e o Impacto na Performance]]></title>
<link>http://ronanlucio.wordpress.com/2009/11/18/programacao-orientada-a-objetos-e-o-impacto-na-performance/</link>
<pubDate>Wed, 18 Nov 2009 21:20:55 +0000</pubDate>
<dc:creator>Ronan Lucio</dc:creator>
<guid>http://ronanlucio.wordpress.com/2009/11/18/programacao-orientada-a-objetos-e-o-impacto-na-performance/</guid>
<description><![CDATA[A uns tempos atrás rolou uma thread na lista cfbrasil sobre Programação Estruturada X Programação Or]]></description>
<content:encoded><![CDATA[A uns tempos atrás rolou uma thread na lista cfbrasil sobre Programação Estruturada X Programação Or]]></content:encoded>
</item>
<item>
<title><![CDATA[Certificação SCJP - Orientação a Objetos]]></title>
<link>http://flavi0ribeiro.wordpress.com/2009/11/02/certificacao-scjp-orientacao-a-objetos/</link>
<pubDate>Mon, 02 Nov 2009 17:54:31 +0000</pubDate>
<dc:creator>Flavio Ribeiro</dc:creator>
<guid>http://flavi0ribeiro.wordpress.com/2009/11/02/certificacao-scjp-orientacao-a-objetos/</guid>
<description><![CDATA[Dando continuidade ao post anterior (Certificação SCJP – Declarações e Controle de Acesso) depois de]]></description>
<content:encoded><![CDATA[Dando continuidade ao post anterior (Certificação SCJP – Declarações e Controle de Acesso) depois de]]></content:encoded>
</item>
<item>
<title><![CDATA[Apresentação]]></title>
<link>http://quetalumprograma.wordpress.com/2009/10/27/apresentacao/</link>
<pubDate>Tue, 27 Oct 2009 21:40:44 +0000</pubDate>
<dc:creator>Gustavo Costa</dc:creator>
<guid>http://quetalumprograma.wordpress.com/2009/10/27/apresentacao/</guid>
<description><![CDATA[Visual Basic (VB) é uma linguagem de programação baseada na linguagem original de DOS chamado BASIC ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Visual Basic (VB) é uma linguagem de programação baseada na linguagem original de DOS chamado BASIC (Beginners &#8216;All-purpose Symbolic Instruction Code). VB.NET 2005, é um desdobramento do Visual Basic, é uma linguagem de programação orientada e baseada em VB que é implementado usando o Microsoft.NET Framework. É uma linguagem totalmente orientada a objetos.</p>
<h3 style="text-align:center;"><span style="text-decoration:underline;"><span style="color:#000000;"><strong>Programação Orientada a Objetos</strong></span></span></h3>
<p><strong><br />
</strong></p>
<address>A diferença da programação estruturada para a programação Orientda a objetos, é que a estruturada consiste em dividir o programa em módulos para resolver o problema em partes, e a Orientada a objetos consiste em estudar as entidades e as relações entre elas.</address>
<p><em> </em></p>
<address><strong><em>Objeto</em></strong><em><br />
</em></address>
<address><em> Um objeto é tudo aquilo que existe. Poderia ser um cliente, um carro, um relógio. Em termo computacional um objeto é a representação de algo que existe. Você deve abstrair um &#8220;objeto&#8221; real para representá-lo computacionalmente, como, por exemplo, construir o objeto carro.</em></address>
<address><em><span style="text-decoration:underline;">Abstração</span></em><em> é levar do mundo real pro mundo computacional aquilo de mais importante.</em></address>
<blockquote><p><em>“Abstrair é tirar tudo que é essencial e nada mais.”<br />
Aaron Walsh</em></p></blockquote>
<p><em><br />
</em></p>
<p><em> </em></p>
<address><strong><em>Classe</em></strong></address>
<address><em>Conjunto de atributos ou características, métodos ou ações, onde objeto seria a materialização da classe. </em></address>
<address><em>Sendo mais específico <span style="text-decoration:underline;">classe</span></em> seria o objeto abstrato construído computacionalmente, em outras palavras classe é como se fosse um molde, você constrói o molde e depois utiliza para fazer diversos objetos.</address>
<p><em> </em></p>
<p><em> </em></p>
<p><strong><em>Os 3 pilares da Programação Orientada a Objetos são:</em></strong><em> </em></p>
<ul>
<li><em><span style="text-decoration:underline;">Encapsulamento</span></em><strong><em>: </em></strong><em>É um mecanismo interno do      objeto, &#8220;escondido&#8221; do usuário, uma caixa preta, onde se mostra      a saida mais não se mostra o processamento.</em></li>
<li><em><span style="text-decoration:underline;">Herança</span></em><strong><em>:</em></strong><em> É um mecanismo que nos      permite basear uma nova classe a partir de uma existente.</em></li>
<li><span style="text-decoration:underline;">Polimorfismo:</span> Polimorfismo é uma      facilidade que permite que dois ou mais objetos diferentes respondam a      mesma mensagem.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Herança - Orientação a Objetos]]></title>
<link>http://hasmira.wordpress.com/2009/10/05/heranca-orientacao-a-objetos/</link>
<pubDate>Mon, 05 Oct 2009 20:38:14 +0000</pubDate>
<dc:creator>hasmira</dc:creator>
<guid>http://hasmira.wordpress.com/2009/10/05/heranca-orientacao-a-objetos/</guid>
<description><![CDATA[2 Capítulo: Objetivo 5.5 Desenvolver código que implemente relacionamentos é-um e/ou tem-um. Herança]]></description>
<content:encoded><![CDATA[2 Capítulo: Objetivo 5.5 Desenvolver código que implemente relacionamentos é-um e/ou tem-um. Herança]]></content:encoded>
</item>
<item>
<title><![CDATA[Mapeamento de persistência]]></title>
<link>http://amorimgabriel.wordpress.com/2009/09/30/mapeamento-de-persistencia/</link>
<pubDate>Wed, 30 Sep 2009 11:57:57 +0000</pubDate>
<dc:creator>Gabriel Amorim</dc:creator>
<guid>http://amorimgabriel.wordpress.com/2009/09/30/mapeamento-de-persistencia/</guid>
<description><![CDATA[As camadas de um software são projetadas durante o projeto de arquitetura do software. Uma camada ba]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;">As camadas de um software são projetadas durante o projeto de arquitetura do software. Uma camada bastante relevante é a camada de persistência, embora nem todo software a implemente deixando para a camada de negócio controlar o armazenamento de dados.</p>
<p style="text-align:justify;">O objetivo da camada de persistência é exatamente isolar das camadas de fronteira, negócio e controle o mecanismo de armazenamento de dados.</p>
<p style="text-align:justify;">Em um projeto de software, especificamente utilizando o método de orientação a objetos, classificamos os objetos como transientes e persistentes. Um objeto transiente existe somente na memória principal durante a execução do programa, já o objeto persistente deve ter sua existência garantida ao término da execução do programa.</p>
<p style="text-align:justify;">Um objeto deve ser persistido (armazenado) em meios de armazenamento permanentes &#8211; banco de dados ou arquivos tradicionais.</p>
<p style="text-align:justify;">Geralmente é feito o mapeamento de cada classe para uma tabela de um banco de dados relacional. Cada atributo é mapeado para um campo da tabela.</p>
<p style="text-align:justify;">As associações entre classes são implementadas no banco de dados por meio de chaves estrangeiras.</p>
<p style="text-align:justify;">Quando a associação é de muitos para muitos, cria-se uma nova tabela que absorva as chavez primárias das tabela relacionadas (ou classes relacionadas).</p>
<p style="text-align:justify;">A herança/generalização pode ser implementada:</p>
<p style="text-align:justify;">- Criando-se uma tabela para a classe genérica e uma para cada classe específica;<br />
- Utilizando-se uma tabela única que absorva todos os atributos da classe genérica e de todas as classes específicas;<br />
- Ou criando uma tabela para cada classe específica.</p>
<p style="text-align:justify;">Outra possibilidade é utilizar um <a href="http://amorimgabriel.wordpress.com/2009/09/30/banco-de-dados-orientado-a-objetos-uma-visao-geral/" target="_blank">banco de dados orientado a objetos</a>, dessa forma não é necessário preocupar-se com o mapeamento de classes para tabelas.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Banco de dados orientado a objetos, uma visão geral]]></title>
<link>http://amorimgabriel.wordpress.com/2009/09/30/banco-de-dados-orientado-a-objetos-uma-visao-geral/</link>
<pubDate>Wed, 30 Sep 2009 11:49:23 +0000</pubDate>
<dc:creator>Gabriel Amorim</dc:creator>
<guid>http://amorimgabriel.wordpress.com/2009/09/30/banco-de-dados-orientado-a-objetos-uma-visao-geral/</guid>
<description><![CDATA[Atualmente, a clássica modelagem de dados entidade-relacionamento mostra-se ineficiente e custosa de]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;">Atualmente, a clássica modelagem de dados entidade-relacionamento mostra-se ineficiente e custosa de ser implementada juntamente com tecnologias recentes, como por exemplo, a programação orientada a objetos. Quando a modelagem entidade-relacionamento foi desenvolvida, não existiam perspectivas para aplicações mais complexas, juntamente com os tipos de dados complexos providos pelas mesmas.</p>
<p style="text-align:justify;">A partir da década de 90, com o avanço do hardware e das interfaces gráficas, novas aplicações complexas (do ponto de vista de dados) começaram a surgir, proporcionadas pela orientação a objetos. A príncipio, bancos de dados relacionais eram utilizados nessas aplicações, entretanto era muito custoso mapear os tipos de dados necessários as aplicações para o modelo entidade-relacionamento. Surgiu então a necessidade por bancos de dados capazes de armazenar esses dados de forma simples e integrada com a aplicação, pois em orientação a objetos, tratam-se objetos e não registros e entidades, como propõem o modelo entidade-relacionamento.</p>
<p style="text-align:justify;">Essa necessidade foi sanada com o surgimento dos bancos de dados orientados a objetos, que armazenam de forma nativa os objetos gerados pela programação orientada a objetos sem a necessidade de conversão ou mapeamento de um tipo complexo de dados criado em uma aplicação orientada a objetos para um modelo relacional.</p>
<div id="attachment_32" class="wp-caption aligncenter" style="width: 280px"><img class="size-full wp-image-32" title="bd-objetos" src="http://amorimgabriel.wordpress.com/files/2009/09/bd-objetos.jpg" alt="Banco de Dados orientado a objetos: os objetos são armazenado naturalmente no banco de dados, sem a necessidade de mapeamento para tabelas em um banco de dados relacional." width="270" height="52" /><p class="wp-caption-text">Banco de Dados orientado a objetos: os objetos são armazenado naturalmente no banco de dados, sem a necessidade de mapeamento para tabelas em um banco de dados relacional.</p></div>
<p style="text-align:justify;">Essa abordagem torna muito mais simples e conveniente a programação orientada a objetos e a manipulação dos determinados tipos de dados gerados por este tipo de programação.  Com o uso de um banco de dados orientado a objetos, a manipulação dos dados junto ao banco de dados torna-se algo natural, incorporado a linguagem em que a aplicação foi desenvolvida.</p>
<p style="text-align:justify;">
<p style="text-align:justify;">Retirado de <strong>AMORIM, Gabriel e BRAGA, Daniel</strong>. <i>Bancos de dados orientados a objetos &#8211; uma abordagem prática utilizando o db4objects</i>. UNIFIEO. Osasco &#8211; 2009.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Orientação a Objetos: Classes X Objetos (Parte 1)]]></title>
<link>http://jonathanssantos.wordpress.com/2009/09/20/orientacao-a-objetos-classes-x-objetos-parte-1/</link>
<pubDate>Sun, 20 Sep 2009 01:14:09 +0000</pubDate>
<dc:creator>jonathanssantos</dc:creator>
<guid>http://jonathanssantos.wordpress.com/2009/09/20/orientacao-a-objetos-classes-x-objetos-parte-1/</guid>
<description><![CDATA[Classe: Uma Estrutura de um determinado objeto, possui atributos e métodos para definir este objeto.]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Classe: </strong>Uma Estrutura de um determinado objeto, possui atributos e métodos para definir este objeto. Toda classe vai servi de base para criação de objetos.</p>
<p style="text-align:left;">Digamos uma Classe:</p>
<blockquote>
<p style="text-align:left;"><span style="color:#ff0000;">public class </span><span style="color:#ff0000;">Carro</span><span style="color:#ff0000;">{</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">private String color;</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">private Integer </span><span style="color:#ff0000;">velocidadeMaxima</span><span style="color:#ff0000;">;</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">public void </span><span style="color:#ff0000;">setColor</span><span style="color:#ff0000;">(String color) { this.color = color; }</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">public String </span><span style="color:#ff0000;">getColor</span><span style="color:#ff0000;">() { return this.color; }</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">public void </span><span style="color:#ff0000;">setVelocidadeMaxima</span><span style="color:#ff0000;">(Integer </span><span style="color:#ff0000;">velocidadeMaxima</span><span style="color:#ff0000;">) { this.velocidadeMaxima = velocidadeMaxima; }</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">public Integer </span><span style="color:#ff0000;">getVelocidadeMaxima</span><span style="color:#ff0000;">() { return this.velocidadeMaxima; }</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">}</span></p>
</blockquote>
<p style="text-align:left;"><strong>Atributos e métodos: </strong></p>
<p style="text-align:left;">Atributos: São opções que definem tua classe, forma correta é coloca-los private! Porque? Porque ninguém altera o valor deles direto, é um intermédio através dos métodos gets e sets.</p>
<p style="text-align:left;">Métodos: São funções que definem as opções da tua classe.</p>
<p style="text-align:left;">Método get: Utilizado para buscar o valor de um atributo da tua classe.</p>
<p style="text-align:left;">Método set: Utilizado para informar o valor de um atributo da tua classe.</p>
<p style="text-align:left;">
<p style="text-align:left;"><strong>Objeto: </strong>É a instanciação da Classe. É a definição do que vai ser tua classe. Como segue o exemplo abaixo:</p>
<blockquote>
<p style="text-align:left;"><span style="color:#ff0000;">public class </span><span style="color:#ff0000;">AppMain</span><span style="color:#ff0000;">{</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">public static void main (String[] </span><span style="color:#ff0000;">Args</span><span style="color:#ff0000;">){</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">Carro</span><span style="color:#ff0000;"> car = new Carro();</span><strong><span style="color:#ff0000;"> // </span><span style="color:#ff0000;">Apartir</span><span style="color:#ff0000;"> do momento que tu </span><span style="color:#ff0000;">utiliza</span><span style="color:#ff0000;"> o </span><span style="color:#ff0000;">comando</span><span style="color:#ff0000;"> new: é </span><span style="color:#ff0000;">instanciado</span><span style="color:#ff0000;"> um </span><span style="color:#ff0000;">objeto</span><span style="color:#ff0000;">.</span></strong></p>
<p style="text-align:left;"><strong><span style="color:#ff0000;"> </span></strong><span style="color:#ff0000;">car.setVelocidadeMaxima(160); </span><strong><span style="color:#ff0000;">//</span><span style="color:#ff0000;">Setando</span><span style="color:#ff0000;"> a </span><span style="color:#ff0000;">velocidade</span><span style="color:#ff0000;"> máxima para 160.</span></strong></p>
<p style="text-align:left;"><strong><span style="color:#ff0000;"> </span></strong><span style="color:#ff0000;">car.setCor(&#8220;</span><span style="color:#ff0000;">Azul</span><span style="color:#ff0000;">&#8220;); </span><strong><span style="color:#ff0000;">//</span><span style="color:#ff0000;">Setando</span><span style="color:#ff0000;"> a cor do </span><span style="color:#ff0000;">carro</span><span style="color:#ff0000;"> para </span><span style="color:#ff0000;">Azul</span><span style="color:#ff0000;">;</span></strong></p>
<p style="text-align:left;"><span style="color:#ff0000;">}</span></p>
<p style="text-align:left;"><span style="color:#ff0000;">}</span></p>
</blockquote>
<p style="text-align:left;">Desta maneira, você instanciou um objeto da tua Classe Carro e definiu qual seria o carro com que gostaria de trabalhar.</p>
<p style="text-align:left;">
<p style="text-align:left;">Esta é uma maneira prática de Definição de classe e objeto.</p>
<p style="text-align:left;">Classe é a receita do teu bolo, quando tu vai fazer um bolo, tu precisaria de uma receita. A classe é esta receita.</p>
<p style="text-align:left;">
<p style="text-align:left;">E o objeto é o bolo após você seguir as instruções da receita e saber o que deve ser posto ou o que deve fazer!</p>
<p style="text-align:left;">
<p style="text-align:left;">Primeira da Série sobre orientação a objetos.</p>
<p style="text-align:left;">Na próxima vez teremos assunto de interfaces e definições de classe.</p>
<p style="text-align:left;">
<p style="text-align:left;">Obrigado, qualquer coisa pode me contatar pelo meu e-mail.</p>
<p style="text-align:left;">Atenciosamente,</p>
<p style="text-align:left;">Jonathan Souza Santos</p>
<p style="text-align:left;">Programador Java (Web / Desktop / Mobile)</p>
<p style="text-align:left;">Twitter ~&#62; http://twitter.com/JhonyProgrammer</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Criar 2 construtores diferentes em PHP]]></title>
<link>http://diogobesson.wordpress.com/2009/09/17/criar-2-construtores-diferentes-em-php/</link>
<pubDate>Thu, 17 Sep 2009 19:24:49 +0000</pubDate>
<dc:creator>diogobesson</dc:creator>
<guid>http://diogobesson.wordpress.com/2009/09/17/criar-2-construtores-diferentes-em-php/</guid>
<description><![CDATA[Criar 2 construtores diferentes em PHP Encontrei esse tópico aqui na minha análise de buscas dentro ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Criar 2 construtores diferentes em PHP</strong></p>
<p>Encontrei esse tópico aqui na minha análise de buscas dentro deste blog como um dos mais procurados, então resolvi que deveria comentar um pouco sobre esse caso.</p>
<p>Como o pessoal que acompanha esse weblog deve lembrar, concluí há pouco tempo atrás o curso da <a title="Academia do Java Globalcode São Paulo" href="http://www.globalcode.com.br/" target="_blank">Academia do Java, na Globalcode, em São Paulo</a>. Esse curso me ensinou muito (graças ao <a title="java bar giulian dalton luz instrutor java" href="http://www.javabar.com.br/" target="_blank">mestre Jedi, sr. Giulian Dalton Luz</a>) sobre <a title="orientação a objetos" href="http://pt.wikipedia.org/wiki/Orienta%C3%A7%C3%A3o_a_objetos" target="_blank">orientação a objetos</a>.</p>
<p>Um dos tópicos abordados foi &#8220;<a title="sobrecarga" href="http://pt.wikipedia.org/wiki/Sobrecarga" target="_blank">overload</a>&#8220;, que significa &#8220;sobrecarregar&#8221; um certo método (<a title="polimorfismo" href="http://pt.wikipedia.org/wiki/Polimorfismo" target="_blank">veja também, polimorfismo</a>), fazendo com que ele possa ser chamado de maneiras diferentes, passando parâmetros diferentes ou nenhum parâmetro na sua composição.</p>
<p>Como funciona essa parte de OO no PHP? Do mesmo jeito que no Java, oras! Ou pelo menos, deveria ser, pois orientação a objetos é um conceito e não uma linguagem. Ela não pode ser diferente ou variável de acordo com o projeto.</p>
<p>Acontece que, pela <a title="overload sobrecarga no php" href="http://www.php.net/__callstatic" target="_blank">gênese do PHP</a>, a orientação a objetos foi adaptada, enquanto que no Java, ela é nativa. Isso dá margem a uma série de diferenciações.</p>
<p>Minha fonte foi o fórum da <a title="bytes.com" href="http://bytes.com/" target="_blank">bytes.com</a>:<br />
<a title="forum bytes.com" href="http://bytes.com/topic/php/answers/497948-constructor-overloading-php" target="_blank">http://bytes.com/topic/php/answers/497948-constructor-overloading-php</a></p>
<p>Se você tentar programar as seguintes linhas:</p>
<p><span style="color:#0000ff;">class Teste{<br />
function __construct($usuario){<br />
}<br />
function __construct($usuario, $senha){<br />
}<br />
function __construct($usuario, $senha, $nome){<br />
}<br />
}</span></p>
<p>Receberá o seguinte erro:<br />
<span style="color:#ff0000;">Fatal error: Cannot redeclare Teste::__construct()</span></p>
<p>Em linhas brasileiras, isso é um erro fatal de redeclaração de método dentro de uma classe.</p>
<p><strong>E agora? Se o overload dá esse erro, como eu faço? Redeclaração não é quase sinônimo de overload? Como pode existir overload se redeclarações não são permitidas?</strong></p>
<p><strong>Calma&#8230;&#8230;&#8230;&#8230;&#8230;..</strong></p>
<p><span style="color:#ff0000;">Atenção, pessoal!</span><br />
Segundo o conceito do PHP, isso não é considerado gambi:</p>
<p><span style="color:#0000ff;">class Teste{<br />
function __construct($usuario, $senha=&#8221;", $nome=&#8221;"){<br />
}<br />
}</span></p>
<p>Dessa maneira você pode codificar:</p>
<p><span style="color:#0000ff;">$x = new Teste(&#8220;usuario&#8221;);</span><br />
ou<br />
<span style="color:#0000ff;">$x = new Teste(&#8220;usuario&#8221;, &#8220;senha&#8221;);</span><br />
ou<br />
<span style="color:#0000ff;">$x = new Teste(&#8220;usuario&#8221;, &#8220;senha&#8221;, &#8220;nome&#8221;);</span></p>
<p>Os argumentos que não forem passados serão iguais a &#8220;&#8221;, que no caso é o valor default para $senha e $nome.</p>
<p>Isso acontece porque, segundo <a title="um dos caras" href="http://bytes.com/topic/php/answers/497948-constructor-overloading-php#post1931799" target="_blank">Janwillem Borleffs</a>, <strong>overload é suportado no PHP, porém não da mesma forma como ele é suportado no Java</strong>.</p>
<p>Justo!</p>
<p>um abraço.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[PHP - Começando a Orientação a Objeto]]></title>
<link>http://ricogama.wordpress.com/2009/09/17/php-comecando-a-orientacao-a-objeto/</link>
<pubDate>Thu, 17 Sep 2009 15:33:04 +0000</pubDate>
<dc:creator>Ricardo Gama</dc:creator>
<guid>http://ricogama.wordpress.com/2009/09/17/php-comecando-a-orientacao-a-objeto/</guid>
<description><![CDATA[Vamos falar sobre a orientação a objeto. No começo pode parecer um bicho de sete cabeças, mas depois]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Vamos falar sobre a orientação a objeto. No começo pode parecer um bicho de sete cabeças, mas depois de entender a essência, tudo vai fluir de forma natural.  <!--more-->Vou dividir esse assunto em várias partes para que não fique um post imenso. E vamos começar falando das Classes (uhul&#8230; não podia ser diferente).</p>
<h2>1 &#8211; Classes</h2>
<p>Pense numa classe como um container de métodos e atributos. Vamos ao Exemplo:</p>
<div id="cod_exe" style="background-color:#e2e2e2;border:1px solid #ccc;padding:5px;">
<code><br />
Class Foo<br />
{</p>
<p style="padding-left:20px;">
public $nome = "oi"; // isso é uma variável da classe, também chamado de atributo.(por enquanto ela pública...)</p>
<p style="padding-left:20px;">
public function mostra() // isso é um método (também público)<br />
{<br />
<span style="padding-left:30px;">echo $this-&#62;nome; // mandamos ele dar um echo na variável da classe nome;</span><br />
}
</p>
<p>}<br />
</code>
</div>
<p>Criamos a nossa primeira classe. Vou explicar algumas coisas sobre a nossa classe:<br />
1 &#8211; Temos uma variável da classe com o nome &#8220;$nome&#8221; e ela tem o valor &#8220;oi&#8221; por padrão.<br />
2 &#8211; Temos um método com o nome &#8220;mostra&#8221; que também é público. </p>
<p>Ok, algumas observações:<br />
Como eu programo em Java, coloquei o nome da minha classe em maiúsculo. É um padrão que se segue, até pq no java, uma classe com nome em minúsculo o programa nem vai rodar, pq o compilador não irá deixar. Mas estamos falando de PHP. <br />No PHP não existe essa obrigatoriedade, eu coloquei apenas pq já é um costume meu. Mas poderia ser com o nome &#8220;foo&#8221; sem problemas. <br />Crie uma pasta classes e salve seu arquivo com o nome: class.foo.php. O nome pode ser qualquer um. Coloquei dessa forma por uma questão de padrões que é muito usado no php, salvar da seguinte forma: class.nome_da_classe.php.</p>
<p>Note que dentro do método mostrar() usamos o $this. o $this no PHP é usado pra dizer que eu to usando um método ou um atributo da classe em questão. No próximo post isso vai ficar mais claro. Ok, temos a nossa classe, então vamos a prática de usar a nossa classe. Vamos criar uma página chamada teste.php e vamos incluir nossa classe nessa página.</p>
<div id="cod_exe" style="background-color:#e2e2e2;border:1px solid #ccc;padding:5px;">
<code><br />
&#60;?php<br />
include(&#34;classes/class.foo.php&#34;);</p>
<p>$foo = new Foo;<br />
$foo-&#62;mostra();<br />
?&#62;<br />
</code>
</div>
<p>teremos a seguinte saída no navegador:<br />
oi</p>
<p>Vamos a explicação:<br />
Demos o include da nossa classe na nossa página teste.php. Criamos a variável foo e instânciamos a classe Foo pelo comando &#8220;new&#8221;. Toda vez que quisermos instânciar uma classe, devemos usar o comando new. Agora nossa variável $foo contém um objeto, que no nosso caso é a classe Foo.<br />
chamamos o método mostrar() da classe Foo, com o seguinte comando:<br />
$foo-&#62;mostrar();<br />
Como isso foi possível?<br />
Na variável foo, como já disse, temos nossa classe. Então na variável foo, temos uma referência a nossa classe Foo, que contém o método mostrar. Quando quisermos acessar um método ou um atributo da classe, usamos o &#8220;-&#62;&#8221; para acessar o que desejamos.<br />
Se você quiser testar isso o que acabei de falar, execute o seguinte código:</p>
<div id="cod_exe" style="background-color:#e2e2e2;border:1px solid #ccc;padding:5px;">
<code><br />
&#60;?php<br />
include(&#34;classes/class.foo.php&#34;);</p>
<p>$foo = new Foo;<br />
print_r($foo);<br />
?&#62;<br />
</code>
</div>
<p>Rode isso e você vai ver que será printado tudo o que existe na classe Foo, e que poderemos acessar pela variável foo, que é uma referência a nossa classe.</p>
<p>Pode parecer complicado, mas aos poucos iremos clareando tudo. No próximo post vou falar sobre tipos de visibilidade (o tal do public e os outros que iremos ver), vamos falar também de construtores e como modificar valores de atributos&#8230;. enfim, vai ser bem abrangente. E falarei mais sobre o $this. Isso as vezes causa uma certa confusão em quem está iniciando.</p>
<p>Um abraço e até a próxima!!!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Video aula sobre Orientação a Objetos]]></title>
<link>http://dilbertorosa.wordpress.com/2009/09/06/voce-sabe-o-que-e-orientacao-a-objetos/</link>
<pubDate>Sun, 06 Sep 2009 16:37:01 +0000</pubDate>
<dc:creator>dilbertorosa</dc:creator>
<guid>http://dilbertorosa.wordpress.com/2009/09/06/voce-sabe-o-que-e-orientacao-a-objetos/</guid>
<description><![CDATA[Se você está iniciando no mundo de orientação a objetos ou apenas quer relembrar os pricipais concei]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Se você está iniciando no mundo de orientação a objetos ou apenas quer relembrar os pricipais conceitos, vai encontrar aqui uma vídeo aula bem descontraída. O vídeo vai te ajudar a entender com diversos exemplos do mundo real.  Bom aprendizado!</p>
<p><span style='text-align:center; display: block;'><object width='425' height='350'><param name='movie' value='http://www.youtube.com/v/t9Cd7EWL0eo&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' /><param name='allowfullscreen' value='true' /><param name='wmode' value='transparent' /><embed src='http://www.youtube.com/v/t9Cd7EWL0eo&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;hd=0' type='application/x-shockwave-flash' allowfullscreen='true' width='425' height='350' wmode='transparent'></embed></object></span></p>
<p>Boa semana!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Conceito básico de OO]]></title>
<link>http://alanrossi.wordpress.com/2009/08/31/conceito-basico-de-oo/</link>
<pubDate>Mon, 31 Aug 2009 15:48:21 +0000</pubDate>
<dc:creator>Alan Rossi</dc:creator>
<guid>http://alanrossi.wordpress.com/2009/08/31/conceito-basico-de-oo/</guid>
<description><![CDATA[Poderíamos dizer muito a respeito da programação, baseada em objetos (OOP &#8211; Object-Oriented Pr]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Poderíamos dizer muito a respeito da programação, baseada em objetos (OOP &#8211; Object-Oriented Programming). Para simplificar, as linguagens baseadas em objetos consistem em três maneiras principais para realizar a atividade de programação. </p>
<p>Toda função e grupo de funções inter-relacionadas (chamadas classes) não devem afetar os valores de dados em outras funções; a isso se chama encapsulamento. </p>
<p>A linguagem deve permitir que você reutilize grande parte do seu código em funções semelhantes, em lugar da velha maneira de copiar seu código antigo e efetuar alterações. </p>
<p>As funções que herdam características de cada uma das outras devem ter a possibilidade de se personalizarem, caso seja necessário; a isso chamamos de polimofirmos. </p>
<p>Para algumas pessoas é difícil a adaptação ao paradigma (ou modo de fazer as coisas) baseadas em objetos. Uma vez implementada, a OO facilita bastante o projeto que pode ser ampliado posteriormente com pouco trabalho.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Por que usar Interfaces?]]></title>
<link>http://iteixeira.wordpress.com/2009/07/30/por-que-usar-interface/</link>
<pubDate>Thu, 30 Jul 2009 02:20:35 +0000</pubDate>
<dc:creator>franciury</dc:creator>
<guid>http://iteixeira.wordpress.com/2009/07/30/por-que-usar-interface/</guid>
<description><![CDATA[Iniciando. . . O uso de interface nos fornece alguns benefícios, os quais não são possíveis quando f]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Iniciando. . .</strong></p>
<p>O uso de interface nos fornece alguns benefícios, os quais não são possíveis quando fazemos o uso de classes abstractas. Você pode se perguntar por que vou usar interface, se ela vai apenas especificar métodos e constantes, os quais poderia definir na própria classe. Que benefícios a interface trará que compensará, a criação de outro arquivo? Para responder estas perguntas vamos saber primeiro o que é essa tal de <em>Interface</em>.</p>
<p><strong>O que é interface?</strong></p>
<p>A interface pode ser vista como um contrato no qual uma ou mais classes irá seguir, ou seja, ao implementar uma determinada interface você estará assumindo a responsabilidade de fornecer uma implementação válida, dos métodos(abstractos) que nela foram definidos, a não ser que a classe de implementação seja <em><span>abstract</span>, </em>sendo assim, a primeira classe concreta terá de fornecer implementação dos métodos declarados na interface. Puxando a sardinha pro meu lado, a <span>Sun</span> também implementou interface no Java, um dos motivos é pelo o fato de Java não ter herança múltipla, ou seja, uma classe só pode ter um &#8220;pai&#8221;, outro motivo, é que a interface nos dar maior flexibilidade de desenvolvimento, sem falar na possibilidade de trabalharmos <span>polimorficamente</span> nossas referências.</p>
<p><strong>Exemplo da necessidade de interfaces</strong><br />
<em><br />
Temos duas classes abstracta: <span>Eletronico</span> e Computador; tenho também classe <span>Notebook</span>;<br />
Como faria para criar a classe <span>Notebook</span> já que, ele é <span>Eletronico</span> e ao mesmo tempo é </em><em>Computador</em><em>, não teríamos como, pois como já falei só podemos herdar uma classe.</em></p>
<p><strong>Implementando interfaces&#8230;</strong></p>
<p>Aqui vamos ao mesmo tempo solucionar o problema acima, e aprender como implementar interfaces em Java. Primeiro criaremos as duas interfaces:</p>
<p><span>public</span> interface <span>Eletronico</span>{<br />
<span> void</span> ligar();<br />
}</p>
<p><span>public</span> interface <em>Computador</em>{<br />
<span>int</span> calcular();<br />
}</p>
<p>Antes de criarmos nossa classe implementadora, vamos conhecer todas as regras de implementação das classes abstractas. As regras são as seguintes:</p>
<ul>
<li><em>Fornecer a implementação dos métodos(caso não seja <span>abstract</span>);</em></li>
<li><em>Seguir as mesmas regras de sobrecarga;</em></li>
<li><em> Não alterar a assinatura, assim como o retorno;</em></li>
<li><em>Não declarar novas exceções (com <span>exceção</span> de todas que sejam <span>RuntimeException</span>);</em></li>
<li><em>Não é preciso declarar as exceções existentes no método da interface;</em></li>
</ul>
<p>agora vamos criar nossa classe de implementação&#8230;</p>
<p><span>public</span> <span>class</span> <span>Notebook</span> <span>implements</span> Computador, <span>Eletronico</span>{</p>
<p>//Instanciando um objeto Notebook, em uma referência a Computador (polimorficamente), benefício de se usar interfaces&#8230;<br />
Computador nb = new Notebook();</p>
<p><span> //</span>Defino a implementação do método, declarando uma <span>RuntimeException</span>, compila por ser uma <span>exceção</span> de Tempo de execução<br />
<span> public</span> <span>int</span> calcular() <span>throws</span> <span>RuntimeException</span>{<br />
<span>return</span> 1;<br />
}</p>
<p>//Defino um corpo para o método de <span>Eletronico</span><br />
<span>public</span> <span>void</span> ligar() {</p>
<p>}</p>
<p>}</p>
<p>Vale lembrar que uma interface pode herdar(<em><span>extends</span></em>) mais de uma interface, mas nunca <span>implentar</span>(<em><span>implements</span></em>) uma interface. Bom galera este artigo termina por aqui, qualquer dúvida é só postar ai, que se estiver ao meu alcance, garanto que ajudo.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Trabalhando com ArrayObject no PHP]]></title>
<link>http://diogobesson.wordpress.com/2009/07/22/trabalhando-com-arrayobject-no-php/</link>
<pubDate>Wed, 22 Jul 2009 21:03:41 +0000</pubDate>
<dc:creator>diogobesson</dc:creator>
<guid>http://diogobesson.wordpress.com/2009/07/22/trabalhando-com-arrayobject-no-php/</guid>
<description><![CDATA[Confesso: O PHP é minha linguagem preferida. Fico aborrecido quando eu tento comparar certas facilid]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Confesso: O PHP é minha linguagem preferida.</strong></p>
<p>Fico aborrecido quando eu tento comparar certas facilidades que algumas linguagens apresentam e comprovo que elas deixam a desejar no PHP.</p>
<p>O conceito de application é uma delas. No ASP é perfeito, no Java é perfeito e no PHP nem existe previsão de quando será implementado. #triste</p>
<p>Outra coisa é o polimorfismo. No PHP, eu acho polimorfético.</p>
<p>Segundo cita SOARES*, na página 291:</p>
<blockquote><p>“Polimorfismo(&#8230;) É a capacidade de dois ou mais objetos responderem à mesma mensagem de diferentes maneiras. Em termos de classes podemos pensar em superclasses e subclasses, em que o mesmo método possui comportamentos e resultados diferentes na superclasse e nas subclasses, desta forma quem chama o método não precisa distinguir qual deve chamar.”</p></blockquote>
<p>Uma boa definição, mas eu iria ainda mais longe ao opinar que o polimorfismo é uma propriedade das classes onde seus objetos instanciados podem ser vistos de maneira distinta pelo servidor ou pelo interpretador de acordo com o contexto onde eles são declarados.</p>
<p>Ficou confuso? Sim&#8230; Você tem um “ser humano”. Também possui dois tipos distintos de “ser humano”, onde um deles é “homem” e outro é “mulher”. “Homem” é um “ser humano” e “mulher” também é. Todo “homem” pode ser instanciado&#8230; referenciado&#8230; como “homem” ou “ser humano” e toda “mulher” pode ser instanciada&#8230; referenciada&#8230; como “mulher” ou “ser humano”. A diferença está em ver características a mais, a menos, ou comportamentos distintos de acordo com esse contexto onde você está referenciando o terráqueo em questão. Opa! “terráqueo” pode ser uma interface implementada por “ser humano”, logo, qualquer ser humano também pode ser considerado um “terráqueo”, a menos que descubram seres humanos em outros planetas&#8230; Isso é o Polimorfismo.</p>
<p><strong>Mas e o PHP?</strong></p>
<p>Os tipos em PHP são emulados, mas não precisam ser declarados, pois o PHP tem o conceito de “mixed” e “resource” que atrapalham um pouco ou polimorfismo, ou facilitam de acordo com aquilo que você precisa fazer. Às vezes é um saco, mas às vezes é uma mão na roda.</p>
<p>No mais, o máximo que eu vi de polimorfismo em PHP foi casting de ArrayObject pra Array, mas eu não posso dizer se isso está correto, a menos que você já opte por definir um array como uma coleção. O que no PHP não deixa de ser uma verdade.</p>
<p><strong>Que seria mais ou menos isso:</strong></p>
<p><span style="color:#0000ff;"><code> $array </code><code>=</code><code> </code><code>(</code><code><strong>array</strong></code><code>)</code><code> </code><code>new</code><code> ArrayObject();</code></span></p>
<p>No Java você precisa de um List ou um Set pra fazer uma coleção usando array, porém no PHP você já trata o array como algo sem tamanho definitivo, ou seja, pode crescer, diminuir, classificar, etc, usando a API padrão, que já é o próprio PHP. A própria matriz de valores cresce, diminui e se comporta como uma coleção.</p>
<p>O exemplo acima é totalmente inútil no PHP porque você vai esperar que o interpretador do Apache veja a sua nova instância de ArrayObject como um array simples. Bicho&#8230; declara logo um array[] e pára de complicar o código!!!</p>
<p>Falando de ArrayObject, vou mostrar aqui algumas coisas mais interessantes a fazer com essa classe do que apenas casting inúteis.</p>
<p>O construtor do ArrayObject pode receber um array ou um outro ArrayObject. Quando o construtor não recebe parâmetros, ele é apenas uma instância vazia de um ArrayObject, sem implementação, porém, pronta para receber um elemento.</p>
<p><strong>Pegando os exemplos da documentação do PHP:</strong></p>
<p><strong>Construtor</strong></p>
<p><span style="color:#0000ff;"><code>$array </code><code>= array(</code><code>'1' </code><code>=&#62; </code><code>'um'</code><code>,</code><br />
<code> </code><code>'2' </code><code>=&#62; </code><code>'dois'</code><code>,</code><br />
<code> </code><code>'3' </code><code>=&#62; </code><code>'três'</code><code>);</code></span></p>
<p><code>$arrayobject </code><code>= new </code><code>ArrayObject</code><code>(</code><code>$array</code><code>);</code></p>
<p><code>var_dump</code><code>(</code><code>$arrayobject</code><code>);</code></p>
<p><strong>Append</strong></p>
<p>Adiciona um elemento no ArrayObject</p>
<p><span style="color:#0000ff;"><code>$arrayobject-&#62;append("O mundo do PHP"); // adiciona um elemento ao final </code></span></p>
<p><strong>offsetUnset</strong></p>
<p>Remove o elemento indicado</p>
<p><span style="color:#0000ff;"><code>$arrayobject-&#62;offsetUnset(4); // retira o elemento do indice definido</code></span></p>
<p><strong>getIterator</strong></p>
<p>Pega um ponteiro navegável</p>
<p><span style="color:#0000ff;"><code>$ponteiro = $arrayobject-&#62;getIterator(); // cria um ponteiro navegavel </code></span></p>
<p><strong>getIterator()-&#62;current()/next()/key()/rewind()/seek(int $chave)/valid()</strong></p>
<p>Funções navegadoras do Iterator. O valid verifica se o elemento da posição atual do ponteiro é ou não é nulo.</p>
<p><span style="color:#0000ff;"><code>$ponteiro = $arrayobject-&#62;getIterator(); // cria um ponteiro navegavel </code></span></p>
<p><span style="color:#0000ff;"><code>echo $ponteiro-&#62;current(); // pega a posição atual do ponteiro</code></span></p>
<p><span style="color:#0000ff;"><code>echo "&#60;hr&#62;";</code></span></p>
<p><span style="color:#0000ff;"><code>$ponteiro-&#62;next(); // manda o ponteiro para a proxima posição</code></span></p>
<p><span style="color:#0000ff;"><code>echo $ponteiro-&#62;current(); //</code></span></p>
<p><span style="color:#0000ff;"> </span></p>
<p><strong>Funções de ordenação/classificação</strong></p>
<p><span style="color:#0000ff;">$arrayobject-&#62;asort(); // organiza por ordem dos valores</span></p>
<p><span style="color:#0000ff;">$arrayobject-&#62;ksort(); // organiza por ordem dos índices</span></p>
<p><strong>uasort() e uksort()</strong></p>
<p>Organizam por funções personalizadas de comparação, sendo “a” referente aos valores e “k” referente aos índices</p>
<p><span style="color:#0000ff;"><code>// Função de Comparação</code></span></p>
<p><span style="color:#0000ff;"><code>function cmp($a, $b) {</code></span></p>
<p><span style="color:#0000ff;"><code> </code><code>if ($a == $b) {</code></span></p>
<p><span style="color:#0000ff;"><code> return 0;</code></span></p>
<p><span style="color:#0000ff;"><code> }</code></span></p>
<p><span style="color:#0000ff;"><code> return ($a &#60; $b) ? -1 : 1;</code></span></p>
<p><span style="color:#0000ff;"><code>}</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// Array para classificar</code></span></p>
<p><span style="color:#0000ff;"><code>$array_2 = array('a' =&#62; 4, 'b' =&#62; 8, 'c' =&#62; -1, 'd' =&#62; -9, 'e' =&#62; 2, 'f' =&#62; 5, 'g' =&#62; 3, 'h' =&#62; -4);</code></span></p>
<p><span style="color:#0000ff;"><code>$arrayObject_2 = new ArrayObject($array_2);</code></span></p>
<p><span style="color:#0000ff;"><code>print_r($arrayObject_2);</code></span></p>
<p><span style="color:#0000ff;"><code>echo "&#60;hr color=blue&#62;";</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// organiza e imprime</code></span></p>
<p><span style="color:#0000ff;"><code>$arrayObject_2-&#62;uasort('cmp');</code></span></p>
<p><span style="color:#0000ff;"><code>print_r($arrayObject_2);</code></span></p>
<p><span style="color:#0000ff;"><code>echo "&#60;hr color=blue&#62;";</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// Função de Comparação</code></span></p>
<p><span style="color:#0000ff;"><code>function cmp2($a, $b) {</code></span></p>
<p><span style="color:#0000ff;"><code> $a = preg_replace('@^(a&#124;an&#124;the) @', '', $a);</code></span></p>
<p><span style="color:#0000ff;"><code> $b = preg_replace('@^(a&#124;an&#124;the) @', '', $b);</code></span></p>
<p><span style="color:#0000ff;"><code> return strcasecmp($a, $b);</code></span></p>
<p><span style="color:#0000ff;"><code>}</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// Array para classificar</code></span></p>
<p><span style="color:#0000ff;"><code>$array_3 = array("João" =&#62; 1, "A Terra" =&#62; 2, "Uma maçã" =&#62; 3, "Uma banana" =&#62; 4);</code></span></p>
<p><span style="color:#0000ff;"><code>$arrayObject_3 = new ArrayObject($array_3);</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// organiza e imprime</code></span></p>
<p><span style="color:#0000ff;"><code>$arrayObject_3-&#62;uksort('cmp2');</code></span></p>
<p><span style="color:#0000ff;"><code>foreach ($arrayObject_3 as $key =&#62; $value) {</code></span></p>
<p><span style="color:#0000ff;"><code> </code><code>echo "$key: $value\n";</code></span></p>
<p><span style="color:#0000ff;"><code>}</code></span></p>
<p><span style="color:#0000ff;"><code>echo "&#60;hr color=blue&#62;";</code></span></p>
<p><span style="color:#0000ff;"> </span></p>
<p><strong>FLAGS</strong></p>
<p>São diferentes modos de tratar o índice dentro de um ArrayObject</p>
<p>Por padrão as flags estão setadas para <span style="color:#0000ff;">STD_PROP_LIST</span> e ignoram as chaves como propriedades do objeto.</p>
<p>Para isso funcionar de uma maneira mais bacana, usamos <span style="color:#0000ff;">ARRAY_AS_PROPS</span>.</p>
<p><strong>Veja o exemplo:</strong></p>
<p><span style="color:#0000ff;"><code>// FLAGS: Array e objectArray de frutas</code></span></p>
<p><span style="color:#0000ff;"><code>$fruits = array("lemons" =&#62; "verde", "oranges" =&#62; "laranja", "bananas" =&#62; "amarela", "apples" =&#62; "vermelha");</code></span></p>
<p><span style="color:#0000ff;"><code>$fruitsArrayObject = new ArrayObject($fruits);</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// Tentando usar o indice como propriedade</code></span></p>
<p><span style="color:#0000ff;"><code>print_r($fruitsArrayObject-&#62;lemons);    // por padrao as flags estao setadas para </code></span></p>
<p><span style="color:#0000ff;"><code> // STD_PROP_LIST e ignora as chaves como propriedades</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>// Mudando a flag padrão</code></span></p>
<p><span style="color:#0000ff;"><code>// ARRAY_AS_PROPS transforma chaves como propriedades</code></span></p>
<p><span style="color:#0000ff;"><code> </code></span></p>
<p><span style="color:#0000ff;"><code>$fruitsArrayObject-&#62;setFlags(ArrayObject::ARRAY_AS_PROPS);</code></span></p>
<p><span style="color:#0000ff;"><code>// Agora sim ele imprime o valor</code></span></p>
<p><span style="color:#0000ff;"><code>print_r($fruitsArrayObject-&#62;lemons);</code></span></p>
<p><span style="color:#0000ff;"><code>echo "&#60;hr color=blue&#62;";</code></span></p>
<p><strong>Para trocar ou inserir um array do ArrayObject</strong></p>
<p><span style="color:#0000ff;"><code>exchangeArray($outroarray);</code></span></p>
<p><strong>Para fazer a exportação de um ArrayObject para array sem usar o cast direto</strong></p>
<p><span style="color:#0000ff;"><code>$array = getArrayCopy($arrayObject);</code></span></p>
<p><strong>Sempre que quiser testar, use esse script abaixo:</strong></p>
<p><span style="color:#0000ff;"><code>echo "&#60;pre&#62;";</code></span></p>
<p><span style="color:#0000ff;"><code>echo htmlspecialchars( var_dump($arrayobject) );</code></span></p>
<p><span style="color:#0000ff;"><code>echo "&#60;/pre&#62;";</code></span></p>
<p>Existem outros métodos, como os “<strong>métodos Nat</strong>” que organizam um array pelo algoritmo de ordem natural.</p>
<p>Há também outros “<strong>métodos Offset</strong>”, como o <span style="color:#0000ff;">offsetExists, offsetSet, offsetGet</span>, que servem para manipular e verificar a existência de índices.</p>
<p>Todos eles bem bacanas.</p>
<p>Boa diversão!</p>
<p>Um abraço,</p>
<p>Diogo Besson</p>
<p><span style="color:#ff0000;">* SOARES, Walace. PHP 5 Conceitos, Programação e Integração com Banco de Dados. Segunda Edição. ISBN 85-365-0031-X. Editora Érica. São Paulo – SP. 2006</span></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Orientação a Objetos]]></title>
<link>http://wbissi.wordpress.com/2009/07/14/orientacao-a-objetos/</link>
<pubDate>Wed, 15 Jul 2009 01:20:18 +0000</pubDate>
<dc:creator>wbissi</dc:creator>
<guid>http://wbissi.wordpress.com/2009/07/14/orientacao-a-objetos/</guid>
<description><![CDATA[Estou disponibilizando aqui um material sobre alguns conceitos de orientação a objetos e alguns diag]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Estou disponibilizando aqui um material sobre alguns conceitos de orientação a objetos e alguns diagramas de UML que representam esses conceitos.</p>
<p>O arquivo pode ser baixado <a href="http://wbissi.wordpress.com/files/2009/07/minicurso_oo.pdf">aqui</a>.</p>
<p>Treinamento de OO ministrado hoje, 14/07/2009.</p>
<p>Atte,</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Orientação a Objetos]]></title>
<link>http://pedrocosta.wordpress.com/2009/07/10/orientacao-a-objetos/</link>
<pubDate>Fri, 10 Jul 2009 20:17:32 +0000</pubDate>
<dc:creator>pedrocosta</dc:creator>
<guid>http://pedrocosta.wordpress.com/2009/07/10/orientacao-a-objetos/</guid>
<description><![CDATA[Bem, Muitos desenvolvedores iniciantes tem dificuldades em entender Orientação a Objetos. Tentarei a]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Bem,</p>
<p>Muitos desenvolvedores iniciantes tem dificuldades em entender Orientação a Objetos.</p>
<p>Tentarei abordar alguns dos conceitos básicos nesse e nos proxímos capítulos. =)</p>
<p>A Orientação a Objetos surgiu com o intuito de &#8220;não reinventar a roda&#8221;. Com a intenção de não criar o que ja existe e sim, reutilizar e se preciso customizar para sua solução atual. Ganhando tempo e produtividade.</p>
<p>Primeiramente quero comentar que a Orientação a Objetos possui os seguintes principios: <strong>Encapsulamento, Herança e Polimorfismo.</strong> (comentarei sobre mais a frente&#8230;)</p>
<p>Vamos ao que nos interessa&#8230;</p>
<p>Um dos elementos de maior importancia na Orientação a Objetos são as Classes e por ela que vamos começar nossa explicação.</p>
<p>
<strong><font size="+1"><br />
Clasess<br />
</strong></font></p>
<p>Inicialmente, entenderemos Classes como tipos de dados compostos e os Objetos como as variaveis que utilizarão esse tipo de dado.</p>
<p>As Classes são modelos, ou representação de  algo real que queremos manipular em nosso desenvolvimento. Uma Classe determinará  todas as caracteristicas e ações que nosso objeto possuirá. Essas caracteristicas e ações sãos chamados de <strong>Atributos e Métodos</strong>.</p>
<p><strong>Atributos</strong> são as caracteristicas do &#8220;algo real&#8221; que nossa classe está representando.</p>
<p>Ex.: Vamos imaginar uma <em>Classe Pessoa</em>. Os <strong>Atributos</strong> são as caracteristicas que uma pessoa possui.</p>
<p>Uma Pessoa possui como caracteristicas <em>nome, idade, altura, sexo, etc&#8230;</em></p>
<p>Os <strong>Métodos</strong> são as ações que a Classe permitirá o Objeto executar (Método é apenas um nome bonito das funções [com ou sem retorno] em Orientação a Objetos).</p>
<p>Novamente utilizaremos a nossa <em>Classe Pessoa</em>, uma ação, ou função que pessoa pode fazer é: <em>falar, andar, comer, etc&#8230;</em></p>
<p>Tudo que pertence a Classe é denominado Membros da Classe.</p>
<p>
<strong><font size="+1">Por que falar de Classes se é Orientação a Obejtos???</strong></font></p>
<p>Bem, como disse as Classes apenas descreverá tudo que o objeto vai possuir. São os objetos &#8220;o elemento&#8221; que eu irei manipular!!!</p>
<p>
<strong><font size="+1">Objetos</strong></font></p>
<p>Como disse anteriormente, Objetos são as variaveis que utilizarão as Classes como tipo de dados. Tudo que uma Classe representa um Objeto possui!!! As Classes servirão apenas como modelos,  o que irei manipular são Objetos!!!</p>
<p>Tudo que pertence a um Objeto é denominado Membros do Objeto.</p>
<p><strong>Exemplos</strong></p>
<p>(Para esse exemplo utilizarei como linguagem o Portugol.)</p>
<p>Vamos exemplificar uma Classe Pessoa.</p>
<p>classe Pessoa {</p>
<p style="padding-left:30px;">string nome;</p>
<p style="padding-left:30px;">int idade;</p>
<p style="padding-left:30px;">double altura;</p>
<p style="padding-left:30px;">string sexo;</p>
<p style="padding-left:30px;">atribuirNome (string nome) {</p>
<p style="padding-left:60px;">este.nome = nome;</p>
<p style="padding-left:30px;">}</p>
<p style="padding-left:30px;">falarNome () {</p>
<p style="padding-left:60px;">escreva nome;</p>
<p style="padding-left:30px;">}</p>
<p>}</p>
<p><em>Minha Classe Pessoa possui como atributos: <strong>nome, idade, sexo e altura</strong>. Como métodos possui: <strong>receberNome e falarNome</strong>. Que são as ações, funções uma Pessoa executará.</em></p>
<p><em><br />
</em></p>
<p><strong>Uma Observação Importante</strong>&#8230;</p>
<p><img class="aligncenter size-medium wp-image-69" title="ClassesObjetos" src="http://pedrocosta.wordpress.com/files/2009/07/classesobjetos.jpg?w=300" alt="ClassesObjetos" width="300" height="193" /><em>Um Objeto será unico!!! Por mais que exista mais de um Objeto com carcteristicas semelhantes!!!</em></p>
<p><strong>Objetos &#8211; Metodos e Atributos</strong></p>
<p><img class="aligncenter size-medium wp-image-70" title="AtributosMetodos" src="http://pedrocosta.wordpress.com/files/2009/07/atributosmetodos.jpg?w=246" alt="AtributosMetodos" width="246" height="300" /></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Java: Conceitos Iniciais]]></title>
<link>http://resumosdeinformatica.wordpress.com/2009/06/12/java-conceitos-iniciais/</link>
<pubDate>Fri, 12 Jun 2009 03:21:02 +0000</pubDate>
<dc:creator>fkenjikamei</dc:creator>
<guid>http://resumosdeinformatica.wordpress.com/2009/06/12/java-conceitos-iniciais/</guid>
<description><![CDATA[Mapa Conceitual: Java - Conceitos iniciais Olá pessoal! Com o grande crescimento das Linguagens Orie]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;">
<div id="attachment_13" class="wp-caption aligncenter" style="width: 310px"><a href="http://picasaweb.google.com/fkenjikamei/Java#5346249859599791746"><img class="size-medium wp-image-13" title="Resumos de Informática" src="http://resumosdeinformatica.wordpress.com/files/2009/06/conceitos-de-java.jpg?w=300" alt="Mapa Conceitual: Java - Conceitos iniciais" width="300" height="184" /></a><p class="wp-caption-text">Mapa Conceitual: Java - Conceitos iniciais</p></div>
<div class="mceTemp" style="text-align:justify;">
<p style="text-align:justify;">
<p style="text-align:justify;">Olá pessoal!</p>
<p style="text-align:justify;">Com o grande crescimento da<span style="color:#000000;">s <span style="color:#ff0000;"><span style="text-decoration:underline;"><strong>Linguagens Orie</strong></span></span></span><span style="color:#000000;"><span style="color:#ff0000;"><span style="text-decoration:underline;"><strong>nta</strong></span></span></span><span style="color:#000000;"><span style="color:#ff0000;"><span style="text-decoration:underline;"><strong>das à Objetos</strong></span></span> como <span style="color:#ff0000;"><span style="text-decoration:underline;"><strong>Java</strong></span></span></span>, irei iniciar meu post falando dessa linguagem de programação que é muito utilizada.</p>
<address>Espero que gostem desse <a title="Conceito de Mapas Conceituais" href="http://pt.wikipedia.org/wiki/Mapa_conceitual">Mapa Conceitual</a> sobre os <span style="color:#ff0000;"><strong><span style="text-decoration:underline;">Conceitos Inicias de Java</span></strong></span>.</address>
<p style="text-align:justify;">Gostaria de um retorno do que acharam!</p>
<p style="text-align:justify;">Att.</p>
<p style="text-align:justify;">Fernando Kenji Kamei.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:137px;width:1px;height:1px;text-align:justify;">&#60;div class=&#8221;mceTemp&#8221;&#62;&#60;dl id=&#8221;attachment_29&#8243; class=&#8221;wp-caption alignright&#8221; style=&#8221;width: 309px;&#8221;&#62;&#60;dd class=&#8221;wp-caption-dd&#8221; style=&#8221;text-align: center;&#8221;&#62;&#60;a&#62;Mapa Conceitual: Java &#8211; Conceitos iniciais&#60;/a&#62;&#60;/dd&#62;&#60;/dl&#62;&#60;/div&#62;</div>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Encapsulação]]></title>
<link>http://hasmira.wordpress.com/2009/06/04/encapsulacao/</link>
<pubDate>Thu, 04 Jun 2009 15:55:38 +0000</pubDate>
<dc:creator>hasmira</dc:creator>
<guid>http://hasmira.wordpress.com/2009/06/04/encapsulacao/</guid>
<description><![CDATA[Segundo capítulo do livro de SCJP de Kathy Sierra e Bert Bates Encapsulação Objetivo 5.1 Em inglês: ]]></description>
<content:encoded><![CDATA[Segundo capítulo do livro de SCJP de Kathy Sierra e Bert Bates Encapsulação Objetivo 5.1 Em inglês: ]]></content:encoded>
</item>
<item>
<title><![CDATA[Padrões de Projeto - Parte 1 - Introdução]]></title>
<link>http://poesiaoo.wordpress.com/2009/05/21/padroes-de-projeto-parte1/</link>
<pubDate>Thu, 21 May 2009 16:34:32 +0000</pubDate>
<dc:creator>Fábio Alves</dc:creator>
<guid>http://poesiaoo.wordpress.com/2009/05/21/padroes-de-projeto-parte1/</guid>
<description><![CDATA[Bem vindos. Este é o primeiro post de uma série de posts sobre Padrões de Projeto (Design Patterns).]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:justify;">Bem vindos.</p>
<p style="text-align:justify;">Este é o primeiro post de uma série de posts sobre Padrões de Projeto (Design Patterns). Pretendo, nesta série, abordar alguns dos padrões mais utilizados. Pretendo usar Java nos exemplos de código, porém, em certas circunstâncias, disponibilizarei também os códigos em PHP.</p>
<p style="text-align:justify;">Neste primeiro post dou uma idéia geral da história e do que são Padrões de Projeto.</p>
<p style="text-align:justify;">A idéia original de Padrões de Projeto surgiu com Christopher Alexander, um engenheiro civil que propôs a criação de catálogos de padrões para arquitetura na década de 70. Segundo Alexander, &#8220;<em>Um padrão descreve um problema que ocorre inúmeras\par vezes em determinado contexto, e descreve ainda a solução para esse problema, de modo que essa solução possa ser utilizada sistematicamente em distintas situações.</em>&#8220;</p>
<p style="text-align:justify;">Em 1987, a partir dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham propuseram os primeiros padrões de projeto para a área da ciência da computação.</p>
<p style="text-align:justify;">Padrões para arquitetura de software são soluções de eficiência já comprovadas e amplamente utilizadas para a resolução de problemas comuns em projeto de software. Estas soluções são desenvolvidas e conhecidas por especialistas e tornam-se padrões por serem reutilizadas várias vezes em vários projetos e por terem eficácia comprovada.</p>
<p style="text-align:justify;">A idéia de aplicar padrões de projeto no desenvolvimento de softwares ganhou popularidade com o livro <em>Design Patterns: Elements of Reusable Object-Oriented Software</em> , de 1995. Os autores, Eric Gamma, Richard Helm , Ralph Johnson e John Vlissides, conhecidos como Gang of Four(Gangue dos Quatro) descrevem no livro 23 padrões, hoje conhecidos como padrões GoF.</p>
<p style="text-align:justify;">Os padrões GoF são divididos em 3 famílias: de criação, estruturais e comportamentais. Os padrões de criação são relacionados à criação de objetos, os estruturais tratam das associações entre classes e objetos e os comportamentais das interações e divisões de responsabilidades entre as classes ou objetos.</p>
<p style="text-align:justify;">Posteriormente outros livros descreveram outros padrões de projeto, como o conjunto de padrões GRASP.</p>
<p style="text-align:justify;">Dentre as principais propriedades dos padrões de projetos estão:</p>
<ul style="text-align:justify;">
<li>Capturam o conhecimento e a experiência de especialistas em projeto de software;</li>
<li>Especificam abstrações que estão acima do nível de classes ou objetos isolados ou de componentes;</li>
<li>Definem um vocabulário comum para a discussão de problemas e soluções de projeto;<br />
Facilitam a documentação e manutenção da arquitetura do software;</li>
<li>Auxiliam o projeto de uma arquitetura com determinadas propriedades;</li>
<li>Auxiliam o projeto de arquiteturas mais complexas.</li>
</ul>
<p style="text-align:justify;">Dentre os principais benefícios para que a utilização dos padrões de projeto seja justificada estão:</p>
<ul style="text-align:justify;">
<li>Fornecem soluções que já foram testadas e aprovadas;</li>
<li>Tornam o sistema mais fácil de entender e manter;</li>
<li>Facilitam o desenvolvimento de módulos coesos;</li>
<li>A comunicação entre os participantes do projeto fica mais eficiente.</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Classes]]></title>
<link>http://poesiaoo.wordpress.com/2009/05/14/classes/</link>
<pubDate>Thu, 14 May 2009 17:04:12 +0000</pubDate>
<dc:creator>Fábio Alves</dc:creator>
<guid>http://poesiaoo.wordpress.com/2009/05/14/classes/</guid>
<description><![CDATA[“Uma classe é o estêncil a partir do qual são criados (gerados) objetos. Cada objeto tem a mesma est]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>“Uma classe é o estêncil a partir do qual são criados (gerados) objetos. Cada objeto tem a mesma estrutura e comportamento da classe na qual ele teve origem. Se o objeto obj pertence à classe C, dizemos que obj é uma instância de C” (PAGES &#8211; JONES).</p>
<p><strong>Poesia!</strong></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
