Você está na página 1de 24

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 5

1 INTRODUO ORIENTAO A OBJETOS


1.1 O PROPSITO DA ORIENTAO A OBJETOS
A construo de uma soluo computadorizada consiste no mapeamento do problema a ser resolvido no mundo real (o Espao do Problema) em um modelo de soluo no Espao de Solues, isto , o meio computacional. A modelagem envolve, ento, a identificao de objetos e operaes relevantes no mundo real e o mapeamento desses em representaes abstratas no mundo computacional. distncia existente entre o problema no mundo real e o modelo abstrato construdo, convencionou-se chamar gap semntico e, obviamente, quanto menor ele for, mais direto ser o mapeamento e, portanto, mais rapidamente sero construdas solues para o problema. Sob essa tica, fcil perceber que o gap semntico representa a rea de atuao da Engenharia de Software. Diversas tcnicas e mtodos tm sido propostos para as diferentes fases do processo de desenvolvimento, buscando minimiz-lo. A Orientao a Objetos um dos paradigmas existentes para apoiar o desenvolvimento de sistemas, que busca fornecer meios para se diminuir o gap semntico. (Origem: Prof. Ricardo de Almeida Falbo, Apostila de Anlise de Sistemas - Notas de Aula, 2002,
UFES)

A computao atualmente parte do dia-a-dia da Sociedade. Em termos de hardware e software a evoluo constante e tem atingido altos nveis. Pode-se dizer que para boa parte dos problemas do mundo real que precisam ser mapeados em sistemas computacionais, mais precisamente em softwares, j possuem as tecnologias de hardware e software necessrios. Assim o problema neste caso deixa de ser onde o sistema executar e passa a ser como resolver o problema de maneira mais eficiente, ou seja, como representar o problema do mundo real para o mundo computacional capturando todas as caractersticas necessrias e que execute a melhor soluo possvel. E quando comea-se a falar em metodologias, tecnologias e tcnicas de desenvolvimento de software. O que est dominando atualmente o mercado justamente a Orientao a Objetos (OO). A tcnica da orientao a objeto est entre as melhores maneiras conhecidas para se desenvolver Sistemas de Informao Automatizados grandes ou complexos. Aprender a racionar orientado a objetos, bem como a utilizar corretamente as suas tcnicas no fcil, mas pode-se afirmar que essencial para qualquer profissional da rea atualmente. A Orientao a Objeto um paradigma de anlise, projeto e programao de sistemas de informao automatizados baseado na composio e interao entre diversas unidades de software chamadas objetos.

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 6

Mas o que Objeto? De acordo com o dicionrio: - Objeto: 1. Tudo que se oferece aos nossos sentidos ou nossa alma. 2. Coisa material: Havia na estante vrios objetos. 3. Tudo que constitui a matria de cincias ou artes. 4. Assunto, matria. 5. Fim a que se mira ou que se tem em vista.

A figura acima destaca uma srie de objetos. Objetos podem ser no s coisas concretas como tambm coisas inanimadas, como por exemplo uma matrcula, as disciplinas de um curso, os horrios de aula. Na programao orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no software. Cada classe possui um comportamento (definidos pelos mtodos) e estados possveis (valores dos atributos) de seus objetos, assim como o relacionamento com outros objetos. Simula (a 1. Linguagem OO conhecida), Smalltalk (a 1. Linguagem OO a ganhar destaque), Perl, Python, PHP, Java, C++ e C# so algumas das linguagens de programao mais importantes com suporte a orientao a objetos.

1.1.1 A PROPOSTA DA ORIENTAO A OBJETOS


