Anda di halaman 1dari 11

INSTITUTO FEDERAL DA BAHIA CAMPUS EUNPOLIS

TECNOLOGIA EM ANLISE E DESENVOLVIMENTO DE SISTEMAS

ALVIMAR CAMPOS
CARLOS ROBERTO XAVIER DA SILVA
DHENNYFER BELM DE SOUZA
ROBERTO DO CARMO CARVALHO
TAILINE DE SOUSA DE FREITAS

PROGRAMAO ORIENTADA A OBJETOS

EUNAPOLIS-BA
2015

Programao Orientada a Objetos


Alvimar Camposa, Carlos Roberto Xavier da Silvaa, Dhennyfer Belm de Souzaa,
Roberto do Carmo Carvalhoa, Tailine de Souza de Freitasa
a

Aluno de Introduo Computao do curso superior tecnolgico de Anlise e


Desenvolvimento de Sistemas - 1 Semestre - Instituto Federal de Educao, Cincia e
Tecnologia da Bahia IFBA - Campus Eunpolis
Av. David Jonas Fadini, s/n, Rosa Neto Eunpolis BA CEP 45.823-431
dinamik@gmail.com,carlosrobertoxavierdasilva@gmail.com,dhennyferads@ya
hoo.com.br,bebeto.onassis@hotmail.com, tailinesz@gmail.com

Abstract. The present article tries discuss the origins and basics of computer
programming paradigm Object Oriented called in the jargon of Information
Technology (IT) such as OOP. To base it, the argument contained herein initially refers
to human philosophical reasoning (especially Cartesian) that theorized in the
seventeenth century, about the undoubted understanding of the physical things, the
objects, including the concept of abstraction from a practical point of view. Next,
considering important and recognized references produced in the computing segment
level, we discuss in brief history, the emergence of this important form of computer
programming. Finally, determining the completion of what is proposed, is to present the
main definitions relating to Object Oriented Programming (classes, class instantiation the objects, attributes and methods), its peculiarities (the basic pillars of OOP) and
subliminally, the advantages against to the form of procedural or structured code
programs.
Resumo. O presente artigo intenta discorrer sobre os primrdios e caractersticas bsicas
do paradigma de programao computacional Orientada a Objetos, denominada no
jargo da Tecnologia da Informao (TI) como POO. Para fundament-lo, a
argumentao aqui contida recorre inicialmente ao raciocnio filosfico humano
(sobretudo o cartesiano) que teorizava, no sculo XVII, a respeito do entendimento
indubitvel das coisas fsicas, os objetos, incluindo o conceito de abstrao do ponto de
vista prtico. A seguir, considerando importantes e reconhecidas referncias produzidas
no mbito do segmento da informtica, aborda-se, em breve histrico, o surgimento
desta importante forma de programao de computadores. Finalmente, determinando a
concluso do que se prope, trata de apresentar as principais definies atinentes
Programao Orientada a Objetos (classes, instanciao de classes - os objetos, atributos
e mtodos), suas peculiaridades (os pilares bsicos da POO) e, subliminarmente, as
vantagens em comparao forma procedural ou estruturada de codificar programas.

1. Fundamentos Conceituais da Programao Orientada a Objetos


Segundo Sintes (2002), a Orientao a Objetos um estado de mente, uma maneira de
ver o mundo todo em termos de objetos. Aqui, torna-se necessrio o claro entendimento
de alguns conceitos bsicos (o que um objeto e do que trata a abstrao), com o que
ser possvel a compreenso exata do padro de programao orientada a objetos, tema
do presente artigo.
O princpio cartesiano do ideal perfeito, consubstanciado em uma das mais
importantes produes literrias da filosofia moderna, intitulado Meditationes de

prima philosophia qua Dei existentia et animae immortalitas demonstratur (em


portugus, Meditaes de filosofia primeira em que so demonstradas a existncia de
Deus e a imortalidade da alma) define, num contexto geral, os objetos. Conforme a
teoria contida naquela obra, seu autor, o pensador, filsofo fsico e matemtico francs,
Ren Descartes, prope que um objeto somente existe quando, alm de imaginado e
percebido sensorialmente (com os respectivos atributos e comportamentos), aps sua
fragmentao para anlise da composio fundamental e posterior reagrupamento num
todo verdadeiro, evidencia clara e indubitavelmente sua propriedade de extenso. Neste
contexto, o universo cartesiano constitudo por poucos elementos e princpios:
matria (entendida no sentido geomtrico de extenso) e movimento. (Reale e Antiseri,
2005).

