<?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>Patrício dos Santos</title>
	<atom:link href="http://blog.patriciodossantos.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.patriciodossantos.net</link>
	<description>Programação e mais alguma coisa...</description>
	<lastBuildDate>Thu, 17 May 2012 20:09:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>[PHP] Como detectar o tipo de navegador</title>
		<link>http://blog.patriciodossantos.net/2012/05/php-como-detectar-o-tipo-de-navegador/</link>
		<comments>http://blog.patriciodossantos.net/2012/05/php-como-detectar-o-tipo-de-navegador/#comments</comments>
		<pubDate>Thu, 17 May 2012 20:08:50 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[user aget]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=41</guid>
		<description><![CDATA[TweetPHP é uma linguagem de programação web muito versátil que permite  um servidor web servir conteúdos dinâmicos aos visitantes. PHP pode identificar e detectar  o tipo e a versão do navegador que o visitante está a utilizar.
A variável global do PHP $_SERVER fornece várias informações sobre o servidor e o ambiente de execução,  incluindo elemento [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2012/05/php-como-detectar-o-tipo-de-navegador/&via=psantos_ao&text=[PHP] Como detectar o tipo de navegador&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><a href="http://blog.patriciodossantos.net/wp-content/uploads/2012/05/Browsers_for_User_Agent_strings.png"><img class="alignright size-medium wp-image-42" title="Browsers_for_User_Agent_strings" src="http://blog.patriciodossantos.net/wp-content/uploads/2012/05/Browsers_for_User_Agent_strings-244x300.png" alt="" width="244" height="300" /></a>PHP é uma linguagem de programação web muito versátil que permite  um servidor web servir conteúdos dinâmicos aos visitantes. PHP pode identificar e detectar  o tipo e a versão do navegador que o visitante está a utilizar.</p>
<p>A variável global do PHP $_SERVER fornece várias informações sobre o servidor e o ambiente de execução,  incluindo elemento HTTP_USER_AGENT que contem informações sobre o navegador, que podem ser usadas para identificar o navegador que está sendo usando para aceder a uma determinada página. Um típico User Agent, parece o seguinte:</p>
<blockquote><p>Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0</p></blockquote>
<p>Cada string de utilizador tem um identificador único que permite mostra qual navegador está fazendo requisitando uma página web. Assim, é possível detectar e destacar um navegador específico, comparando o valor retornado pela variável $_SERVER["HTTP_USER_AGENT"] por User Agent de um navegador específico.</p>
<p>Aqui deixo um exemplo, que pode ser utilizado em PHP para detectar e retornar o tipo de navegador.</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
$user_agent = $_SERVER['HTTP_USER_AGENT'];

if (preg_match('/MSIE/i', $user_agent)) {
echo &quot;Este navegador é: Internet Explorer&quot;;
} else {
echo &quot;Este navegador não é: Internet Explorer&quot;;
}
?&gt;
</pre>
<p>O script acima irá  apenas detectar se o visitante está a utilizar o navegador IE (Internet Explorer).  Para que o código seja expandido, ou seja, para que seja necessário detectar navegadores adicionais, podemos adicionar o bloco &#8220;else if&#8221;. Para verificar, basta substituir o MSIE pelo nome de user agent de outros navegadores. Alguns navegadores navegadores populares podem ser detectados com os seguintes textos:</p>
<blockquote><p>Internet Explorer: MSIE<br />
Mozilla Firefox: Firefox<br />
Google Chrome: Chrome<br />
Apple Safari: Safari<br />
Opera: Opera<br />
Netscape Navigator: Netscape<br />
Flock: Flock<br />
Lynx: Lynx</p></blockquote>
<p>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2012/05/php-como-detectar-o-tipo-de-navegador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enviando E-mail com o PHPMailer</title>
		<link>http://blog.patriciodossantos.net/2012/05/enviando-e-mail-com-o-phpmailer/</link>
		<comments>http://blog.patriciodossantos.net/2012/05/enviando-e-mail-com-o-phpmailer/#comments</comments>
		<pubDate>Wed, 16 May 2012 09:16:34 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[enviar email]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phpmailer]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=35</guid>
		<description><![CDATA[TweetO PHPMaileré uma biblioteca de classes desenvolvida em PHP, cuja finalidade é agilizar o processo de criação e envio de E-mails.
Neste post irei descrever de forma breve como implementar um formulário de contacto básico utilizando a classe PHPMailer.
Para o nosso exemplo, criaremos um formulário em HTML com os seguintes campos: Nome, E-mail e Mensagem.
Uma vez [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2012/05/enviando-e-mail-com-o-phpmailer/&via=psantos_ao&text=Enviando E-mail com o PHPMailer&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>O PHPMaileré uma biblioteca de classes desenvolvida em PHP, cuja finalidade é agilizar o processo de criação e envio de E-mails.</p>
<p>Neste post irei descrever de forma breve como implementar um formulário de contacto básico utilizando a classe PHPMailer.</p>
<p>Para o nosso exemplo, criaremos um formulário em HTML com os seguintes campos: Nome, E-mail e Mensagem.</p>
<pre class="brush: xml; title: ; notranslate">

&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;pt&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot; /&gt;
&lt;title&gt;Enviando E-mail com PHPMailer&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form method=&quot;post&quot;&gt;
&lt;p&gt;&lt;label for=&quot;nome&quot;&gt;Nome:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;nome&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;label for=&quot;email&quot;&gt;E-mail:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;email&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;label for=&quot;assunto&quot;&gt;Assunto:&lt;/label&gt; &lt;input type=&quot;text&quot; name=&quot;assunto&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;label for=&quot;mensagem&quot;&gt;Mensagem:&lt;/label&gt; &lt;textarea name=&quot;mensagem&quot;&gt;&lt;/textarea&gt;&lt;/p&gt;

&lt;p&gt;&lt;input type=&quot;submit&quot; name=&quot;enviar&quot; value=&quot;Enviar Mensagem&quot; /&gt;&lt;/p&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Uma vez criado o fomulário, adicionamos o codigo PHP necessário para processar os dados e envia-los por E-mail usando um objecto da classe PHPMailer.</p>
<p>Para podermos utilizar o PHPMailer, teremos de baixar (link no final do post) o pacote de classes e descompacta-lo na raiz da página em que estamos a programar o formulário. No exemplo a seguir, o pacote foi descompactado dentro da pasta &#8220;classes&#8221;.</p>
<p>Nota: O código abaixo deverá ser inserida logo após a <em>tag</em> de abertura do corpo HTML (&lt;body&gt;).</p>
<pre class="brush: php; title: ; notranslate">

&lt;?php
$isEnviar = (isset($_POST['enviar']));
$isEnviado = false;
$strErro = &quot;&quot;;

if ($isEnviar)
{
require_once('classes/PHPMailer_5.2.1/class.phpmailer.php');

$msgPara = &quot;angodev@gmail.com&quot;;
$nome = $_POST['nome'];
$emailDe = $_POST['email'];
$assunto = &quot;[Utilizando PHPMailer] - &quot; . $_POST['assunto'];
$mensagem = $_POST['mensagem'];

$corpo = &quot;Acabou de receber uma mensagem enviada utilizando o PHPMailer.\n\nNome: $nome \n\nE-mail: $emailDe\n\nMensagem:\n $mensagem&quot;;

try {
$email = new PHPMailer();

$email-&gt;CharSet = 'UTF-8';        // Suporte a caracteres especiais...
$email-&gt;IsMail();
$email-&gt;AddAddress($msgPara);    // Endereço de E-mail do Remetente
$email-&gt;Subject = $assunto;        // Assunto da Mensagem
$email-&gt;From = $emailDe;        // Endereço de E-mail do Destinatário
$email-&gt;FromName = $nome;        // Nome do Destinatário
$email-&gt;Body = $corpo;

$isEnviado = $email-&gt;Send();

if (!$isEnviado){
$strResultado = &quot;Ocorreu um erro: &quot; . $email-&gt;ErrorInfo;
} else {
$strResultado = &quot;Mensagem enviada com sucesso!&quot;.
}
} catch (phpmailerException $ex){
$strResultado  = $strResultado = &quot;Ocorreu um erro: &quot; . $ex-&gt;errorMessage();
}
}
?&gt;
</pre>
<p>Vou tentar explicar de forma breve e por partes o código acima.</p>
<p>Inicializamos algumas variáveis que serão utilizadas para determinar se o formulário foi submetido ou não e mostrar uma mensagem informando se o email foi enviado ou não.</p>
<pre class="brush: php; title: ; notranslate">

$isEnviar = (isset($_POST['enviar']));
$isEnviado = false;
$strErro = &quot;&quot;;
</pre>
<p>Verificamos se o formulário foi submetido, incluímos a classe PHPMailer e criamos a instância da mesma (classe PHPMailer):</p>
<pre class="brush: php; title: ; notranslate">

if ($isEnviar)
{
require_once('classes/PHPMailer_5.2.1/class.phpmailer.php');
$email = new PHPMailer();

// ...
</pre>
<p>Armazenados as informações enviadas através do formulário nas variáveis que utilizaremos para configurar o corpo da mensagem e algumas propriedades do objecto PHPMailer:</p>
<pre class="brush: php; title: ; notranslate">

$msgPara = &quot;angodev@gmail.com&quot;;
$nome = $_POST['nome'];
$emailDe = $_POST['email'];
$assunto = &quot;[Utilizando PHPMailer] - &quot; . $_POST['assunto'];
$mensagem = $_POST['mensagem'];

$corpo = &quot;Acabou de receber uma mensagem enviada utilizando o PHPMailer.\n\nNome: $nome \n\nE-mail:  $emailDe\n\nMensagem:\n $mensagem&quot;;
</pre>
<p>Utilizamos o bloco &#8220;try-catch&#8221; para instanciar o objecto PHPMailer e realizar o envio do E-mail , de forma que possa controlar qualquer erro inesperado que venha acontecer.</p>
<p>Dentro do bloco configuramos as propriedades da mensagem.</p>
<pre class="brush: php; title: ; notranslate">

try {
$email = new PHPMailer();

$email-&gt;CharSet = 'UTF-8';        // Suporte a caracteres especiais...
$email-&gt;IsMail();
$email-&gt;AddAddress($msgPara);    // Endereço de E-mail do Remetente
$email-&gt;Subject = $assunto;        // Assunto da Mensagem
$email-&gt;From = $emailDe;        // Endereço de E-mail do Destinatário
$email-&gt;FromName = $nome;        // Nome do Destinatário
$email-&gt;Body = $corpo;

$isEnviado = $email-&gt;Send();

if (!$isEnviado){
$strResultado = &quot;Ocorreu um erro: &quot; . $email-&gt;ErrorInfo;
} else {
$strResultado = &quot;Mensagem enviada com sucesso!&quot;.
}
} catch (phpmailerException $ex){
$strResultado  = $strResultado = &quot;Ocorreu um erro: &quot; . $ex-&gt;errorMessage();
}
</pre>
<p>O download a Classe pode ser feita aqui: http://code.google.com/a/apache-extras.org/p/phpmailer/downloads/list</p>
<p>O Código completo pode ser encontrado Aqui: http://pastebin.com/wa8KtSHt</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2012/05/enviando-e-mail-com-o-phpmailer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google lança serviço de armazenamento na nuvem</title>
		<link>http://blog.patriciodossantos.net/2012/04/google-lanca-servico-de-armazenamento-na-nuvem/</link>
		<comments>http://blog.patriciodossantos.net/2012/04/google-lanca-servico-de-armazenamento-na-nuvem/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 12:12:27 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Novidades]]></category>
		<category><![CDATA[drive]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google drive]]></category>
		<category><![CDATA[notícia]]></category>
		<category><![CDATA[nuvem]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=29</guid>
		<description><![CDATA[TweetGoogle Drive é  novo serviço da Google que lhe permite enviar arquivos (fotos, vídeos, documentos, apresentações&#8230; ) para a nuvem e acessá-los a partir de vários dispositivos, como computadores MAC ou PC, tabletes e telefones moveis Android. Além disso, segundo a empresa numa nota de imprensa, estão a trabalhar no desenvolvimento de uma aplicação para [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2012/04/google-lanca-servico-de-armazenamento-na-nuvem/&via=psantos_ao&text=Google lança serviço de armazenamento na nuvem&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Google Drive é  novo serviço da Google que lhe permite enviar arquivos (fotos, vídeos, documentos, apresentações&#8230; ) para a nuvem e acessá-los a partir de vários dispositivos, como computadores MAC ou PC, tabletes e telefones moveis Android. Além disso, segundo a empresa numa nota de imprensa, estão a trabalhar no desenvolvimento de uma aplicação para dispositivos iOS, que deverá estar na lista nas próximas semanas.</p>
<p><a href="http://blog.patriciodossantos.net/wp-content/uploads/2012/04/google_drive.png"><img class="alignleft size-medium wp-image-30" title="Google Drive" src="http://blog.patriciodossantos.net/wp-content/uploads/2012/04/google_drive-300x174.png" alt="Google Drive" width="300" height="174" /></a>O serviço oferece 5 GB de armazenamento gratuito que pode se ampliando para 25 GB (2,49 USD), 100 GB (4,99 USD) ou1 TB (49,99 USD) mediante pagamento mensal.</p>
<p>Drive deverá concorrer com serviços como DropBox e SkyDrive.</p>
<p>Por outro lado, Google Docs está integrado com Google Drive, o que permite trabalhar em colaboração com outras pessoas em tempo real em documentos, folhas de cálculos e apresentações, uma opção que já existe nos outros serviços como SkyDrive. Além disso, a Google, aproveitando-se da sua larga experiência em matérias de busca, irá incluir no Drive um motor de buscas avançando capaz de reconhecer imagens incluindo caracteres de um texto escaneado.</p>
<p>A ferramenta está preparada, como não poderia ser de outro jeito, para interagir com outros serviços como GMail e Google+.</p>
<p><a title="Google Drive" href="http://drive.google.com" target="_blank">Google Drive</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2012/04/google-lanca-servico-de-armazenamento-na-nuvem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeIgniter: Como remover &#8220;index.php&#8221; da URL</title>
		<link>http://blog.patriciodossantos.net/2011/07/codeigniter-como-remover-index-php-da-url/</link>
		<comments>http://blog.patriciodossantos.net/2011/07/codeigniter-como-remover-index-php-da-url/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 08:33:54 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=23</guid>
		<description><![CDATA[TweetSe estás a utilizar o CodeIgniter deves ter percebido que por padrão o &#8220;index.php&#8221; e incluído da URL, ficando algo como:
http://meu_projecto_codeigniter.com/index.php/controlador/funcao
Mas com muita facilidade, o &#8220;index.php&#8221; pode ser removido da URL do CodeIgniter para que o link acima possa parecer como abaixo:
http://meu_projecto_codeigniter.com/controlador/funcao
Para tal, basta seguir os passos que se seguem:
1º Abrir o ficheiro &#8220;config.php&#8221; que [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2011/07/codeigniter-como-remover-index-php-da-url/&via=psantos_ao&text=CodeIgniter: Como remover "index.php" da URL&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p>Se estás a utilizar o <a title="CodeIgniter" href="http://codeigniter.com/" target="_blank">CodeIgniter</a> deves ter percebido que por padrão o<strong> &#8220;index.php&#8221;</strong> e incluído da URL, ficando algo como:</p>
<blockquote><p>http://meu_projecto_codeigniter.com/index.php/controlador/funcao</p></blockquote>
<p>Mas com muita facilidade, o <strong>&#8220;index.php&#8221;</strong> pode ser removido da URL do <a title="CodeIgniter" href="http://codeigniter.com/" target="_blank">CodeIgniter</a> para que o link acima possa parecer como abaixo:</p>
<blockquote><p>http://meu_projecto_codeigniter.com/controlador/funcao</p></blockquote>
<p>Para tal, basta seguir os passos que se seguem:</p>
<p>1º Abrir o ficheiro <strong>&#8220;config.php&#8221;</strong> que se enconntra na pasta<strong> &#8220;system/application/config&#8221;</strong> and substituir <strong>$config['index_page'] = &#8220;index.php&#8221;</strong> por <strong>$config['index_page'] = &#8221; &#8220;</strong></p>
<p>2º Crie um ficheiro <strong>&#8220;.htaccess</strong>&#8221; na pasta root do seu projecto (onde reside o pasta system); abre o ficheiro utilizando o seu editor preferido  e escreva (não se esqueça de salvar <img src='http://blog.patriciodossantos.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) o seguinte código:</p>
<pre class="brush: php; title: ; notranslate">

RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|img|images|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
</pre>
<p>3º Em alguns casos a configuração padrão para <strong>uri_protocol</strong> não funciona correctamente. Para corrigir este problema substitua simplesmente <strong>$config['uri_protocol'] = &#8220;AUTO&#8221;</strong> por<strong> $config['uri_protocol'] = &#8220;REQUEST_URI&#8221;</strong> que se encontra no arquivo<strong> /system/application/config/config.php</strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2011/07/codeigniter-como-remover-index-php-da-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programação Orientada a Objectos – Parte 2</title>
		<link>http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-2/</link>
		<comments>http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-2/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 22:50:32 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[POO]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[estrutura]]></category>
		<category><![CDATA[instância]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=21</guid>
		<description><![CDATA[TweetDando prosseguimento a nossa série de artigos sobre POO, hoje vamos falar um pouco sobre as classes e interfaces.
As Classes e Estruturas
Como temos vindo a referir, nas linguagens orientadas a objectos, existe o conceito de classes. Quando falamos de classes, podemos também estende-las a estruturas. De facto, para os programadores de C++ classe não é [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-2/&via=psantos_ao&text=Programação Orientada a Objectos – Parte 2&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p style="text-align: justify;">Dando prosseguimento a nossa série de artigos sobre POO, hoje vamos falar um pouco sobre as classes e interfaces.</p>
<h3 style="text-align: justify;"><strong>As Classes e Estruturas</strong></h3>
<p style="text-align: justify;">Como temos vindo a referir, nas linguagens orientadas a objectos, existe o conceito de classes. Quando falamos de classes, podemos também estende-las a estruturas. De facto, para os programadores de C++ classe não é mais do que uma estrutura que se comporta de forma diferente.</p>
<p style="text-align: justify;">Uma classe é um pedaço de código onde podemos definir um conjunto de dados e ao mesmo tempo alguns métodos (funções ou procedimentos) que nos permitirão aceder esses dados.</p>
<p style="text-align: justify;">Quando definimos uma classe, o que estamos a fazer é criar um modelo, a partir do qual podemos criar objectos na memória. Portanto, a classe é o modelo com o qual podemos criar novos objectos. Para criar algo &#8220;palpável&#8221; a partir de uma classe, devemos <a title="Instância" href="http://pt.wikipedia.org/wiki/Inst%C3%A2ncia_%28classe%29" target="_blank">criar (instanciar)</a> na memória um novo objecto do tipo da classe, ou seja, instanciámos um novo objecto da classe. A partir deste momento teremos algo real com que podemos trabalhar: uma instância da classe, quer dizer que, a definição feita na classe converteu-se em objecto que podemos acessa-lo e começar a utiliza-lo, dando novos valores aos dados que o mesmo manipula e utilizando as funções que nos permitem manipular tais dados.</p>
<p style="text-align: justify;"><span id="more-21"></span></p>
<p style="text-align: justify;">A principal diferença entre uma classe e uma estrutura está na forma em que se criam os objectos que representam essas &#8220;ideias&#8221;. Os objectos criados a partir das classes são objectos por referência, isto é, se declararmos uma variável para manipular esse objecto, o que teremos será uma referência (ou ponteiro) para um endereço de memória onde realmente está o objecto. Enquanto que os objectos criados a partir de uma estrutura são armazenadas de forma diferente, em vez de &#8220;apontar&#8221; para um endereço de memória em que se encontra o objecto, é como se as variáveis declaradas como estruturas fossem realmente o objecto permitindo-nos fazer certas operações e manipulações que os objectos obtidos a partir de uma classe não podem realizar da mesma forma. Mais adiante (próximos artigos) veremos isto com mais detalhes.</p>
<blockquote>
<p style="text-align: justify;"><strong>NOTA: Classes</strong></p>
<p style="text-align: justify;">Em .NET sempre utilizamos uma classe para escrever qualquer tipo de código. Portanto, tudo o que fazemos em .NET, devemos fazê-lo dentro que uma classe. Isto não quer dizer que sempre teremos que usar as características da POO, já que se se queremos fazer simplesmente uma aplicação que exibe uma mensagem no console (cmd), o código não tem porque utilizar a herança, o polimorfismo ou o encapsulamento,  basta escrevermos o código que mostra a mensagem e o problema estará resolvido, mas o que se pode fazer é utilizar algumas das &#8220;outras&#8221; vantagens que a programação orientada a objectos nos oferece.</p>
</blockquote>
<p style="text-align: justify;">Gostaria de continuar com Interfaces, mas infelizmente o sono conseguiu me derrotar. Até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programação Orientada a Objectos &#8211; Parte 1</title>
		<link>http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-1/</link>
		<comments>http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-1/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 10:02:53 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[POO]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[programação orientada a objectos]]></category>
		<category><![CDATA[vb.net]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=16</guid>
		<description><![CDATA[TweetIntrodução
A programação orientada a objectos (POO) permite-nos escrever códigos menos propenso à falhas além de nos permitir a reutilização do código de maneira mais conveniente.
Nesta série de artigos sobre POO veremos as características da Programação Orientada a Objectos (POO) utilizando os conceitos das linguagens .NET e como utilizar os diferentes elementos que nos permitirão criar [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-1/&via=psantos_ao&text=Programação Orientada a Objectos - Parte 1&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><h3 style="text-align: justify;"><strong>Introdução</strong></h3>
<p style="text-align: justify;">A programação orientada a objectos (POO) permite-nos escrever códigos menos propenso à falhas além de nos permitir a reutilização do código de maneira mais conveniente.</p>
<p style="text-align: justify;">Nesta série de artigos sobre POO veremos as características da Programação Orientada a Objectos (POO) utilizando os conceitos das linguagens .NET e como utilizar os diferentes elementos que nos permitirão criar código que seja mais fácil de escrever e gerir (manter).</p>
<h3 style="text-align: justify;">A Programação Orientada a Objectos</h3>
<p style="text-align: justify;">Em toda programação existe uma secção denominada Caderno de Principiantes onde se estuda o algoritmo e estrutura de dados a nível de iniciação. Está planeado que se estude o nível teórico da programação orientado a objectos, principalmente para aqueles que não têm noção alguma sobre a POO .</p>
<h3 style="text-align: justify;">Os Pilares da POO</h3>
<p style="text-align: justify;">Recordemos são três as principais características de uma linguagem orientada a objectos, ou seja, uma linguagem é considerada orientada a objectos se é capaz de prover estas três características:</p>
<p style="text-align: justify;"><span id="more-16"></span></p>
<ul>
<li>Encapsulamento;</li>
<li>Herança;</li>
<li>Polimorfismo.</li>
</ul>
<p style="text-align: justify;">Vamos ver uma breve descrição de cada uma delas e depois aplicarmos elas para melhor compreendermos os seus significados e como pode nos ajudar a criar aplicações que aproveitam todas as possibilidades que uma POO nos oferece.</p>
<p style="text-align: justify;"><strong>Encapsulamento:</strong> É a qualidade de unificar os dados e a forma de manipula-los, desta forma podemos ocultar o funcionamento de uma classe e expor somente os dados que manipula (utilizando propriedades), assim como prover tais dados a outros (classes) para poder manipular os mesmos (mediante métodos). Desta forma expomos somente ao mundo exterior a informação e a forma de manipula-la, ocultando os detalhes utilizados para manejar esses dados e, o que é mais importante, evitando que nada manipule os dados de forma descontrolada.</p>
<p style="text-align: justify;"><strong>Herança:</strong> É a habilidade de poder criar novas classes (ou tipos) baseadas em outras classes, de forma que a nova classe herda todas as características da classe que herdou, tanto os dados que contém como a forma de manipula-las, podendo adicionar novas características e inclusive alterar o comportamento de alguns métodos da classe base. Mediante a herança podemos criar de forma fácil uma hierarquia de classes que partilham o mesmo comportamento básico mas que cada nova geração possa ter um novo comportamento.</p>
<p style="text-align: justify;"><strong>Polimorfismo: </strong>é a habilidade de implementar de forma particular algumas das características que as classes têm, de forma que quando precisamos utiliza-las não nos preocupemos com a implementação interna que cada uma tenha, o que realmente nos interessa ou nos deve importar é que podemos usar essas características e inclusive aceder a elas de forma anónima&#8230; ou quase.</p>
<h3 style="text-align: justify;">Outras características da POO</h3>
<p style="text-align: justify;">Tal como teremos oportunidade de ver, a POO se baseia em três características que são comuns em todas as linguagens orientadas a objectos, mas se termos estas características e não soubermos como aplica-las, a verdade é que não nos será de muita utilidade.</p>
<p style="text-align: justify;">Mas antes de ver algo de concreto, acredito ser importante aprendermos outros conceitos relacionados também com a POO, mas desta vez desde o ponto de vista do programador e não de uma linguagem especifica, ou seja, vamos deixar a parte teórica de lado e vamos ser mais práticos, já que os conceitos que seguem serão utilizados no nosso dia-a-dia. Também nos interessa conhece-las para aproveitar o que uma linguagem Orientada a objectos nos oferece.</p>
<p style="text-align: justify;">Apesar do que foi dito ou será dito seja aplicável em qualquer linguagem orientada a objectos, vamos nos focar nas tecnologias :NET (C# e VB.NET ).</p>
<p style="text-align: justify;">Por hoje ficamos por aqui, e até a próxima. Críticas, correcções, sugestões, são sempre bem vindas!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2011/07/programacao-orientada-a-objectos-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Swiffy, a ferramenta da Google que converte Flash para HTML5</title>
		<link>http://blog.patriciodossantos.net/2011/07/swiffy-a-ferramenta-da-google-que-converte-flash-para-html5/</link>
		<comments>http://blog.patriciodossantos.net/2011/07/swiffy-a-ferramenta-da-google-que-converte-flash-para-html5/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 08:43:03 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Google Swiffy]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=8</guid>
		<description><![CDATA[TweetA Linguagem HTML5 está cada dia mais  presente no desenvolvimento das aplicações, já que nos oferece uma série  de melhorias e vantagens em relação à outras soluções como a utilização  do Flash.
Adobe já nos apresentou uma ferramenta  capaz de converter Flash para HTML5 e agora chegou a vez de uma  [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2011/07/swiffy-a-ferramenta-da-google-que-converte-flash-para-html5/&via=psantos_ao&text=Swiffy, a ferramenta da Google que converte Flash para HTML5&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><p><a href="http://blog.patriciodossantos.net/wp-content/uploads/2011/07/swiffy_logo.gif"><img class="alignleft size-full wp-image-9" title="swiffy_logo" src="http://blog.patriciodossantos.net/wp-content/uploads/2011/07/swiffy_logo.gif" alt="Google Swiffy" width="179" height="40" /></a>A Linguagem HTML5 está cada dia mais  presente no desenvolvimento das aplicações, já que nos oferece uma série  de melhorias e vantagens em relação à outras soluções como a utilização  do Flash.</p>
<p>Adobe já nos apresentou uma ferramenta  capaz de converter Flash para HTML5 e agora chegou a vez de uma  ferramenta desenvolvida pela Google, Swiffy, cuja missão é a mesma.</p>
<p>Swiffy é uma ferramenta web, que  converte os arquivos .SWF para HTML5. É muito fácil de se manejar, já  que tudo que devemos fazer é enviar (fazer o upload) do ficheiro a  converter e a ferramenta de encarrega do resto, dando-nos o arquivo  convertido.</p>
<p>O processo de conversão é realmente  rápido, e esta aplicação nos retorna um arquivo JSON. Funciona tanto  para fontes embutidas e imagens vectoriais, embora que de momento não  seja possível converter jogos feitos em Flash para HTML5, trata-se de  uma tarefa na lista dos pendentes.</p>
<p><em>Via: <a title="Swiffy" href="http://swiffy.googlelabs.com/" target="_blank">Site Oficial</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2011/07/swiffy-a-ferramenta-da-google-que-converte-flash-para-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Olá, mundo! &#8211; Sejam todos bem vindos</title>
		<link>http://blog.patriciodossantos.net/2011/06/ola-mundo/</link>
		<comments>http://blog.patriciodossantos.net/2011/06/ola-mundo/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 09:35:25 +0000</pubDate>
		<dc:creator>Patrício dos Santos</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://blog.patriciodossantos.net/?p=1</guid>
		<description><![CDATA[TweetBem-vindo ao Meu Blog!
]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://blog.patriciodossantos.net/2011/06/ola-mundo/&via=psantos_ao&text=Olá, mundo! - Sejam todos bem vindos&related=:&lang=en&count=vertical" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div><h1 style="text-align: center;">Bem-vindo ao Meu Blog!</h1>
]]></content:encoded>
			<wfw:commentRss>http://blog.patriciodossantos.net/2011/06/ola-mundo/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