A proposta da Orientao e Objetos representar o mais fielmente possvel as situaes do mundo real nos sistemas computacionais. Ns entendemos o mundo como um todo composto por vrios objetos que interagem uns com os outros. Da mesma maneira, a orientao a objetos consiste em considerar os sistemas computacionais no como uma coleo estruturada de processos, mas sim como uma coleo de objetos que interagem entre si (Origem:
http://72.14.209.104/search?q=cache:Ba1uGSi5Tz0J:ftp.faculdadesnda.com.br/lcarvalho/20112%2520%2520Linguagem%2520de%2520Programa%25E7%25E3o%2520III/APOSTILAS/Livro%2520AOOPascal.pdf+compara%C3%A7%C3%A3o+abordagem+diferen%C3%A7as+estruturada+an%C3%A1lise+prop%C3%B3sito +%22orienta%C3%A7%C3%A3o+a+objetos%22&hl=pt-BR&gl=br&ct=clnk&cd=46)

1.1.2 OS PRINCPIOS DA ORIENTAO A OBJETOS


Origem: Artigo Paradigma da Orientao a Objetos Autor: Alessandro F L (lecadf) Local: http://www.forumweb.com.br/artigos Data: Sexta-feira, 14 de Abril de 2006

[...] H alguns anos, Alan Kay, um dos pais do paradigma da orientao a objetos, formulou a chamada "analogia biolgica". Nessa analogia ele imaginou como seria um sistema de software que funcionasse como um ser vivo, no qual cada "clula" interagiria com outras clulas atravs do envio de mensagens para realizao do objetivo comum.

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 7

De uma forma mais geral, Kay pensou em como construir um sistema de software a partir de agentes autnomos que interagem entre si. Ele ento estabeleceu os seguintes princpios da orientao a objetos:[1] (a) Qualquer coisa um objeto; (b) Objetos realizam tarefas atravs da requisio de servios a outros objetos; (c) Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares; (d) A classe um repositrio para comportamento associado ao objeto; (e) Classes so organizadas em hierarquias. [...]

1.1.3 VANTAGENS / BENEFCIOS


A tcnica da orientao a objetos apresenta uma srie de vantagens, cada vez mais necessrias no atual desenvolvimento de sistemas computacionais. Entre tais vantagens podem ser destacadas as seguintes: Gap Semntico reduzido o mundo real composto por objetos, e o mesmo ocorre com o mundo computacional, facilitando assim a compreenso; Centralizao de dados e funes em uma nica unidade, o objeto; Reutilizao o que permite um ganho significativo de tempo e custo. Aqui h destaque para o conceito de herana. No desenvolvimento de softwares o uso de tal conceito reduz custo e tempo; Modularizao no s no que se refere aos pacotes, mas principalmente ao tratamento de classes; Compatibilidade os modelos desenvolvidos (anlise, projeto e programao) so claramente relacionados e complementares. Fica destacada aqui a importncia crescente da documentao de um software; Manutenibilidade as classes centralizam os dados e funes daquilo que tratam, ficando mais fcil localizar os pontos necessrios em uma manuteno, evitando parcialmente o verdadeiro efeito bola de neve que uma manuteno mal planejada pode causar. E principalmente, a possibilidade de trabalhar com herana, que centraliza ainda mais as caractersticas comuns que as classes compartilharem; Ocultamento de Informao uma classe enxerga apenas a interface de outra classe, o que evita vrios erros acidentais.

Origem: Livro: Anlise Orientada a Objetos, Prof. Dr. Malcon A. Tafner, Prof. Carlos H. Correa

OS BENEFCIOS DA ORIENTAO A OBJETOS A tcnica de anlise e programao orientada a objetos est se tornando cada vez mais popular entre os desenvolvedores de sistema. Essa popularidade no fruto do acaso, ou da moda, e sim das vantagens que os desenvolvedores passam a usufruir quando adotam essa metodologia. A principal vantagem da orientao a objetos consiste em reunir em uma mesma estrutura os dados e os processos que so executados sobre esses dados, permitindo assim um maior grau de organizao e simplicidade do programa. A partir do momento em que um desenvolvedor cria um objeto para realizar uma tarefa complexa, os outros desenvolvedores s precisam acessar esse objeto para realizar essa mesma tarefa, sem precisar saber como elas so realizadas. Se algum muda a maneira como esse objeto realiza internamente essa tarefa, os outros desenvolvedores no precisam alterar os seus programas para continuar acessando o novo comportamento, e isso representa um ganho real de produtividade.

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 8

O procedimento de manuteno restrito ao objeto reduz custo, tempo e assegura a certeza de uma manuteno eficaz, visto que as variveis controladas estavam restritas aos objetos modificados, e mais em nenhuma outra parte do sistema. Uma estrutura eficaz de objetos, uma vez criada, permitir incluir mdulos adicionais no sistema que reutilizem as funcionalidades j desenvolvidas sem necessidade de reprogramao. Reutilizar no duplicar cdigo e alterar. Significa que o mesmo cdigo pode ser usado por sistemas diferentes, reduzindo o custo de desenvolvimento e o risco de cometer erros de programao, ao mesmo tempo que no ser necessrio alterar trechos, o que poderia introduzir novos erros no cdigo. Por exemplo, uma empresa desenvolve um sistema educacional que tenha sua funcionalidade de cobrana baseada em objetos. A mesma empresa pode desenvolver um sistema imobilirio e reutilizar objetos de cobrana , incluindo-os no novo sistema. Se o autor do sistema educacional fizer aperfeioamentos ou correes nos objetos de cobrana, essas alteraes tero sido realizadas de uma vez em todos os sistemas da empresa. Dentro de uma viso orientada a objetos, quando precisamos criar um sistema de informaes, precisamos, antes de tudo, identificar quais so os objetos necessrios para operacionalizar esse sistema. Uma vez definidos os objetos necessrios, e antes mesmo de partir para a criao destes, podemos partir para a reutilizao de objetos j existentes, ou seja, verificar em outros sistemas se j no existem objetos que realizam as tarefas desejadas. Se existirem objetos que podem ser reutilizados , estes podem ser includos no novo sistema sem a necessidade e o custo de criao. Outra opo tambm pode ser a transformao de objetos semelhantes, ou seja, objetos cujas caractersticas so bastante semelhantes podem, com pequenas modificaes, serem teis ao novo sistema. Para a mudana de um sistema, vlida a mesma proposta de flexibilidade, podendo-se adaptar, excluir, ou mesmo incluir novos objetos rapidamente, com a mesma garantia de ter atingido todo o universo necessrio dentro do sistema para assegurar a eficcia da modificao. O desenvolvimento orientado a objetos um mtodo de desenvolvimento cujo objetivo proporcionar o mximo possvel de reutilizao. tambm um mtodo que simplifica a montagem de novos sistemas, uma vez que esse mtodo trata do manuseio de objetos pr-prontos.

1.2 COMPARAO OBJETOS

ENTRE AS

TCNICAS ESTRUTURADA
DAS

ORIENTADA

A E

1.2.1 HISTRICO SURGIMENTO ORIENTADA A OBJETOS


...

TCNICAS ESTRUTURADA

Origem: Manual de Referncia Tcnicas e Projeto de Sistemas, Prof. M.Sc. Gerson Pesente Fockin, Escola Tcnica federal de Palmas, Curso Tcnico em Informtica (lab.etfto.gov.br/~focking/manual_referencia.doc)

At o incio da dcada de 70, o computador era utilizado somente por grandes empresas. Neste perodo, com a queda do preo dos computadores e a consequente proliferao do uso destes, cresceu a demanda por software. As tcnicas de desenvolvimento de software utilizadas at ento no eram suficientes para contornar os problemas existentes no desenvolvimento de sistemas, principalmente quando desenvolvidos em grande escala, como ento se exigia. Na verdade, pouco se possua de tcnicas que estivessem realmente sendo aplicadas. Foi neste contexto que surgiu a programao estruturada, seguida pelo conceito de desenvolvimento estruturado de sistemas. Esta modelagem tentava oferecer solues para os problemas ligados ao desenvolvimento de sistemas, ao pregar a aplicao dos seguintes princpios:

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 9

1 - Princpio da Abstrao: para resolver um problema, o analista deveria analis-lo separadamente dos demais, ou seja, abstrair os detalhes; 2 - Princpio da Formalidade: o analista deveria seguir um caminho rigoroso e metdico para solucionar um problema; 3 - Princpio de "dividir para conquistar": o analista deveria dividir o problema em partes menores, independentes e com possibilidade de serem mais simples de entender e solucionar; 4 - Princpio da Disposio Hierrquica: o analista deveria organizar os componentes da soluo do problema na forma de uma rvore com estrutura hierrquica. O sistema seria entendido e construdo nvel a nvel, onde cada novo nvel acrescentaria mais detalhes. Estas tcnicas tiveram uma rpida disseminao, sendo hoje conhecidas pela grande maioria dos que trabalham na rea. Estamos agora numa situao semelhante quela que se apresentava na dcada de 70. A disseminao do uso do computador se tornou muito grande e a todo instante surgem novas tecnologias de hardware, que impulsionam os preos para baixo e nos abrem horizontes para novas aplicaes, assim como novas perspectivas para aplicaes atuais. As novas aplicaes se caracterizam por: Grande interao com o usurio; Uso de interfaces grficas (GUI) como o Windows; Necessidade permanente de alterao e expanso, dada a velocidade de mudanas na tecnologia de hardware; Interao com outros sistemas, possibilitando a troca de dados entre estes; Portabilidade para diversas plataformas e sistemas operacionais.

As tcnicas oferecidas pela programao estruturada superavam com certa dificuldade as complexidades envolvidas no desenvolvimento deste tipo de sistemas. Demandava-se novas tcnicas. Foi neste contexto que retornou-se a programao orientada a objetos. Esta metodologia no recente, mas somente agora vislumbrou-se sua potencialidade. Isto porque a orientao a objetos, devido as suas caractersticas, reduz as dificuldades de desenvolvimento: A linguagem do analista e do usurio passam a ser semelhantes, por se referirem a objetos do mundo real; Pode-se utilizar um mesmo objeto em diferentes sistemas, aumentando a produtividade do processo de desenvolvimento; Se a biblioteca de objetos for independente do sistema operacional utilizado, ao se mudar a plataforma ou o sistema operacional, basta recompilar o programa.

A metodologia de objetos vem oferecer uma soluo alternativa para o desenvolvimento de sistemas, e significa uma grande evoluo desde a programao estruturada. uma evoluo porque apesar da metodologia de orientao a objetos tambm utilizar os mesmos princpios da programao estruturada (abstrao, hierarquizao, decomposio) acrescenta novos princpios, como objetos, classes, herana, etc. [...]

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 10

1.2.2 ABORDAGEM ESTRUTURADA X ABORDAGEM ORIENTADA A OBJETOS


Origem: Prof. Ricardo de Almeida Falbo, Apostila de Anlise de Sistemas - Notas de Aula, 2002, UFES

Uma vez que, atualmente, a Orientao a Objetos tem tomado o espao antes ocupado pelo paradigma estruturado no desenvolvimento de sistemas, interessante fazer uma comparao entre os paradigmas que fundamentam estas abordagens: Estruturado: adota uma viso de desenvolvimento baseada em um modelo entradaprocessamento-sada. No paradigma estruturado, os dados so considerados separadamente das funes que os transformam e a decomposio funcional usada intensamente. Orientado a Objetos: pressupe que o mundo composto por objetos, onde um objeto uma entidade que combina estrutura de dados e comportamento funcional. No paradigma orientado a objetos, os sistemas so estruturados a partir dos objetos que existem no domnio do problema, isto , os sistemas so modelados como um nmero de objetos que interagem.

Em funo do paradigma que os rege, mtodos de anlise e projeto de sistemas so classificados em mtodos estruturados e mtodos orientados a objetos. Mtodos Estruturados Fazem clara distino entre funes e dados. Funes, a princpio, so ativas e tm comportamento, enquanto dados so repositrios passivos de informao, afetados por funes. Esta diviso tem origem na arquitetura de hardware de von Neumann, onde a separao entre programa e dados fortemente enfatizada. Os mtodos orientados a funes conduzem o desenvolvimento de software estruturando as aplicaes segundo a tica das funes (aes) que o sistema dever realizar. O sistema decomposto em funes, e os dados so transportados entre elas. Esta a filosofia da proposta original da Anlise Estruturada [DeMarco78] [Gane79], cuja ferramenta bsica de modelagem so os diagramas de fluxo de dados (DFDs). Os mtodos orientados a dados, por sua vez, enfatizam a identificao e estruturao dos dados, subjulgando a anlise das funes para um segundo plano. Esses mtodos tm origem no projeto de bancos de dados e, geralmente, tm no modelo de Entidades e Relacionamentos (ER) [Chen79] sua principal ferramenta. A nfase nas funes, geralmente, leva a sistemas com muita redundncia e, conseqentemente, inconsistentes e difceis de serem integrados. Por outro lado, a nfase nos dados est fundamentada em dois fatores significativos: Dados possuem existncia prpria nas organizaes independentemente dos processos que os manipulam. Dados so muito mais estveis que as funes em uma organizao. A menos que haja grandes mudanas nos negcios de uma empresa, os dados tendem a se manter estveis.

Assim, possvel desenvolver modelos de dados sem redundncia, sem inconsistncia e fceis de integrar. Entretanto, uma vez que o modelo de dados deve representar a realidade, e o conhecimento da realidade, muitas vezes, passa pelo conhecimento das funes, ele deve ser construdo de forma iterativa, no podendo ser considerado um produto acabado. A Anlise Essencial [Pompilho95] procurou conciliar as abordagens orientadas a dados e a funes em um nico mtodo, utilizando modelos para dados, funes e controles (DFDs e Modelo ER e Diagramas de Transio de Estados, respectivamente) como ferramentas para a modelagem de sistemas. Um sistema desenvolvido usando um mtodo estruturado, frequentemente, difcil de ser mantido. A princpio, o problema principal advm do fato de todas as funes terem de conhecer como os dados esto armazenados, isto , a estrutura dos dados. Alm disso, mudanas na

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 11

estrutura dos dados quase sempre acarretam modificaes em todas as funes relacionadas a essa estrutura. Em suma, a interpretao dos dados apenas implcita, provida pelos programas que lem ou escrevem dados. Diferentes programas podem dar diferentes interpretaes aos dados e, portanto, necessrio conhecer como eles foram projetados para poder interpret-los corretamente [Snyder93]. Mtodos Orientados a Objetos Os mtodos orientados a objetos partem de um ponto de vista distinto e intermedirio, onde se pressupe que o mundo real povoado por objetos, onde um objeto uma entidade que combina estrutura de dados e comportamento funcional. Mtodos orientados a objetos estruturam os sistemas a partir dos objetos que existem no domnio do problema. A orientao a objetos oferece um nmero de conceitos bastante apropriados para a modelagem de sistemas. Utilizando a orientao a objetos como base, os sistemas so modelados como um nmero de objetos que interagem. Os modelos baseados em objetos so teis para a compreenso de problemas, para a comunicao com os especialistas e usurios das aplicaes, e para a realizao das tarefas ao longo do ciclo de desenvolvimento de software. Os principais objetivos da orientao a objetos so: Diminuir a distncia conceitual entre o mundo real (domnio do problema) e o modelo abstrato de soluo (domnio da soluo); Trabalhar com noes intuitivas (objetos e aes) durante todo o ciclo de vida, atrasando, ao mximo, a introduo de conceitos de implementao.

Normalmente, esta uma maneira mais natural para descrever sistemas, j que os objetos so geralmente bastante estveis. Alteraes que por ventura venham a ocorrer, geralmente, afetam um ou alguns poucos objetos [Jacobson92]. Eduard Yourdon [Yourdon94] d um bom resumo do que pode ser considerado um produto orientado a objeto: Um sistema construdo usando um mtodo orientado a objetos aquele cujos componentes so partes encapsuladas de dados e funes, que podem herdar atributos e comportamento de outros componentes da mesma natureza, e cujos componentes comunicam-se entre si por meio de mensagens. Mtodos orientados a objetos utilizam uma perspectiva mais humana de observao da realidade, incluindo objetos, classificao e compreenso hierrquica. So benefcios esperados com o uso da orientao a objetos: 1. Capacidade de enfrentar novos domnios de aplicao; 2. Melhoria da interao entre analistas e especialistas; 3. Aumento da consistncia interna dos resultados da anlise; 4. Uso de uma representao bsica consistente para a anlise e projeto; 5. Alterabilidade, legibilidade e extensibilidade; 6. Possibilidade de ciclos de desenvolvimento variados; 7. Apoio reutilizao. importante enfatizar, no entanto, que a orientao a objetos no mgica, isto , ela no uma nova tbua de salvao para eliminar os problemas de produtividade e qualidade que tm atormentado a indstria de software ao longo das ltimas dcadas. Se praticada cuidadosamente, combinada com vrias outras tcnicas de Engenharia de Software tais como, uso de mtricas, reutilizao, testes, e garantia da qualidade - a orientao a objetos pode ajudar a levar a melhorias substanciais no desempenho de uma organizao de software [Yourdon94]. Portanto, imprescindvel, para grandes projetos, a definio de um processo de desenvolvimento que garanta o uso consistente dessas tcnicas e que seja apoiado por ferramentas computacionais, tais como ferramentas CASE e Ambientes de Desenvolvimento de Software.

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 12

1.2.3 PROGRAMAO ESTRUTURADA OBJETOS

PROGRAMAO ORIENTADA

Origem: Notas de Aula, Introduo Programao Orientada a Objetos, prof. Ulysses de Oliveira, 2002 Com breves adaptaes.

Na tabela abaixo est apresentada uma comparao de algumas caractersticas que diferenciam as programaes algortmicas (procedimental ou estruturada) e a orientada a objeto. Programao Algortmica (Procedimental) nfase: construo de algoritmos; Utiliza abordagem de refinamentos sucessivos; Subproblemas so codificados como unidades denominadas procedimentos, subrotinas ou funes; Unidades de programa podem ser agrupadas em mdulos; Programa resultante consiste de uma coleo de unidades que se comunicam entre si; Viso Top-down; Forte uso de Decomposio Funcional; O sistema composto por dados e funes, tratados separadamente, mas que podem interagir. Programao OO Metodologia desenvolvida objetivando suprir deficincias encontradas em programao algortmica; Encapsulamento: combinao de dados (atributos) e funes (mtodos) numa nica entidade de programa; Objeto: entidade de encapsulamento; Um programa no paradigma OO consiste de vrios objetos que se comunicam (isto , trocam mensagens) utilizando seus mtodos constituintes; Viso de Objetos cooperativos; As caractersticas de comportamento e informaes so modeladas de maneira fortemente relacionadas; O sistema composto por objetos, que contm dados e funes (isto , esto reunidos em um s elemento).

Problemas: Programas muito grandes tornam-se muito complexos e difceis de entender e manter; Dificuldade em modelar muitos problemas da vida real com enfoque em algoritmos; mais fcil simular o funcionamento de sistemas complexos com enfoque em suas partes constituintes do que em termos dos algoritmos utilizados pelo sistema. Exemplo: um automvel melhor entendido em termos de direo, freios, etc. do que em termos dos algoritmos que o fazem funcionar; Linguagens procedimentais no oferecem facilidades para criao de novos tipos de dados que funcionem como os tipos de dados primitivos. Ocultao de Informao: Mtodos que fazem parte de um objeto provem (usualmente) a nica forma de acesso aos seus dados; Campos de um objeto no podem ser acessados diretamente, apenas indiretamente por meio de seus mtodos constituintes; Previne alteraes acidentais de dados e facilita a manuteno e depurao dos programas.

UFES/CEUNES Contedo: Introduo Orientao a Objetos

Disciplina: Programao III Pgina: 13

1.3 DICAS DE LEITURA


Livro Modelagem de Objetos atravs da UML, Autor: Jos Davi Furlan, captulo 1 Rumo Orientao a Objetos, tpico 1 O meio empresarial em perspectiva; Artigo - Do diagrama de Fluxo de Dados ao Use case. Autores: Alessandro Botelho Bovo, Renato Balancieri, Sandra Ferrari; Texto Programao Orientada a Objetos: uma Introduo. Autor: Marcio Frayze David. Site: http://www.guiadohardware.net/artigos/programacao-orientada-objetos/; Texto O que a programao Orientada a Objetos. Autor: Miguel Angel Alvarez. Site: http://www.criarweb.com/artigos/215.php.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 14

2 CONCEITOS DA ORIENTAO A OBJETOS


Origem: (1) Apostila de Anlise de Sistemas, prof. Ricardo Falbo (UFES), captulo 04 Introduo Orientao a Objetos, tpico 4.2 Conceitos da Orientao a Objetos; (2) Notas de Aula, prof. Denise Franzoti Togneri (FAESA), Princpios e Conceitos da OO. Com breves adaptaes.

O mundo real extremamente complexo. Tal complexidade pode ser percebida a medida que analisamos os detalhes de tal mundo, mesmo que nos concentremos em algum objeto em particular. Essa caracterstica transferida para o mundo computacional, quando da criao de uma soluo computadorizada para um problema do mundo real. Alguns dos elementos fundamentais na gerao desta complexidade so: A complexidade do prprio domnio do problema; A dificuldade no gerenciamento do processo de desenvolvimento do sistema necessrio; O leque de variadas solues que podem ser encontradas no projeto do sistema.

O paradigma orientado a objeto procura administrar essa complexidade atravs de uma srie de conceitos, tais como abstrao, encapsulamento, modularizao e hierarquia. Os principais conceitos associados Orientao a Objetos so abaixo definidos.

2.1 ABSTRAO
Uma das principais formas do ser humano lidar com a complexidade atravs do uso de abstraes. As pessoas tipicamente tentam compreender o mundo, construindo modelos mentais de partes dele. Tais modelos so uma viso simplificada de algo, onde apenas elementos relevantes so considerados. Modelos mentais, portanto, so mais simples do que os complexos sistemas que eles modelam. Consideremos, por exemplo, um mapa como um modelo do territrio que ele representa. Um mapa til porque abstrai apenas aquelas caractersticas do territrio que se deseja modelar. Se um mapa inclusse todos os detalhes do territrio, provavelmente teria o mesmo tamanho do territrio e, portanto, no serviria a seu propsito. Da mesma forma que um mapa precisa ser significativamente menor que o territrio que mapeia, incluindo apenas informaes cuidadosamente selecionadas, um modelo mental abstrai apenas as caractersticas relevantes de um sistema para seu entendimento. Assim, podemos definir abstrao como sendo o princpio de ignorar aspectos no relevantes de um assunto, segundo a perspectiva de um observador, tornando possvel uma concentrao maior nos aspectos principais do mesmo. De fato, a abstrao consiste na seleo que um observador faz de alguns aspectos de um assunto, em detrimento de outros que no demonstram ser relevantes para o propsito em questo, isto , a abstrao aplicada de acordo com o interesse do observador, e por isso de um mesmo objeto pode-se ter diferentes vises, como demonstra a figura 1 abaixo. S devem ser mapeados os objetos que so relevantes ao problema, bem como as caractersticas (propriedades e comportamento) desses objetos que forem necessrios.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 15

Figura 4.1 - A abstrao enfoca as caractersticas essenciais de um objeto [Booch94]. No que tange ao desenvolvimento de software, duas formas adicionais de abstrao tm grande importncia: a abstrao de dados e a abstrao de procedimentos. Abstrao de Dados Consiste em definir um tipo de dado conforme as operaes aplicveis aos objetos deste tipo. Os objetos s podem ser modificados e observados atravs dessas operaes [Coad92]. Exemplo: Um tipo de dado pilha pode ser definido atravs das operaes empilhar, isto , colocar um elemento no topo da pilha, e desempilhar, ou seja, retirar o elemento que est no topo da pilha. Um objeto do tipo pilha s pode ser modificado e observado atravs dessas duas operaes. Abstrao de Procedimentos Segundo esse princpio, uma operao com um efeito bem definido pode ser tratada por seus usurios como uma entidade nica, mesmo que a operao seja realmente conseguida atravs de alguma sequncia de operaes de nvel mais baixo. Exemplo: Seja a operao calcular-salrio-lquido de um objeto do tipo funcionrio. Essa operao pode ser tratada por seus usurios como uma entidade nica, mesmo que ela seja, na realidade, construda como uma sequncia de operaes de nvel mais baixo, tais como: calcular-INSS, calcular-IR, calcular-anunio, etc.

2.2 ENCAPSULAMENTO
No mundo real, um objeto pode interagir com outro sem conhecer seu funcionamento interno. Uma pessoa, por exemplo, geralmente utiliza uma televiso sem saber efetivamente qual a sua estrutura interna ou como seus mecanismos internos so ativados. Para utiliz-la, basta saber realizar algumas operaes bsicas, tais como ligar/desligar a TV, mudar de um canal para outro, regular volume, cor, etc. Como estas operaes produzem seus resultados, mostrando um programa na tela, no interessa ao telespectador.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 16

O encapsulamento consiste na separao dos aspectos externos de um objeto, acessveis por outros objetos, de seus detalhes internos de implementao, que ficam ocultos dos demais objetos [Rumbaugh94]. A interface de comunicao de um objeto deve ser definida de forma a revelar o menos possvel sobre o seu funcionamento interno. Os usurios tem conhecimento apenas das operaes que podem ser realizadas e precisam estar cientes apenas do QUE as operaes fazem, e no COMO elas esto implementadas. [Booch94]

Figura 4.2 - O encapsulamento oculta os detalhes de implementao de um objeto [Booch94]. Abstrao x Encapsulamento Abstrao e Encapsulamento so conceitos complementares: enquanto a abstrao enfoca o comportamento observvel de um objeto (o que se deve mapear), o encapsulamento enfoca a implementao que origina esse comportamento (como realizar a abstrao). Encapsulamento frequentemente conseguido atravs do ocultamento de informao, isto , escondendo detalhes que no contribuem para suas caractersticas essenciais. Tipicamente, em um sistema orientado a objetos, a estrutura de um objeto, e a implementao de seus mtodos, so encapsuladas [Booch94]. Por exemplo, para usar um carro, uma pessoa no precisa conhecer sua estrutura interna (motor, caixa de marcha, etc...), nem tampouco como se d a implementao de seus mtodos. Sabe-se que necessrio ligar o carro, mas no preciso saber como esta operao implementada. Assim, sobre carros, um motorista precisa conhecer apenas as operaes que permitem utiliz-lo, a que chamamos de interface do objeto, o que inclui a ativao de operaes, tais como ligar, mudar as marchas, acelerar, frear, etc..., e no como essas operaes so de fato implementadas. Encapsulamento serve para separar a interface contratual de uma abstrao e sua implementao. Os usurios tm conhecimento apenas das operaes que podem ser requisitadas e precisam estar cientes apenas do que as operaes realizam e no como elas esto implementadas. A principal motivao para o encapsulamento facilitar a reutilizao de objetos e garantir estabilidade aos sistemas. Um encapsulamento bem feito pode servir de base para a localizao de decises de projeto que necessitam ser alteradas. Uma operao pode ter sido implementada de maneira ineficiente e, portanto, pode ser necessrio escolher um novo algoritmo. Se a operao est encapsulada, apenas o objeto que a define precisa ser modificado, garantindo estabilidade ao sistema.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 17

2.3 MODULARIDADE / DECOMPOSIO


Muitos mtodos de construo de software buscam obter sistemas modulares, isto , construdos a partir de elementos que sejam autnomos, conectados por uma estrutura simples e coerente. Modularidade crucial para se obter manutenibilidade, reusabilidade e extensibilidade, com consequente reduo de custos. Modularidade uma propriedade de sistemas decompostos em um conjunto de mdulos coesos (elementos internos logicamente relacionados) e fracamente acoplados (dependncia entre os mdulos). Assim, abstrao, encapsulamento e modularidade so princpios sinergticos. Um objeto prov uma fronteira clara em torno de uma abstrao e o encapsulamento e a modularidade provem barreiras em torno dessa abstrao [Booch94].

2.4 HIERARQUIA
O conceito de Herana na Orientao a Objetos lembra o conceito de herana gentica, na qual um elemento descendente herda as caractersticas de um elemento ancestral. Abstrao um princpio importantssimo, mas em todas as aplicaes, exceto aquelas mais triviais, deparamo-nos com um nmero de abstraes maior do que conseguimos compreender em um dado momento. O encapsulamento ajuda a gerenciar esta complexidade atravs do ocultamento da viso interna de nossas abstraes. Modularidade auxilia tambm, dando-nos um meio de agrupar logicamente abstraes relacionadas. Entretanto, isto ainda no o bastante. Um conjunto de abstraes freqentemente forma uma hierarquia e, pela identificao dessas hierarquias, possvel simplificar significativamente o entendimento sobre um problema [Booch94]. Em suma, hierarquia uma forma de arrumar as abstraes.

2.5 OBJETO
O mundo real povoado por elementos que interagem entre si, onde cada um deles desempenha um papel especfico. A esses elementos, chamamos objetos. Objetos podem ser coisas concretas ou abstratas, tais como um carro, uma reserva de passagem area, uma organizao, uma planta de engenharia, um componente de uma planta de engenharia, etc. Os objetos podem ser (Pressman, 2002): Entidades externas: (isto , outros sistemas, dispositivos, pessoas) que produzem ou consomem informao para ser usada atravs de um sistema baseado em computador; Coisas: (isto , relatrios, displays, sinais, letras) que so partes do domnio da informao para o problema; Ocorrncias ou eventos (isto , uma transferncia de propriedade ou o aspecto dos movimentos de robs) que ocorrem dentro do contexto da operao do sistema; Papis (isto , gerente, engenheiro, vendedor) executados por pessoas que interagem com o sistema; Unidades organizacionais (isto , divises, grupos, times) que so relevantes para a aplicao; Locais (isto , cho de fbrica, locais de carga) que estabelecem o contexto do problema e as funes gerais do sistema; Estruturas (isto , sensores, computadores, veculos) que definem uma classe de objetos ou, no extremo, classes relacionadas de objetos.

Do ponto de vista da modelagem de sistemas, um objeto uma entidade que incorpora uma abstrao relevante no contexto de uma aplicao. Um objeto possui um estado (informao),

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 18

exibe um comportamento bem definido, expresso por um nmero de operaes para examinar ou alterar seu estado, e tem identidade nica. Ou seja, um objeto algo que precisamos representar computacionalmente e que tem propriedades prprias, um comportamento especfico e uma identidade nica.

Figura 4.3 - Um objeto possui estado, exibe algum comportamento bem definido e possui identidade prpria [Booch94]. Estado - O estado de um objeto compreende o conjunto de suas propriedades, associadas a seus valores correntes. Propriedades de objetos so geralmente referenciadas como atributos e, portanto, o estado de um objeto diz respeito aos seus atributos e aos valores a eles associados. Comportamento - A abstrao incorporada por um objeto caracterizada por um conjunto de servios ou operaes, que outros objetos, ditos clientes, podem requisitar. Operaes so usadas para recuperar ou manipular a informao de estado de um objeto e referem-se apenas s estruturas de dados do prprio objeto, no devendo acessar diretamente estruturas de outros objetos. A comunicao entre objetos d-se por meio de troca de mensagens. Para acessar a informao de estado de um objeto, necessrio enviar uma mensagem para ele. Uma mensagem consiste do nome de uma operao e os argumentos requeridos. Assim, o comportamento de um objeto representa como este objeto reage s mensagens a ele enviadas. Em outras palavras, o conjunto de mensagens a que um objeto pode responder representa o seu comportamento. Um objeto , pois, uma entidade que tem seu estado representado por um conjunto de atributos (uma estrutura de informao) e seu comportamento representado por um conjunto de operaes. Identidade - Cada objeto tem uma identidade prpria, que lhe inerente. Todos os objetos tm existncia prpria, ou seja, dois objetos so distintos mesmo se seu estado e comportamento forem iguais. A identidade de um objeto transcende os valores correntes de suas variveis de estado (atributos). Identificar um objeto diretamente geralmente mais eficiente que design-lo pela sua descrio [Snyder93]. No mundo real, um objeto limita-se a existir, mas, no que se refere ao mundo computacional, cada objeto dispe de um identificador nico pelo qual pode ser referenciado inequivocamente [Rumbaugh94].

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 19

2.6 CLASSE E INSTNCIA


bastante comum encontrarmos no mundo real, diferentes objetos desempenhando um mesmo papel. Consideremos, por exemplo, duas cadeiras. Apesar de serem objetos diferentes, elas compartilham uma mesma estrutura e um mesmo comportamento. Entretanto, no h necessidade de se despender tempo modelando as duas cadeiras, ou vrias delas. Basta definir, em um nico lugar, um modelo descrevendo a estrutura e o comportamento desses objetos. A esse modelo damos o nome de classe. Uma classe descreve um conjunto de objetos com as mesmas propriedades (atributos), o mesmo comportamento (operaes), os mesmos relacionamentos com outros objetos e a mesma semntica. Objetos que se comportam da maneira especificada pela classe so ditos instncias dessa classe. Todo objeto pertence a uma classe, ou seja, instncia de uma classe. De fato, a orientao a objetos norteia o processo de desenvolvimento atravs da classificao de objetos, isto , objetos so agrupados em classes, em funo de exibirem facetas similares, sem, no entanto, perda de sua individualidade. Assim, a modelagem orientada a objetos consiste, basicamente, na definio de classes. O comportamento e a estrutura de informao de uma instncia so definidos pela sua classe. Objetos com propriedades e comportamento idnticos so descritos como instncias de uma mesma classe, de modo que a descrio de suas propriedades possa ser feita uma nica vez, de forma concisa, independentemente do nmero de objetos que tenham tais propriedades em comum. Deste modo, uma classe captura a semntica das caractersticas comuns a todas as suas instncias. Enquanto um objeto individual uma entidade real, que executa algum papel no sistema como um todo, uma classe captura a estrutura e comportamento comum a todos os objetos que ela descreve. Assim, uma classe serve como uma espcie de contrato que deve ser estabelecido entre uma abstrao e todos os seus clientes. Resumindo: Classe um conjunto de elementos com as mesmas caractersticas (atributos, operaes, relacionamentos). Objeto um elemento desse conjunto. Quando se considera diferentes objetos de uma mesma classe podem ocorrer de encontrarmos diferentes: valores, identificao, o resultado de um comportamento. A identificao de classes e objetos envolve: Descoberta. Atravs da descoberta, possvel reconhecer as abstraes-chave e os mecanismos que formam o vocabulrio do domnio do problema. A descoberta ocorre medida que se compreende o problema; Inveno. Atravs da inveno, imaginam-se as abstraes generalizadas, bem como os novos mecanismos que especificam como os objetos colaboram entre si. A inveno ocorre medida que se soluciona o problema.

O problema da classificao um problema relacionado com encontrar semelhanas. A classificao ajuda a identificar generalizaes, especializaes e hierarquia de agregaes entre as classes. Classificao um processo interativo e incremental, difcil de ser executado porque um determinado conjunto de objetos pode ser classificado igualmente, de vrias maneiras.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 20

Figura 4.4 - Classificao o meio pelo qual ordenamos conhecimento [Booch94]. Alguns autores utilizam os conceitos de classe e tipo indistintamente. Entretanto, um tipo e uma classe no so a mesma coisa. Um tipo definido por um conjunto de operaes, isto , pelas manipulaes que podemos fazer com o tipo. Uma classe mais do que isso. Podemos tambm olhar para dentro de uma classe, por exemplo, para ver sua estrutura de informao. Assim, uma classe melhor conceituada como uma implementao especfica de um tipo [Jacobson92].

2.7 MENSAGENS E MTODOS


A abstrao incorporada por um objeto caracterizada por um conjunto de operaes que podem ser requisitadas por outros objetos, ditos clientes. Mtodos so implementaes reais de operaes. Para que um objeto realize alguma tarefa, necessrio enviar a ele uma mensagem, solicitando a execuo de um mtodo especfico. Um cliente s pode acessar um objeto atravs da emisso de mensagens, isto , ele no pode acessar ou manipular diretamente os dados associados ao objeto. Os objetos podem ser complexos e o cliente no precisa tomar conhecimento de sua complexidade interna. O cliente precisa saber apenas como se comunicar com o objeto e como ele reage. Embora existam diferentes tipos de operaes, elas podem ser divididas em trs categorias [Pressman02]: Operaes que manipulam dados; Operaes que executam clculos computacionais; Operaes que monitoram um objeto para ocorrncia de um evento de controle.

As mensagens so o meio de comunicao entre objetos e so responsveis pela ativao de todo e qualquer processamento. Dessa forma, possvel garantir que clientes no sero afetados por alteraes nas implementaes de um objeto que no alterem o comportamento esperado de seus servios. Uma mensagem estimula a ocorrncia de algum comportamento no objeto receptor da mesma. O comportamento estabelecido quando uma operao executada. O formato normalmente considerado na emisso de uma mensagem : Mensagem: [destino, mtodo, parmetros], onde:

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 21

Destino: o objeto receptor Mtodo: a operao que deve ser realizada Parmetros: As informaes necessrias execuo do mtodo Resumindo: Mensagem: Mecanismo para disparar um mtodo de uma classe diferente da corrente, isto , so o meio atravs do qual os objetos interagem; Mtodo: Uma ao a ser realizada.

2.8 MECANISMOS DE RELACIONAMENTO ENTRE CLASSES


Em qualquer sistema os objetos se comunicam, trocando mensagens. Em sistemas no triviais geralmente nos deparamos com uma quantidade razovel de objetos e classes e h necessidade de gerenciar tais elementos. Assim, preciso estruturar as classes. Vrios mecanismos tem sido propostos nesse sentido.

2.8.1 HIERARQUIA / HERANA / GENERALIZAO / ESPECIALIZAO


Muitas vezes, um conceito geral pode ser especializado, adicionando-se novas caractersticas. Tomemos, como exemplo, o conceito que temos de estudantes. De modo geral, h caractersticas que so intrnsecas a quaisquer estudantes. Entretanto, possvel especializar este conceito para mostrar especificidades de subtipos de estudantes, tais como estudantes de 1. grau, estudantes de 2. grau, estudantes de graduao e estudantes de ps-graduao, entre outros. Da maneira inversa, pode-se extrair de um conjunto de conceitos, caractersticas comuns que, quando generalizadas, formam um conceito geral. Por exemplo, ao avaliarmos os conceitos que temos de carros, motos, caminhes e nibus, podemos notar que esses tm caractersticas comuns que podem ser generalizadas em um supertipo veculos automotores terrestres. As abstraes de especializao e generalizao so muito teis para a estruturao de sistemas. Com elas, possvel construir hierarquias de classes, subclasses, subsubclasses, e assim por diante. A herana um mecanismo para modelar similaridades entre classes, representando as abstraes de generalizao e especializao. Atravs da herana, possvel tornar explcitos atributos e servios comuns em uma hierarquia de classes. O mecanismo de herana possibilita reutilizao, captura explcita de caractersticas comuns, definio incremental de classes, alm de evitar a duplicao de caractersticas, e consequentemente, de cdigo. Frequentemente, promove-se a herana como a idia central para a reutilizao na indstria de software. Entretanto, apesar da herana, quando adequadamente usada, ser um mecanismo muito til em diversos contextos, incluindo reuso, ela no um pr-requisito para a reutilizao, e nem mesmo para o desenvolvimento de um sistema orientado a objetos. Uma das principais vantagens da herana facilitar a modificao de modelos. A herana nos permite conceber uma nova classe como um refinamento de outras classes. A nova classe pode herdar as similaridades e definir apenas a funcionalidade nova. O desenvolvimento orientado a objetos fortemente baseado na identificao de objetos e na construo de hierarquias de classes, utilizando o mecanismo de herana.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 22

Figura 4.5 - Uma subclasse herda estrutura e comportamento de suas superclasses [Booch94]. Muitas vezes alguns objetos no se enquadram satisfatoriamente s propriedades descritas em uma classe, tipicamente porque: Alm das propriedades descritas na classe, esses objetos possuem outras ainda no descritas; Algumas das propriedades descritas para a classe no so adequadas aos novos objetos, sendo necessrio, portanto, redefini-las ou mesmo cancel-las. Vale ressaltar que o cancelamento de propriedades, contudo, um indicador de que a hierarquia no est modelada adequadamente.

Atravs do mecanismo de herana, tais problemas podem ser contornados. A herana define o relacionamento entre classes, no qual uma classe compartilha a estrutura, o comportamento e o relacionamento definidos em uma ou mais outras classes. A classe que herda caractersticas chamada subclasse e a que fornece as caractersticas, superclasse. Desta forma, a herana representa uma hierarquia de abstraes na qual uma subclasse herda de uma ou mais superclasses. Tipicamente, uma subclasse aumenta ou redefine caractersticas das superclasses. Assim, se uma classe B herda de uma classe A, todas as caractersticas descritas em A tornam-se automaticamente parte de B, que ainda livre para acrescentar novas caractersticas para seus propsitos especficos. A generalizao permite abstrair, a partir de um conjunto de classes, uma classe mais geral contendo todas as caractersticas comuns. A especializao a operao inversa e portanto, permite especializar uma classe em um nmero de subclasses, explicitando as diferenas entre as novas subclasses. Deste modo possvel compor a hierarquia de classes. Esses tipos de relacionamento so conhecidos tambm como relacionamentos um tipo de, onde um objeto da subclasse tambm um tipo de objeto da superclasse. Neste caso uma instncia da subclasse dita uma instncia indireta da superclasse. Quando uma subclasse herda caractersticas de uma nica superclasse, tem-se herana simples. Quando uma classe definida a partir de duas ou mais superclasses, tem-se herana mltipla. importante observar, no entanto, que na herana mltipla podem ocorrer dois problemas: coliso de nomes herdados a partir de diferentes superclasses e a possibilidade de herana repetida. A figura 4.6 ilustra estes dois casos.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 23

Figura 4.6 - (a) Coliso de nomes. (b) Herana repetida. No primeiro caso, a classe C herda das classes A e B. Entretanto ambas possuem uma caracterstica com nome x. Assim, como ser a caracterstica x em C, igual definida na classe A ou igual da classe B? No segundo caso, a classe D herda das classes B e C, que por sua vez herdam da classe A. Assim, temos um caso de herana repetida, j que, indiretamente, a classe D herda duas vezes da classe A. O resultado lquido da herana que desenvolvedores podem evitar a codificao de redundncias atravs da localizao de cada operao no nvel apropriado na hierarquia de classes. Resumindo os conceitos complementares de hierarquia, herana, generalizao e especializao: Hierarquia: Mecanismo para organizao de classes que se relacionam de maneira estruturada e ordenada, em nveis; Herana: Mecanismo que permite que uma subclasse herde caractersticas de sua superclasse; Generalizao: Mecanismo que permite extrair conceitos comuns de vrias classes, posicionando-os em um local comum e compartilhado, a superclasse; Especializao: Mecanismo que permite especializar um conceito comum, refinando caractersticas, atravs de adio e/ou modificao de itens, criando diferentes subclasses.

2.8.2 COMPOSIO / AGREGAO


Uma forma especial de relacionamento entre objetos a composio ou agregao. Parte do poder dos softwares orientados a objetos advm de sua habilidade de manipular objetos complexos, como sendo compostos de vrios outros objetos mais simples. Um carro, por exemplo, composto por motor, rodas, carroceria, etc... Um motor, por sua vez, composto de bloco, vlvulas, pistes, e assim por diante. Composio o relacionamento todo-parte/uma-parte-de onde os objetos representando os componentes de alguma coisa so associados a um objeto representando o todo. Em outras palavras, a composio um tipo forte de associao, onde um objeto agregado composto de vrios objetos componentes [Rumbaugh94]. Diferenciando composio e agregao:

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 24

A composio um tipo ainda mais forte de agregao; Na agregao um objeto-parte pode continuar existindo mesmo com a excluso do objetotodo. Exemplo: carro e motor. Ao se excluir o objeto-todo, basta excluir o(s) relacionamento(s) dele com o(s) objeto(s)parte;

Na composio um objeto-parte no continua existindo se o objeto-todo for excludo. Exemplo: nota fiscal e item de nota fiscal. Ao se excluir o objeto-todo, deve-se excluir o(s) objetos(s)-parte a ele associado(s).

2.8.3 LIGAES E ASSOCIAES


As ligaes/associaes so os relacionamentos cotidianos que ocorrem entre objetos/classes, quando h necessidade de troca de mensagem. J os relacionamentos anteriormente listados so tipos especiais de associaes. Objetos relacionam-se com outros objetos. Por exemplo, em o empregado Joo trabalha no departamento de Pessoal, temos um relacionamento entre o objeto empregado Joo e o objeto departamento Pessoal. Ligaes e associaes so meios de se representar relacionamentos entre objetos e entre classes, respectivamente. Uma ligao uma conexo entre objetos. No exemplo anterior, h uma ligao entre os objetos Joo e Pessoal. Uma associao, por sua vez, descreve um conjunto de ligaes com estrutura e semntica comuns. No exemplo anterior, h uma associao entre as classes empregado e departamento. Todas as ligaes de uma associao interligam objetos das mesmas classes, e assim, uma associao descreve um conjunto de potenciais ligaes da mesma maneira que uma classe descreve um conjunto de potenciais objetos [Rumbaugh94].

2.9 CLASSES E OPERAES ABSTRATAS, CONCRETAS, GENRICAS


Nem todas as classes so projetadas para instanciar objetos diretamente. Algumas so usadas simplesmente para organizar caractersticas comuns a diversas classes ou para encapsular classes que participam de uma mesma associao ou composio. Tais classes so ditas classes abstratas. Uma classe abstrata desenvolvida basicamente para ser herdada por outras classes. Ela existe meramente para que um comportamento comum a um conjunto de classes possa ser fatorado em uma localizao comum e definido uma nica vez. Assim, uma classe abstrata no possui instncias diretas, mas suas classes descendentes concretas, sim. Uma classe concreta uma classe instancivel, isto , que pode ter instncias diretas. Uma classe abstrata pode ter subclasses tambm abstratas, mas as classes-folhas na rvore de herana devem ser classes concretas. Classes abstratas podem ser projetadas de duas maneiras distintas. Primeiro, elas podem prover implementaes completamente funcionais do comportamento que pretendem capturar. Alternativamente, elas podem prover apenas definio de um protocolo para uma operao sem apresentar um mtodo correspondente. Tal operao dita uma operao genrica ou abstrata. Neste caso, a classe abstrata no completamente implementada e todas as suas subclasses concretas so obrigadas a prover uma implementao para suas operaes abstratas, obtendo assim as chamadas operaes concretas. Assim, diz-se que uma operao abstrata uma operao com mltiplas implementaes. Ela define apenas a assinatura a ser usada nas implementaes que as subclasses devero prover, garantindo, assim, uma interface consistente. Mtodos que implementam uma operao genrica tm a mesma semntica. Uma vez que a mesma operao definida em vrias classes de uma mesma hierarquia, importante que os mtodos que a implementam conservem sua interface com o exterior (assinatura), isto , o nome, o nmero e o tipo dos argumentos, e os resultados da operao.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 25

Uma classe concreta no pode conter operaes abstratas porque seno seus objetos teriam operaes indefinidas. Analogamente, toda classe que possuir uma operao genrica no pode ter instncias diretas e, portanto, obrigatoriamente uma classe abstrata. OBSERVAO: Apesar de se encontrar classes/operaes abstratas como sinnimos de classes/operaes genricas h uma diferena a ser considerada: Classes/operaes genricas referem-se a habilidade de parametrizar uma classe/operao com tipos de dados diferentes.

2.10 INTERFACES
Origem: Orientao a objetos Parte I. Introduo da linguagem Java, Classes, Interfaces, Objetos (Herana, Encapsulamento e Polimorfismo). Autor: Rafael Cardoso Pereira. Artigo em site da DevMedia (http://www.devmedia.com.br)

As interfaces so estruturas muito parecidas com as classes, porm com um propsito diferente. Uma interface no possui atributos e sim somente operaes. O fato aqui que as operaes no so como nas classes, ou seja, em uma interface estas operaes no possuem implementao. Uma interface ser utilizada para definir comportamentos que outros elementos, as classes, podem desejar implementar. Imagine ento que queremos definir um tipo de comportamento que poder ser implementado por mais de uma classe em nosso sistema, ento este comportamento colocaremos em uma interface. A classe obrigatoriamente dever possuir estas operaes da interface implementadas nela, sendo que a implementao ficar na classe e no na interface.

2.11 SOBRECARGA
Em sistemas orientados a objetos, operaes distintas de classes distintas, ou at de uma mesma classe, podem ter o mesmo nome. Neste caso, temos um nome de operao sobrecarregado. No caso de mtodos com o mesmo nome dentro de uma mesma classe as assinaturas dos mtodos devem ser diferentes.

2.12 POLIMORFISMO
O polimorfismo est ligado a seguinte afirmao: uma interface, mltiplos mtodos. O polimorfismo uma poderosa ferramenta para o desenvolvimento de sistemas flexveis. Polimorfismo significa a habilidade de tomar vrias formas. No contexto da orientao a objetos, o polimorfismo est intrinsecamente ligado comunicao entre objetos. De fato, polimorfismo pode ser melhor caracterizado, neste contexto, como o fato de um objeto emissor de uma mensagem no precisar conhecer a classe do objeto receptor. Assim, uma mensagem pode ser interpretada de diferentes maneiras, dependendo da classe do objeto receptor, ou seja, o objeto receptor que determina a interpretao da mensagem, e no o objeto emissor. O emissor precisa saber apenas que o receptor pode realizar certo comportamento, mas no a que classe ele pertence e, portanto, que operao efetivamente executada. Um objeto sabe qual a sua classe, e, portanto, a correta implementao da operao requisitada. A mensagem associada ao mtodo a ser realmente executado, atravs da identificao da operao e da classe do objeto receptor.

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 26

Frequentemente, o polimorfismo caracterizado como o fato de uma operao poder ser implementada de diferentes maneiras em diferentes classes. Todavia, isto apenas uma consequncia do que foi dito anteriormente e no polimorfismo em si. A maioria dos autores no diferencia sobrecarga e polimorfismo, tratando ambos os casos como polimorfismo. Neste texto, entretanto, preferimos utilizar polimorfismo com uma semntica mais rgida: polimorfismo limitado a uma hierarquia de classes. Uma operao ser dita polimrfica se ela existir, com a mesma assinatura, em uma cadeia de superclasses-subclasses. Uma operao polimrfica tem uma nica semntica e os mtodos que a implementam conservam essa semntica e, por conseguinte, a sua interface (assinatura). Na sobrecarga de operador, as operaes no tm necessariamente a mesma semntica e no h necessidade de se preservar a assinatura. Ao contrrio, se as operaes sobrecarregadas forem da mesma classe, elas devero ter assinaturas diferentes. Na prtica as operaes sobrecarregadas so, normalmente, uma coincidncia na escolha de nomes de operao. De um outro ponto de vista, o polimorfismo pode ser considerado uma caracterstica dos objetos, refletindo a capacidade deles mudarem de classe em tempo de execuo. O polimorfismo extremamente til quando deseja-se executar alguma operao em um objeto, mas no se sabe, a priori, qual ser exatamente a sua classe em tempo de execuo.

2.13 LIGAO ESTTICA E LIGAO DINMICA


Quando uma mensagem enviada a um objeto, deve ser estabelecida uma ligao entre a mensagem enviada e o mtodo a ser executado. A seleo do cdigo para executar uma operao, como dito anteriormente, baseada nos objetos identificados nas mensagens. Quando a classe do objeto que recebe a mensagem conhecida em tempo de compilao, a ligao pode ser feita nesta etapa ou durante a link-edio. Neste caso, tem-se ligao esttica. No entanto, muitas vezes, a classe de um objeto s pode ser identificada quando a mensagem realmente emitida e, portanto, o cdigo s pode ser selecionado neste momento. Neste caso, temse ligao dinmica ou tardia (late binding). Muitas vezes, polimorfismo e ligao dinmica so confundidos. Porm, importante frisar que ligao dinmica significa apenas que a mensagem s associada ao mtodo especfico da classe do objeto receptor no momento em que enviada, ou seja, quando ocorre a execuo.

2.14 RESUMO
Origem: Introduo Programao Orientada a Objetos, prof. Daniel Merli Lamosa, maio de 2002, slides

Algumas Caractersticas conceituais: Identidade: 2 objetos so distintos mesmo que todos os valores de seus atributos sejam iguais; Classificao: Objetos com a mesma estrutura de dados (atributos) e mesmo comportamento (operaes) so agrupados em uma classe; Polimorfismo: A mesma operao pode atuar de modos diversos em classes diferentes; Herana: Compartilhamento de atributos e operaes entre classes com base em um relacionamento hierrquico.

Algumas Caractersticas da tecnologia orientada a objetos: Abstrao: Concentrao nos aspectos essenciais, prprios, de uma entidade e em ignorar suas propriedades acidentais;

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 27

Encapsulamento: Separao dos aspectos externos de um objeto, acessveis por outros, dos detalhes internos da implementao que ficam ocultos dos demais; Combinao de Dados e Comportamento: Polimorfismo dos objetos; Compartilhamento: Compartilhar a estrutura comum (classes) por diversas subclasses sem redundncias (Herana); nfase na Estrutura de Objetos: Especificar o objeto e no como ele utilizado; Sinergia: Seguir todas as caractersticas simultaneamente.

Representando a Orientao a Objetos:

UFES/CEUNES Contedo: Conceitos da Orientao a Objetos

Disciplina: Programao III Pgina: 28

2.15 DICAS DE LEITURA


Livro: Modelagem de Objetos atravs da UML. Autor: Jos Davi Furlan, captulo 1 Rumo Orientao a Objetos, tpico 2 As bases da Orientao a Objetos; Livro: Java como programar. Autor: Deitel & Deitel. Captulo 1 Introduo aos computadores, internet e world wide web, estudo de caso de engenharia de software: introduo tecnologia de objetos e UML; Artigo - Paradigma da Orientao a Objetos. Autor: Alessandro F L (lecadf); Texto: O que significa Orientao a Objetos. Link: http://www.macoratti.net/oo_conc2.htm; Texto: Orientao a Objetos: http://www.macoratti.net/net_oocb.htm; Conceitos OO. Bsicos. Link: Link:

Texto: Conceitos da www.inf.ucp.br/profs/guilherme/Conceitos%20de%20OO.ppt;

Origem: Orientao a objetos Partes I e II. Introduo da linguagem Java, Classes, Interfaces, Objetos(Herana, Encapsulamento e Polimorfismo). Autor: Rafael Cardoso Pereira. Artigo em site da DevMedia (http://www.devmedia.com.br).

Você também pode gostar