Figura 01. Ren Descartes (fonte: http://historiahoje.com/wpcontent/uploads/2014/07/descartes-1.jpg)

J a abstrao definida no dicionrio Michaelis como sendo o Processo pelo


qual se isolam atributos de um objeto, considerando o que certos grupos de objetos
tenham em comum (Michaelis). Este significado, ambientado no campo de
conhecimento da filosofia mostra-se aplicvel ao ramo da computao pelo fato de
corroborar o que a teoria cartesiana impe como uma das condies de existncia de um
objeto, a fragmentao com finalidade analtica.
Assim, em acordo aos preceitos determinados pela filosofia e, no mbito da
programao computacional, os objetos devem ser obrigatoriamente derivados de
classes (idealizaes) genricas (as superclasses), as quais, por sua vez correspondem
abstrao no palpvel, mas ideal, das coisas. Estas Classes so os moldes que
referenciam propriedades a um elemento, de modo a tornar possvel a sua existncia na
forma de um objeto. Em outras palavras, as Superclasses so instanciadas a partir de
determinados mtodos (construtores) e atingem o nvel da existncia real aceitvel,
produzindo os objetos e suas especificidades. Assim, por exemplo, a partir de uma
classe nomeada como animal (uma superclasse abstrata) originam-se diversas
subclasses que, conforme suas especificidades tornam-se, por meio de instanciao,
objetos, herdando as mesmas caractersticas da classe animal e recebendo
adicionalmente, os atributos e comportamentos prprios e exclusivos.

A seguir, representa-se um esquema de instanciao de uma Superclasse


(Eletroeletronico) para gerao de subclasses (ControleRemoto, Televisao e
ArCondicionado). Note-se que a Superclasse Eletroeletrnico transfere todas as suas
funes s subclasses adjacentes, porm, cada uma delas difere entre si por abrigar
atributos e comportamentos distintos. Deste modo tornam-se objetos individualizados.

Figura 02. Diagrama de instanciao de Superclasse em POO

Em resumo, um objeto tm atributos (o que ele ) e comportamentos (mtodos)


especficos e temporais (pois o objeto existe somente no momento do evento, ou da
execuo do programa, quando a classe que o criou implementada) determinados por
sua classe, a qual, por sua vez, a receita de construo do objeto (Manzano &
Oliveira, 2011).
Atribui-se, (http://ei.cs.vt.edu/~history/GASCH.KAY.HTML), ao americano Alan
Kay (pesquisador graduado em matemtica e biologia molecular), a primeira referncia
ao termo Programao Orientada a Objetos (identificado na sequencia do presente
artigo pela sigla POO). Durante sua atuao como consultor numa pesquisa educacional
promovida no incio da dcada de 70 do sculo XX pela Xerox PARC (Xerox Palo Alto
Research Center, renomada diviso de P & D da Xerox Corporation), Alan Kay
observou que crianas obtinham melhor nvel cognitivo quando submetidas a tcnicas
de ensino dinmico e sequencial que contemplassem em seu escopo, desde a utilizao
de feies grficas e desenhos, at atingir, num nvel limiar, as representaes abstratas
e simblicas. A partir da, o pesquisador concluiu que uma estratgia que explorasse o
uso de grficos e animaes seria bastante apropriada ao desenvolvimento de
linguagens computacionais mais facilmente apreensveis aos interessados por
programao. Assim surgiu a linguagem Smaltalk, considerada a precursora concreta da
POO.
Importa citar que, no obstante haver mrito para Alan Kay, pela primeira
aplicao prtica da linguagem orientada a objetos, desde 1962, segundo Sklenar
(1997), os holandeses Kristen Nigaard e Ole-Johan Dahl j trabalhavam no
desenvolvimento de uma linguagem de programao simples modelada para orientao
a objetos, o Simula67, o qual inclusive serviu como base para o desenvolvimento de
Kay.

Figura 03. Alan Kay (centro da imagem, entre as crianas), consultor da pesquisa
educacional que resultou na criao da Linguagem SmallTalk. (fonte:
http://ei.cs.vt.edu/~history/GASCH.KAY.HTML)

Atualmente h vrias linguagens de programao em que o paradigma da


orientao a objetos pode ser utilizado. Python, Object Pascal, Java, Java Script, C++,
C#, VB.NET, PHP, Ruby, SmallTalk-80, Perl, entre diversas outras linguagens,
permitem ou do suporte modelagem de cdigos a partir do estabelecimento de classes
(e suas respectivas instanciaes - os objetos), de mtodos, de mecanismos de herana,
de mensagens inter-objetos ou inter-classes, de polimorfismo, e de todos os demais
conceitos e ferramentas prprios orientao a objetos. A seguir, nas prximas sees
deste artigo tem-se o detalhamento destes conceitos, sobretudo os que fundamentam a
POO, quais sejam, a abstrao, o encapsulamento e o polimorfismo.
2. Comparao Entre a POO e os Mtodos Estruturados (procedurais) de

Programao

Figura 04. Diagrama Demonstrativo - Evoluo das Linguagens de Programao (fonte:


http://www.ime.usp.br/~kon/MAC5714/aulas/Aula2.html)

Segundo Sintes (2002), a programao estruturada consiste na disposio ordenada e


sequencial de dados e procedimentos (identificadores de variveis e comandos) nas
linhas de cdigo dos softwares e no estabelecimento de chamadas procedurais (os

procedures) bem definidas que instruem sua execuo, porm, devido ao baixo nvel de
abstrao tem limitaes relacionadas complexidade do cdigo e sua reutilizao em
outros sistemas.
O princpio basilar da Programao Orientada a Objetos fundado na ideia de
que os objetos dispostos num determinado sistema interagem entre si, num fluxo que
engloba todo o programa. Este paradigma de programao, baseado no relacionamento
(comunicao) entre diferentes objetos, est calado na abstrao de verbos,
substantivos e adjetivos imputados s subclasses, tornados em objetos, e permite a
herdabilidade de propriedades a favor de quaisquer objetos instanciados. Esta interao
ocorre em funo das mensagens trocadas entre si, oportunidade em que mtodos e/ou
comportamentos de certo objeto, se requeridos, so designados para outro objeto para
que este assuma funo semelhante daquele. (Sintes, 2002).
Enfim, a POO, tratando-se de um paradigma que alm de procedural e modular,
abstrato, e que alm de tudo admite a particularizao das subclasses em objetos
independentes, diferencia-se com larga vantagem em relao s demais (tradicionais,
estruturadas, modulares, ou com abstrao apenas de dados), por flexibilizar processos
que, por exemplo, tornam possveis quaisquer modificaes nas caractersticas e
funes de objetos-alvo sem comprometimento ao restante da estrutura do cdigo j que
os mtodos so dirigidos a objetos (ou classes, se for o caso) especficos numa interao
direta, o que impossvel de se realizar em programas montados sob outras linguagens
em que os procedimentos (ou funes) so aplicados de forma global aos dados,
conforme se verifica nas figuras 5 e 6 a seguir.

Figura 05. Esquema Comparativo entre POO e Programao Estruturada (fonte:


http://www.devmedia.com.br/os-4-pilares-da-programacao-orientada-a-objetos/9264)

De acordo com Manzano & Oliveira (2011), os sistemas construdos sob o


paradigma da orientao a objetos contm uma subdiviso de cdigos mais lgica e com
encapsulamento mais eficiente, o que resulta em maior facilidade no momento de
extenso e manuteno dos mesmos. O encapsulamento beneficia a POO por
proporcionar, ou a separao do programa em partes ou o seu reordenamento,
facilitando a expanso do cdigo do programa. Tambm o fato de, ainda na fase de
planejamento, ser possvel fracionar-se o sistema em especificaes que contenham
classes e pacotes com atributos e mtodos dirigidos declaradamente a determinados
objetos, traduz um grande benefcio da POO, pois assim possvel a distribuio de
problemas e tarefas entre os vrios desenvolvedores de uma mesma equipe. O controle
de acesso e isolamento s propriedades de um objeto outra das caractersticas

vantajosas da Programao Orientada a Objetos, o que no ocorre em outros


paradigmas. O aproveitamento de cdigos abrigados em determinados sistemas, para
reutilizao em outros, tambm mais uma vantagem da POO em relao linguagem
estruturada.

Figura 06. Comparao entre POO e Programao Estruturada

3. Fundamentao da Orientao a Objetos


3.1. Classe
Conforme Azevedo (2015), em programao as classes so anlogas s receitas,
possuem caractersticas e aes, possibilitando assim armazenar propriedade e mtodos
dentro dela. Para fazer uma classe, necessita-se utilizar o fundamento da abstrao. A
classe um substantivo, por exemplo: um lugar, uma pessoa. Assim, um programa que
utiliza uma interface controladora de um motor eltrico define a classe Motor. Os
atributos desta classe seriam: temperatura, velocidade, tenso. Estes
provavelmente seriam representados na classe por tipos como int ou float. Os mtodos
desta classe seriam funes para alterar a velocidade, ler a temperatura, etc.
Todas as classes (assim como os atributos e mtodos) possuem um nome e
apresentam visibilidade conforme determinao dada pelos modificadores de acesso
descritos no cdigo, quais sejam: public, private, protected. Desta forma, evitam-se
alteraes fortuitas ou indesejadas nos atributos e mtodos das mesmas, o que vem a ser
um auxlio ao processo de encapsulamento descrito a seguir, neste artigo.
Para criar uma classe basta declarar a visibilidade (public, private, protected), a
palavra reservada class, o NomeDaClasse e em seguida os smbolos { }(chaves),
cujas posies designam o incio ou fechamento das declaraes de comando.
- Instncia de uma classe:
Imagine-se uma Classe Carro. Este Classe representa um ente constitudo por suas
generalidades, porm, atribuindo-se uma identidade (por exemplo, denominando-a de
fusca) e determinadas particularidades a esta Classe, estaremos instanciando-a,
criando ento, um novo objeto denominado fusca.

3.2 Objeto
Ainda segundo Azevedo (2015), Objeto o incio da construo de uma
classe. Numa classe de Animais, por exemplo, da qual se instancia o objeto gato,
este ltimo mantm o atributo de ser um animal, mas detm caractersticas especficas.
Da mesma forma, uma classe de Funcionrios pode ter vrios objetos. Gerente,
secretria, etc., podem ocupar uma mesma Classe pelo fato de serem funcionrios, e
possuem caractersticas e aes particulares ou comuns discriminadas conforme seus
Mtodos e Atributos. Desta feita, objetos tm variveis e mtodos caractersticos a eles.

Classes

1Funcionarios

objetos

1.1-gerente

2-Animais

2.1-gato

Figura 07. Esquema demonstrativo da instanciao de Classes

3.3 Atributo
Segundo Azevedo (2015), atributos so as caractersticas do objeto, ou variveis da
Classe. Por exemplo: Em uma classe de funcionrios podem existir vrios vendedores.
Os atributos diferenciam um objeto do outro, j que cada objeto possui sua
caracterstica. No caso exemplificado no esquema representado a seguir, cada objeto
(venderor_1 e vendedor_2) instanciado da Classe Funcionario tem seu atributo nico.

Classe

Funcionario

objetos

Atributos

Vendedor_1

Vendedor_2

comissionado

assalariado

Figura 08. Esquema demonstrativo da atribuio de caractersticas particulares


a objetos instanciados a partir de uma mesma Classe

Um atributo de uma determinada Classe possui um estado que compartilhado


por todos os objetos derivados dela. Atributos de classe podem ser chamados tambm
de atributos estticos. Constantes so considerados atributos de classe quando esto fora

de qualquer mtodo. Os mtodos enviados a um objeto (chamados de mensagens)


podem mudar o valor de um ou mais atributos, alterando o estado do objeto.
3.4 Mtodos
Segundo Ambler (1998), mtodos so as aes que os objetos podem exercer quando
solicitados. Eles podem interagir e se comunicar com outros objetos. Utilizando o
exemplo da Classe Animais, se se aplicar o mtodo Falar, os objetos instanciados
respondero conforme suas peculiaridades.

Classe

ANIMAL

objetos
Atributos

gato

co

RaaLabrador

MetodoFalar

RaaSiams

Latir

Miar

Figura 09. Esquema demonstrativo do resultado da chamada de um nico


mtodo a objetos instanciados a partir de uma mesma Classe

Vale observar que os mtodos definem as aes dos objetos.


- Mtodo construtor e mtodo destrutor
Segundo Azevedo (2015), mtodos construtores so executados automaticamente
quando for criado o objeto. Por exemplo: Quando se cria uma Classe Conta, define-se
o atributo Saldo desta conta como zero. Em contraposio, o mtodo destrutor ser
utilizado automaticamente assim que o primeiro no mais for aplicvel.

4. Os quatro pilares da Programao Orientada a Objetos


Conforme Ambler (1998), para que haja um entendimento exato do que trata a
Orientao a Objetos, devem ser considerados os requerimentos exigidos por este
paradigma, num contexto que necessariamente envolve a linguagem de programao
utilizada na confeco do cdigo computacional. Quatro tpicos fundamentais agregam
este paradigma, quais sejam:
4.1 Abstrao
A abstrao consiste em um dos pontos mais importantes dentro de qualquer linguagem
Orientada a Objetos. Lidando com uma representao de objetos reais, deve-se imaginar
no mximo grau de detalhamento possvel, o que esse objeto ir realizar dentro de um
sistema, sob trs perspectivas:
A primeira perspectiva a de dar uma identidade ao objeto que ir ser criado.
Essa identidade deve ser nica dentro do sistema para que no haja conflito com outras

entidades. Na maior parte das linguagens, h o conceito de pacotes (ou namespaces).


Assim, a identidade do objeto no pode ser repetida dentro de um mesmo pacote, assim
como no sistema inteiro.
A segunda diz respeito s caractersticas do objeto. Como se sabe, no mundo real
qualquer objeto possui elementos que o definem. Dentro da Programao Orientada a
Objetos (POO), essas caractersticas so nomeadas propriedades. Por exemplo, as
propriedades de um objeto Cachorro poderiam ser raa ou habilidade.
Por fim, a terceira perspectiva tem relao com a definio das aes que o objeto
ir executar, os mtodos. Esses mtodos (ou eventos) podem ser extremamente
variveis, desde Acionar em um objeto lmpada at Latir em um objeto cachorro.
4.2 Encapsulamento
O encapsulamento um dos diferenciais prticos da POO. Consiste na adio de
segurana aos aplicativos baseados neste paradigma por esconder as propriedades dos
objetos, criando uma espcie de invlucro virtual. A grande maioria das linguagens
Orientadas a Objeto implementa esta tcnica, baseando-se na particularizao de suas
caractersticas por intermdio de procedimentos especiais chamados getters e setter.
Traando uma analogia com o mundo real, o encapsulamento pode ser exemplificado da
seguinte forma: acionando-se a chave de ignio de um carro, no se sabe o que est
acontecendo para que a partida do motor seja efetuada. Ento, diz-se que os mtodos
que ligam o carro esto encapsulados.
4.3 Herana
A reutilizao dos cdigos um dos grandes trunfos da Programao Orientada a
Objetos. A herana atribuda aos objetos resulta na agregao quantitativa de valor
produo de uma aplicao.
O processo de transferncia de atributos ocorre hierarquicamente. A herana
ocorrida a partir das caractersticas do objeto mais acima considerada herana direta,
enquanto as demais so consideradas heranas indiretas.

OBJETO 1
Herda de

OBJETO 2
Herda de

... OBJETO n
Figura 10. Herana na Orientao a Objetos

4.4 Polimorfismo
No polimorfismo, as Classes (ou objetos) derivadas de uma nica SuperClasse so
capazes de invocar mtodos que, embora apresentem a mesma assinatura, comportam-se
de maneira diferente. A figura 09 apresentada anteriormente neste artigo tambm
demonstra esta propriedade. Um nico mtodo (falar) aplicado a dois objetos resultou
em eventos diferentes (Latir e Miar).

5. Bibliografia
Ambler, Scott W., (1998), Anlise e Projeto Orientado a Objeto Vol. II, Editora
InforBook, Traduo: Oswaldi Zanelli, Brasil.
Azevedo, Andrielle. In: <https://andrielleazevedo.wordpress.com/2011/08/11/conceitosbasicos-de-poo-programacao-orientada-a-objetos-para-c-parte-1/>. Acessado em 7
de outubro de 2015.>
Cores. In: <http://www.amd.com/pt-br/innovations/software-technologies/processorsfor-business/compute-cores>. Acessado em 7 de outubro de 2015.
Cray T-90. In: <http://www.craywiki.com/index.php?title=Cray_T90.> Acessado em 1
de outubro de 2015.
Junior, Aparecido Vilela (2012), Circuitos Lgicos, In: Fundamentos e Arquitetura de
Computadores. CESUMAR Centro Universitrio De Maring - Ncleo de
Educao distncia. 153 p.
Manzano, Jos Augusto N. G. e Oliveira, Jayr Figueiredo (2011), Algoritmos Lgica
para Desenvolvimento de Computadores, Editora tica Ltda. So Paulo Brasil.
220 p.
Monteiro, Mrio A. (2011), Conjunto de Instrues, In: Introduo Organizao de
Computadores, Ed. LTC. Brasil. p. 308-309.
Reale, Giovanni e Antiseri, Darlo (2005), Histria da Filosofia: Do Humanismo
Descartes, 2 Edio, Ed. Paullus, Traduo Ivo Storniolo, Brasil, 321 p.
Sintes, Anthony (2002), Aprenda Programao Orientada a Objetos. 2002. Pearson
Makron Books, Traduo: Joo Eduardo Nbrega Tortello. 693 p.
Sklenar,
Jaroslav
(1997),
Introduction
to
OPP
in
Simula,
<http://staff.um.edu.mt/jskl1/talk.html> Acessado em 25 de outubro de 2015.

In:

Anda mungkin juga menyukai