<?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>Isaque Alves &#187; Série</title>
	<atom:link href="http://isaquealves.com/category/serie/feed/" rel="self" type="application/rss+xml" />
	<link>http://isaquealves.com</link>
	<description>Site pessoal de um Desenvolvedor Web &#38; GNU/Linux User</description>
	<lastBuildDate>Mon, 06 Sep 2010 23:15:07 +0000</lastBuildDate>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Entendendo Orientação a Objetos na prática Parte 1</title>
		<link>http://isaquealves.com/2009/12/desenvolvimento/entendendo-orientacao-a-objetos-na-pratica-parte-1/</link>
		<comments>http://isaquealves.com/2009/12/desenvolvimento/entendendo-orientacao-a-objetos-na-pratica-parte-1/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 15:31:06 +0000</pubDate>
		<dc:creator>Isaque Alves</dc:creator>
				<category><![CDATA[Aprender a Programar Programando]]></category>
		<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Série]]></category>
		<category><![CDATA[classe]]></category>
		<category><![CDATA[herança]]></category>
		<category><![CDATA[hierarquia de classes]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[objeto]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[override]]></category>
		<category><![CDATA[polimorfismo]]></category>
		<category><![CDATA[Programação]]></category>

		<guid isPermaLink="false">http://isaquealves.com/?p=237</guid>
		<description><![CDATA[Olá, pessoal. Não sou professor, sou apenas um estudante de Sistemas de Informação indo para o 3º ano do curso (falta pouco!!).
Como colega de outros estudantes, percebo que apesar de todo o esforço de muitos professores em sala de aula ou laboratórios, muito pouco do que eles passam é realmente aproveitado.
Observei o seguinte: Há uma [...]]]></description>
			<content:encoded><![CDATA[<p>Olá, pessoal. Não sou professor, sou apenas um estudante de Sistemas de Informação indo para o 3º ano do curso (falta pouco!!).</p>
<p>Como colega de outros estudantes, percebo que apesar de todo o esforço de muitos professores em sala de aula ou laboratórios, muito pouco do que eles passam é realmente aproveitado.</p>
<p>Observei o seguinte: Há uma grande dificuldade em se apreender conceitos simples como &#8216;polimorfismo&#8217;, herança e até ocorrem confusões quanto aos termos overload e override. Além disso, a maioria dos estudantes parece perdido frente a conceitos como &#8216;encapsulamento&#8217;: não sabem decidir quando declarar um método ou atributo como público, privado ou protegido (public, private ou protected).</p>
<p>Isso é ruim&#8230; muito ruim.</p>
<p>Decidi então partilhar um pouco do que aprendi (Sei&#8230; existem muitos conceitos, muitos posts pela internet apresentando o mesmo assunto&#8230;), mas não vamos ficar só na teoria, na apresentação de conceitos ou códigos previamente elaborados.</p>
<p>Minha proposta aqui vai além, e meu objetivo é demonstrar claramente cada conceito com base em uma das melhores questões de avaliação de programação que eu já vi.</p>
<p>
<span id="more-237"></span> Vou dividir esse post em pelo menos 3 partes, uma contemplando a teoria mesmo e apresentando conceitos básicos de design e desenvolvimento orientados a objetos, e as outras caindo na prática pra criarmos uma solução à questão proposta.<br />
 Nesta primeira parte, iremos abordar uma definição trazendo também uma contextualização histórica e apresentaremos alguns conceitos básicos.</p>
<p>Uma boa leitura!!</p>
<h3>Orientação a Objetos</h3>
<p>Orientação a objetos ou OO é um paradigma, ou seja, um padrão de análise, modelagem, projeto e programação, e não apenas uma técnica de programação. Seu uso afeta todo a compreensão do sistema por seus usuários de fato e torna mais simples a gestão de código e características dos sistemas computacionais.</p>
<p>Diferentemente da programação procedural ou estruturada, no paradigma OO todo o esquema de um sistema é baseado na troca de mensagens entre os objetos integrantes do próprio sistema. Essa troca de mensagens é fundamental e implementa o nosso conceito de estímulo-resposta recorrente no nosso mundo real. Além disso, o simples fato de a implementação dos sistemas ser menos acoplada, ou seja, há maior e verdadeira independência entre as partes que formam o todo, torna-se possível uma prática denominada reutilização. Economia é a palavra-chave.</p>
<h3>Um pouco história</h3>
<p>O paradigma da orientação a objetos tem uma história um pouco recente. O primeiro esforço significativo no sentido de fazer uso de uma linguagem que se caracterizasse pelo uso de abstrações mais fieis aos objetos do mundo real envolvidos nos problemas a que os programas desenvolvidos fossem relativos.</p>
<p>No paradigma procedural, toda a arquitetura é orientada às ações que o sistema deve realizar, ou seja, tudo é voltado basicamente às funções do sistema, sendo na maioria das vezes, soluções únicas para problemas únicas com pouca ou nenhuma reutilização de funcionalidades.</p>
<p>A primeira linguagem de que se tem notícia a trabalhar explicitamente com orientação a objetos foi a Simula 67, desenvolvida na década de 1960 na Noruega, no Centro Norueguês de Computação ( Em inglês, Norwegian Computing Center, e em norueguês: Norsk Renesentral) por dois professores:</p>
<ul>
<li><a title="Texto na wikipedia sobre o professor Emérito Ole-Johan Dahl" href="http://en.wikipedia.org/wiki/Ole-Johan_Dahl">Ole-Johan Dahl</a></li>
<li><a title="Texto na wikipedia sobre o professor Emérito Kristen Nygaard" href="http://en.wikipedia.org/wiki/Kristen_Nygaard">Kristen Nygaard</a></li>
</ul>
<p>&nbsp;</p>
<p>Simula 67 na verdade, se propunha a ser uma extensão para outra linguagem já existente (ALGOL 60) como o objetivo de realizar a <a title="Um breve texto explicativo sobre Simulaçaõ a eventos discretos" href="http://www.ime.usp.br/~reverbel/mac212/eps/ep2/node2.html">simulação de eventos discretos</a>.</p>
<p>Simula 67, no entanto não foi &#8216;<em>a linguagem</em>&#8216; orientada a objetos a aparecer definitivamente. Isso só aconteceria por volta das décadas de 1970/1980 com a linguagem SmallTalk, desenvolvida por uma equipe de trabalho da Xerox encabeçada pelo pesquisador Allan Kay. Os principais pontos em que SmallTalk 80 diferia da linguagens tradicionais:</p>
<ul>
<li>O Código era compilado para bytecode e executado através de máquina virtual;</li>
<li>Tudo em Smalltalk era necessariamente um objeto;</li>
<li>A troca de mensagens entre os objetos era a forma padão de implementação das funções ou métodos;</li>
<li>Um esboço claro de polimorfismo;</li>
<li>Um esboço de Overload ou sobrecarga de métodos;</li>
<li>Todas as classe obedeciam uma hierarquia, descendendo de uma superclasse.</li>
<li>Todo objeto funcionava como instância de uma classe, a qual determinava-lhe os comportamentos e propriedades.</li>
<li>SmallTalk não possuia tipos primitivos, sendo assim, todo e qualquer objeto era implementado na forma de classes.</li>
</ul>
<p>&nbsp;</p>
<p>O importante é que isso moldou definitivamente todo o conceito de orientação a objetos. A partir de então, surgiram implementações de diferentes linguagens utilizando-se das facilidades do paradigma de orientação a objetos.</p>
<h3>Linguagens que suportam orientação a objetos</h3>
<p>Bem , a lista é grande, e se faz desnecessário nomear a todas aqui, uma vez que esse não é nosso objetivo, mas é interessante saber que a maioria das linguagens modernas implementa intrinsecamente o paradigma OO. <br />
 Entre elas temos C++, Object Pascal (Delphi, Lazarus IDE), Python,  Java (a Linguagem e a plataforma), C# (C sharp), e diversas &#8216;scripting languages&#8217;, como PHP, Ruby, Javascript, ActionScript.</p>
<p>

                            <div id="aspdf">
                                <a href="http://isaquealves.com/wp-content/plugins/as-pdf/generate.php?post=237">
                                    <span>Download PDF</span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://isaquealves.com/2009/12/desenvolvimento/entendendo-orientacao-a-objetos-na-pratica-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
