Artigo - POO

download Artigo - POO

If you can't read please download the document

description

Trabalho sobre POO - Programação Orientada a Objetos

Transcript of Artigo - POO

  • 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 Silva

    a, Dhennyfer Belm de Souza

    a,

    Roberto do Carmo Carvalhoa, Tailine de Souza de Freitas

    a

    aAluno 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

    [email protected],[email protected],dhennyferads@ya

    hoo.com.br,[email protected], [email protected]

    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/wp-content/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.

    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.

    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

    1-

    Funcionarios Classes

    1.1-gerente

    2-Animais

    2.1-gato

    Classe

    objetos

    Atributos

    Funcionario

    Vendedor_1

    comissionado

    Vendedor_2

    assalariado

    objetos

  • 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.

    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

    Atributos RaaLabrador RaaSiams

    MetodoFalar Latir Miar

    Classe ANIMAL

    objetos co gato

    http://www.devmedia.com.br/curso/basico-de-java-e-orientacao-a-objetos/360http://www.devmedia.com.br/curso/basico-de-java-e-orientacao-a-objetos/360
  • 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.

    Figura 10. Herana na Orientao a Objetos

    ... OBJETO n

    OBJETO 2

    OBJETO 1

    Herda de

    Herda de

  • 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: . Acessado em 7

    de outubro de 2015.>

    Cores. In: . Acessado em 7 de outubro de 2015.

    Cray T-90. In: 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, In:

    Acessado em 25 de outubro de 2015.

    https://andrielleazevedo.wordpress.com/2011/08/11/conceitos-basicos-de-poo-programacao-orientada-a-objetos-para-c-parte-1/https://andrielleazevedo.wordpress.com/2011/08/11/conceitos-basicos-de-poo-programacao-orientada-a-objetos-para-c-parte-1/