Introdução à Orientada a Objeto
Pág 1
ÍNDICE ANALÍTICO
Conceitos de Orientação a Objetos ........................................................................................... 2 Programação Orientada a Objetos ............................................................................................ 2 Benefícios da OOP ....................................................................................................................... 2 Aspectos Econômicos das Gerações de Linguagens de Programação ............................. 3 Linguagens Procedurais x Orientada a Objetos : ................................................................... 4 Características básicas da Programação Orientada a Objetos ............................................ 5 Objetos ....................................................................................................................................... 5 Classes ....................................................................................................................................... 5 Distinção entre classes e objetos ...................................................................................... 6 Métodos e Mensagens ................................................................................................................ 7 Mensagens ................................................................................................................................ 7 Métodos...................................................................................................................................... 8
Profª Eliana Cristina Nogueira Barion
1
Introdução à Orientada a Objeto
Pág 2
Conceitos de Orientação a Objetos A Metodologia Orientada a Objetos é relativamente nova, pois por volta de 1970 surgiram as primeiras publicações, mas somente nos anos 90, se tornou a principal metodologia de desenvolvimento de software. A orientação a objetos permite modelar de forma mais natural o mundo real, pois as estruturas de dados são vistas como objetos, ou seja, têm características e funções. Seu maior objetivo é aumentar a produtividade do desenvolvimento de software através de uma maior expansibilidade e reutilização de código, além de controlar a complexidade e o custo da manutenção do mesmo. Quando a metodologia orientada a objetos é utilizada, a fase de projeto do desenvolvimento do software está mais intimamente ligada à fase de implementação. Um dos pontos chaves da metodologia orientada a objetos é centralização das atenções nas Estruturas de Dados, ao contrário da metodologia estruturada, onde a atenção era centralizada nos procedimentos. Na orientação a objetos há uma maior aproximação entre dados e procedimentos, pois procedimentos são definidos em termos dos dados. Programação Orientada a Objetos A programação orientada a objetos é baseada nos conceitos de objetos e classes de objetos. Um objeto é uma variável equipada com operações que somente ela pode acessar. Uma classe é o mecanismo utilizado para criar objetos. A programação orientada a objetos originou-se da necessidade de proteger as variáveis globais em programas imperativos, de serem manipuladas e alteradas em qualquer parte do programa. Os conceitos de tipo abstrato de dados, que é a definição de uma estrutura de dados definida pelas operações que afetam os dados, e o ocultamento de informações, na qual os dados somente são acessados através de sua interface e a estrutura de dados é desconhecida para as rotinas de acesso, foram a base para a definição dos conceitos de programação orientada a objetos, além da influência da área de inteligência artificial no que se refere a objetos e relacionamentos. No modelo orientado a objetos, os problemas são resolvidos através de objetos que enviam e recebem mensagens entre si. Como exemplos de Linguagem Orientadas a Objetos podemos citar: Simula, Smalltalk, e diversas variações de linguagens imperativas que aceitam orientação a objetos como Pascal, Delphi e C++ e Java. Benefícios da OOP Listaremos a seguir os principais ganhos, para o desenvolvedor, caso este troque a Metodologia Tradicional pela Orientada ao Objeto. Exatidão- Devido a característica do desenvolvimento estruturado, onde elabora-se um projeto e DEPOIS faz-se os programas, podemos ter no final um sistema que não atenda perfeitamente seus objetivos depois de implementado. No desenvolvimento OOP, devido ao fato deste ser feito de maneira quase que interativa com o usuário, este risco é significativamente diminuido. A pouca quantidade de código programável também reduz os problemas inerentes as mudanças das especificações durante o desenvolvimento do projeto.
Profª Eliana Cristina Nogueira Barion
2
Introdução à Orientada a Objeto
Pág 3
Potencialidade- Definimos potencialidade a forma como o programa reage aos erros imprevistos como uma falha na impressora, ou a um disco cheio. Tanto maior for a potencialidade, maior a capacidade do programa em causar o menor estrago possível aos dados e evitar uma saída drástica do sistema. Extensibilidade- Dizemos que quanto maior for a extensibilidade do software, maior será sua capacidade em adequar-se as especificações definidas pelos analistas. Reutilização-A capacidade de se otimizar a produtividade do programador depende diretamente da maneira como o software disponibiliza a reutilização do código gerado. De fato, a maioria dos programadores profissionais, já reutiliza código anteriormente gerado, porém a perfeita reutilização consiste na utilização COMPLETA de um código gerado para algum sistema SEM qualquer outra adaptação prévia. Aspectos Econômicos das Gerações de Linguagens de Programação Para compreender qual a necessidade da orientação a objetos é interessante entender a evolução recente das linguagens de programação de um modo geral. Entre as diversas classificações propostas, podemos classificar as linguagens de programação em cinco famílias de acordo com os aspectos econômicos que lhes originaram:
Primeira Geração: Linguagem de máquina Segunda Geração: Linguagem de montagem (assembly) Terceira Geração: Linguagens de alto nível Quarta Geração: Linguagens para a geração de aplicações Geração Orientada a Objetos: Linguagens voltadas para o reuso e manutenção
O maior determinante da primeira geração de linguagens de programação era o custo do equipamento. Não existiam facilidades para a operação e programação dos dispositivos. A demanda por aplicações era muito pequena. Na segunda geração, o custo do equipamento ainda era alto, mas já permitia transferir um pouco do trabalho do programador para a máquina. A principal característica dessa geração é o aparecimento de programas capazes de interpretar instruções simbólicas e de transformá-las em linguagem de máquina (montadores). Na terceira geração o maior determinante passou a ser o custo do desenvolvimento de programas. Com o relativo barateamento do equipamento, mais tarefas do desenvolvedor foram transferidas para programas como compiladores e interpretadores. A quarta geração enfrentou o desafio de atender uma demanda crescente de aplicações. As ferramentas de desenvolvimento e as bibliotecas de aplicação se popularizaram nesse período. O usuário passou então a desfrutar de capacidades que antes eram reservadas aos desenvolvedores. Finalmente, a quinta geração enfrenta hoje o desafio de efetuar a manutenção e o reuso das milhares de aplicações desenvolvidas pelas gerações anteriores. A orientação a objetos é um paradigma de programação que oferece vários mecanismos voltados para o reuso e a manutenção de sistemas de computador. O que torna a programação orientada a objetos tão atraente é, principalmente, a possibilidade de gerenciar de forma mais simples problemas bastante complexos e de reusar código de forma mais eficiente.
Profª Eliana Cristina Nogueira Barion
3
Introdução à Orientada a Objeto
Pág 4
Como pudemos constatar, as vantagens da orientação a objetos estão relacionadas com a produção, reuso e manutenção de aplicações, pois este é o contexto econômico em que se encontram inseridas. Características como o alto desempenho da execução, eficiência e simplicidade devem ser buscadas em outros paradigmas e/ou gerações de linguagens. A seção seguinte apresenta os mecanismos que permitem a orientação atender ao reuso e a manutenção de aplicações de forma mais completa que os paradigmas anteriores. Linguagens Procedurais x Orientada a Objetos : Mesmo as linguagens procedurais oferecem alguma característica funcional OO. Seu conjunto de primitivas porém permite que você digite comandos para que o computador execute. A organização e manipulação dos dados vem depois. A linguagem OO é projetada para permitir a definição dos objetos que compõe os programas e as propriedades que estes objetos contem. O código é secundário. Pode-se programar na forma procedural com estilo OO quando o programa tem um nível tal de sofisticação que você começaa a criar seus próprios tipos e estruturas de dados. A linguagem OO pura tem como um parâmetro de referência que todos os dados sejam representados na forma de objetos. A única pura é a SmallTalk (tudo via classe, não tem var. global). Eiffel também. As técnicas tradicionais enfocam dados e procedimentos sem uma relação definida, onde a alteração de um pode invalidar o outro. O paradigma da orientação a objetos, ao contrário, enfoca um programa como uma coletânea de uma entidade básica, o objeto, que encapsula dados e procedimentos (método), existindo uma relação bem definida entre dados e métodos, que se encontram no mesmo local. Um sistema orientado a objetos é um sistema mais natural, pois o desenvolvimento utilizando objetos aproxima-se mais dos sistemas reais, com os quais estamos em contato constantemente. A concepção de um sistema composto por dados e programas que utilizam estes dados passa para um sistema composto por objetos e manipulação desses objetos, através da criação e envio de mensagens. A tabela abaixo corresponde à comparação entre a orientação a objetos e técnicas tradicionais. Técnicas Orientadas a Objetos
Técnicas Tradicionais
Métodos
Procedimentos, funções ou subrotinas
Variáveis de Instância
Dados
Mensagens
Chamadas de procedimentos
Classes
Tipos Abstratos de Dados
Hereditariedade
–
Chamadas sob controle do sistema
Chamada sob controle do programador
Profª Eliana Cristina Nogueira Barion
4
Introdução à Orientada a Objeto
Pág 5
Características básicas da Programação Orientada a Objetos Os programas orientados a objetos possuem características básicas que são: objetos, mensagens, métodos, classes, encapsulamento, polimorfismo e herança. Objetos Um objeto é um conjunto de operações agregadas e restritas, que representam um elemento ou operação do mundo real. Um objeto executa uma operação em resposta ao recebimento de uma mensagem de outro objeto, podendo enviar mensagens para outros objetos ou para si mesmo. O resultado da operação de um objeto é baseado no contexto em que a mensagem foi transmitida e nos estados em que cada objeto estavam no momento do recebimento da mensagem. Considere um domínio de aplicação específico como uma casa típica. Sob certo sentido ela pode ser vista como uma composição de entidades tais como: João
o pai
Maria a mãe Pedro o filho Xpit
um Cachorro
Xbeta uma Cadela Nela há, também, vários outros objetos como: cômodos
salas, quartos, banheiros, ...
móveis
mesas, cadeiras, ...
louças
xícaras, pratos, talheres, ...
decorações quadros, tapetes, ... Um objeto é cada uma das entidades identificáveis num dado domínio de aplicação. Alguns destes objetos são objetos concretos, a exemplo dos citados acima. Contudo, há também objetos abstratos tais como: endereço, estilo da casa (barroco, gótico, romano, colonial, ...) e valor (em unidade monetária). Classes Uma classe é o modelo baseado no qual os objetos são criados. Ela consiste na descrição dos métodos e estados que os objetos podem assumir. Quando um objeto é criado baseado em uma classe, não é necessário redefinir o que está descrito na classe. Uma classe também pode receber mensagens (nosso próximo assunto), como por exemplo para criar um novo objeto.
Profª Eliana Cristina Nogueira Barion
5
Introdução à Orientada a Objeto
Pág 6
Falando sobre objetos foram usados nomes como João, Maria e Pedro, os quais denotam objetos específicos, neste caso as pessoas que habitam uma casa.
Também apareceram os nomes Xpit e Xbeta que denotam outros dois objetos bem particulares: os dois cães que também moram na casa.
Numa casa típica há, também, vários outros objetos para os quais em geral não há designação específica que os identifique (referencie) individualmente. É o caso das louças, móveis, etc.
Distinção entre classes e objetos Note que em frases como "Xpit está lá no jardim brincando com Pedro" há referências a objetos específicos. Neste caso não há dúvidas sobre a identidade dos objetos que estão sendo referenciados: o cão de nome Xpit e a criança de nome Pedro. Uma segunda forma de se referenciar objetos pode ser obtida por construções como: "o cão é amigo do homem". Neste caso as palavras cão e homem não referenciam nenhum
Profª Eliana Cristina Nogueira Barion
6
Introdução à Orientada a Objeto
Pág 7
objeto específico como no caso anterior. Estas palavras estão sendo usadas para referenciar aqueles objetos que possuem características de cães e homens, respectivamente, ou seja, aqueles objetos que possam ser de alguma forma identificados como sendo um cão ou um homem. Observe, então, que existe uma certa categorização (classificação) dos objetos; há objetos que são xícaras, outros que são cães, outros que são pessoas, etc. Estas categorias (classes) agrupam os objetos com base em algum conjunto de propiedades comum a todos estes objetos. Para exemplificar, considere que os cães são objetos que tem as seguintes propriedades: pelos, rabo e que late. Esta visão simplista do que é um cão é suficiente para diferenciá-lo de, digamos, uma xícara, já que é sabido que as xícaras nao tem pelos e tampouco latem.
Métodos e Mensagens Os métodos são um conjunto de procedimentos ou funções associados ao objeto afim e executar uma tarefa qualquer, como Inclusão, Alteração, etc... Os métodos são disponibilizados para aplicações através de interfaces públicas e são desenvolvidos na linguagem específica de cada SGBDOO Um método, em relação a um objeto, corresponde ao comportamento dos objetos, implementando uma operação associada a uma ou mais classes, de forma similar aos códigos dos procedimentos usados em linguagens de programação tradicionais, que manipula o objeto ou parte deste. Cada objeto tem um certo número de operações para ele definida. Para cada operação pode-se ter um ou mais métodos de implementação associados. As mensagens são a forma mais usada para se ativar os métodos. Num SGBDOO os objetos se comunicam e são ativados através de mensagens enviadas entre eles. A figura abaixo expressa um objeto comunicando-se com o mundo externo através de mensagens.
Mensagens As mensagens são as requisições que um objeto passa para outro para produzir um resultado desejado. A natureza da operação a ser realizada quando uma mensagem é passada depende exclusivamente do objeto que a recebe.
Profª Eliana Cristina Nogueira Barion
7
Introdução à Orientada a Objeto
Pág 8
As mensagens podem ser acompanhadas de parâmetros, que são aceitos pelos objetos para produzirem determinados resultados. Esses parâmetros também podem ser objetos. Métodos Os Métodos são as descrições das operações que um objeto pode realizar quando recebe uma mensagem. Deve existir para cada mensagem aceita um método correspondente que descreva as operações a serem realizadas, em cada objeto. Uma mesma mensagem pode referenciar-se a diferentes métodos, quando uma mesma mensagem é enviada para vários objetos. Um método é muito similar a um procedimento.
____________________________________________________________________________ Texto adaptado do site da Universidade Federal de Santa Catarina, disponível em: http://www.inf.ufsc.br/poo/conceitos/classes.html , acesso em 08/2007.
Profª Eliana Cristina Nogueira Barion
8