O QUE É ORIENTAÇÃO À OBJETOS?

Conceitos

A POO e a POE são facilmente confundidas, mas lembre-se a POO contém a POE mas a POE não contém a POO, um objeto pode existir mesmo que não exista nenhum evento associado a ele, mas um evento não pode existir se não houver um objeto a ele associado. Outra característica que pode causar confusão são ambientes Orientados a Objetos e ambientes Baseados em Objetos. Em ambiente Orientado a Objetos consegue-se criar e manipular objetos enquanto que o Baseado em Objetos não é possivel a criação de objetos apenas a sua manipulação.

A POO é um conceito desenvolvido para facilitar o uso de códigos de desenvolvimento em interfaces gráficas. Sendo a Borland, uma das primeiras a entrar neste novo conceito, possui suas principais linguagens de programação (tais como Object Pascal e C++), totalmente voltadas para este tipo de programação. A POO atraiu muitos adeptos principalmente pelo pouco uso de código que o projeto (diferente de sistema) carrega no programa fonte, ao contrário das linguagens mais antigas como o Clipper'87 © muito utilizado no final da década de 90 e início da década de 90. O resultado desta "limpeza" no código resulta que a manutenção do projeto torna-se muito mais simples. Orientação a Objeto.

Mas afinal de contas o que é este raio de POO e POE?
POO significa PROGRAMAÇÃO ORIENTADA À OBJETOS e POE significa PROGRAMAÇÃO ORIENTADA À EVENTOS

Antes de começarmos a falar realmente de linguagem orientada a objetos e necessário que você possua os conceitos básicos da orientação a objetos, são eles:

Objeto - é qualquer estrutura modular que faz parte de um produto. Uma janela por exemplo, é um objeto de uma casa, de um carro ou de um software com interface gráfica para o usuário.

Atributos - São as características do objeto, como cor e tamanho, a janela, por exemplo, tem atributos como o modelo, tamanho, abertura simples ou dupla, entre outros.

Encapsulação - é um mecanismo interno do objeto "escondido" do usuário. Uma pessoa pode abrir uma janela girando a tranca sem precisar saber o que há dentro dela.

Ação - é a operação efetuada pelo objeto. Todas as janelas, por exemplo, controlam a iluminação e temperatura ambiente, dependendo do seu design.

Herança - um objeto novo nem sempre é criado do zero. Ele pode "herdar" atributos e ações de outros já existentes. Um basculante herda atributos das janelas e das persianas.

Polimorfismo - é a capacidade de objetos diferentes reagirem segundo a sua função a uma ordem padrão. O comando "abre", por exemplo, faz um objeto entrar em ação, seja ele uma janela, uma porta ou uma tampa de garrafa.

Ligação - é quando um objeto conecta a sua ação a outro. Um sensor de claridade, por exemplo, ativa o acendimento automático da iluminação de rua.

Embutimento - Permite a um objeto incorporar funções de outros, como um liqüidificador que mói carne com a mudança do tipo da lâmina.

A OO implementa o conceito de CLASSE, OBJETO, ABSTRAÇÃO, ENCAPSULAMENTO E HERANÇA mais POLIMORFISMO

PONTOS CHAVE:classe e objeto
CARACTERÍSTICAS CHAVE:abstração, encapsulamento, herança e polimorfismo.
OO: dados e comportamentos conectados.
NÃO OO: dados e comportamentos fracamente conectados.

A Orientação a Objetos em computação tem 20 anos apesar de ter surgido fortemente apenas nos últimos 7 anos. Surgiu mesmo na área acadêmica.
1967 - Simula (Noruega)
1980 - Small Talk (Xerox) com objetivos comerciais e acadêmicos, Adele Goldberg (autora)
1980's Objective C(Cox), C++ (Stroustrup), Eifell (Meyer)

EVOLUÇÃO DAS LINGUAGENS PARA OO:

Anos 70 - Época da não estruturada, dados e códigos emaranhados.
Anos 80 - Época da estruturada, dados separados de códigos (modulares)
Anos 90 - Época da OO, dados e códigos organizados em objetos.

A partir dos anos 80, as principais linguagens incluiram conceitos de OO. Ex. Pascal, C, Lisp, Cobol, depois evoluiram com a inclusão de classes. C++ foi um marco para aplicações em todos os níveis. Surge o Visual Object Oriented Cobol ( c/ win95) e o Visual Basic.
As linguagens mais utilizadas no mundo: 1 -  Cobol, 2 - VisualBasic (informação do Richard Soley e do Jon Siegel da OMG, em dezembro 96).

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.

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.

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 Small Talk (tudo via classe, não tem var. global). Eiffel também.

ALGUNS EXEMPLOS DE LINGUAGENS PROCEDURAIS COM EXTENSÕES OO:

C++, PASCAL do ambiente DELPHI, PERL, OBJECTIVE C
O JAVA implementa tipos simples de dados (integer, real, char) do C, não sendo objetos mas tudo o mais lida com objetos. O código e os dados residem em classes e objetos.

LINGUAGENS COMPILADAS X INTERPRETADAS :

Linguagem Compilada - código gerado tem alta performance pois é ajustado para um tipo específico de processador. Código Objeto em binário para aquele processador. Ex. Pascal (entenda-se tambem no Delphi).

Linguagem Interpretada - só existe em código fonte. Durante a execução o interpretador pega o fonte e vai executando as ações. Facilita o uso em múltiplas plataformas. Ex. Clipper

Um caso de linguagem Compilada/Interpretada é o Java
O Java edita o fonte e salva como código fonte, depois compila o fonte produzindo arquivo binário chamado arquivo de classe que não é executável direto. Este código intermediário chama-se bytecode que são instruções de máquina mas para um processador virtual (o JVM Java Virtual Machine). Por fim o interpretador Java implementa em software executando os arquivos de classe.

A OO tem a filosofia de implementar uma abstração do mundo real facilitando a reutilização de código, denominado de caixas pretas de softwares ou ainda softwares IC's. (Integrated Circuits) que estã sendo utilizado aqui como uma analogia de chip com objeto.

METODOLOGIAS DE ANÁLISE E PROJETO :

Estas também evoluiram da análise estruturada para OO.
Métodos mais conhecidos dos autores : Rumbaugh (OMT), Booch, Shlaer/Mellor, Coad/Yourdon e recentemente o método unificado Unified Modeling Language (Rumbaugh, Booch,Jacobson) previsto para 97 quando será submetida a sua padronização para o OMG (entidade internacional de padronização na área de objetos).

ORIENTADO X BASEADO EM OBJETO :

Em 70 Cardelli e Wegner já discutiam em um famoso artigo sobre este conflito.
Ex. Visual Basic é baseada em objeto mas não necessariamente OO.

CONCEITO DE OBJETOS DISTRIBUIDOS:

Objetos distribuidos no desenvolvimento de software distribuido devido as suas caracteristicas de encapsulamento, polimorfismo, compilação separada, acoplamento dinamico, reuso, e interfaces bem definidas.

SISTEMA DE OBJETOS:

Muitos objetos, muitas requisições.

SISTEMA DE OBJETOS DISTRIBUIDOS:

Mesmos objetos e requisições, objetos em processadores diferentes, requisições entre processos. São serviços em processadores diferentes, com pontos de contato entre os serviços. Quem provê? Nenhuma linguagem, Banco de dados, rede ou protocolo, mas o ORB.

ORB - Object Request Broker: Manipula requisições para objetos remotos em diferentes processos. Opera através de todas as redes e protocolos. Transparente para quem recebe ou envia. Sua implementação pode ser feita em qualquer linguagem inclusive não orientadas a objeto e executada em qualquer processador.

A industria de ORB's é crescente ( DEC : Object Broker , Expersoft : PowerBroker, Iona : Orbix).

OBJETO DISTRIBUIDO OU COMPONENTE:

Independe de linguagem, hardware ou sistema operacional, rede ou protocolo de comunicação.

OMG - Object Management Group: Organização fundada em 1989 com o objetivo de difundir a Orientação a Objetos. Tem mais de 680 membros. Alguns membros: SUN,DEC,IBM,HP,IONA,MICROSOFT,etc.  Em 1991 a OMG produziu o Common Object Request Broker Architecture (CORBA 1.1). E em 1995 o Corba 2.0 (com interoperabilidade).

Objetivo:  estabelecer guias e especificações de gerência de objetos para a industria, visando prover uma base comum para o desenvolvimento de aplicações distribuidas.

CORBA - se baseia em OMA - Object Mamagement Archictecture, object services, com forte enfase em IDL - Interface Definition Language. Já estão mapeando esta arquitetura para C, C++, Ada e SmallTalk, e iniciando o mapeamento para Java e Cobol. A CORBA é uma arquitetura para midleware (a barra do cliente/servidor ) e estã se transformando no principal padrão de Objetos Distribuidos.

OBJETOS E INTERNET:

As aplicações de mercado, crescentes em tamanho tornam comuns a necessidade de valores de memória acima de 20 MB em disco. Cada software tendo que tomar conta de tudo sozinho. Na rede procura-se criar um só pacote que processe os vários protocolos, sistemas operacionais e plataformas de hardware.
A computação orientada a objetos tem a filosofia de utilizar o software como agente individual (encapsula funções específicas) carregados dinamicamente e responsáveis por si mesmos.
Um dos mais famosos protocolos que disponibilizam objetos para aplicações é o OLE (Object Linking and Embedding) - vinculação e incorporação de objetos da Microsoft (a IBM também tem) mas se limitam a ambientes homogêneos.
A linguagem Java é a que pretende dar abertura a este tipo de aplicação para ambientes heterogêneos.
A orientação a objeto tem tudo a ver com os sistemas cliente/servidor que por sua vez se aplicam a sistemas distribuidos (como a internet) manipulando objetos distribuidos.
Diz-se que a tecnologia da WEB é a única com potencial para quebrar a hegemonia WINTEL (WINndows microsoft + inTEL).

A LINGUAGEM DA WEB - JAVA:

A linguagem Java é uma linguagem de terceira geração com suporte para OO, ou seja procedural OO.
É uma linguagem OO de uso geral com caracteristicas próprias para se espalhar via Internet.
Em 1991 um grupo de cientistas da SUN a criaram ( projeto Green). O objetivo era atender empresas de eletronica de consumo. Em setembro de 1994 percebeu-se que tinha tudo a ver com a W3. Arthur Van Hoff reescreveu entãoo o compilador Java originalmente escrito em C por James Gosling, na propria linguagem Java.
Em 23/05/1995 foi apresentado mundialmente pela SUN a primeira versão do ambiente Java e do navegador HotJava.
Java é muito conhecida como ferramenta de criação de APPLETS (miniaplicativo que roda dentro de uma página Web). O applet pode executar tarefas e iteragir com o usuario no navegador sem utilizar recursos do servidor web. Alguns applets podem no entanto interagir com o servidor web a fim de executar tarefas específicas, como por ex. manipulação de bancos de dados. Aplicativo Java é denominado o programa independente (stand-alone) enquanto o applet é o programa executado em navegador. O applet depende do navegador para sua execução não tendo um método 'main' mas um conjunto de métodos que lidam com inicialização, tela, eventos etc. O applet é uma parte do navegador quando ocorre sua execução.
E o aplicativo Java é uma classe independente reconhecida pelo interpretador que executa o seu método MAIN () que é o centro de tudo.
O navegador HotJava foi escrito em Java, e foi o primeiro a suportar applets Java. Netscape 2.0 foi o segundo navegador a suportar Java (não é escrito em Java mas em C). A maioria dos demais navegadores também é escrito em C e anunciam versões suportando Java.
Java é uma linguagem própria para ambientes distribuidos complexos mas permite desenvolvimento de aplicativos que não dependam de recursos de conectividade (stand alone).

DESCRIÇÃO DA LINGUAGEM JAVA:

- Semelhança semântica com C e carracterísticas de C++.
- Eliminação dos principais geradores de erros (ponteiros e gerenciamento de memória.
-  via código).
- Contém bibliotecas dando funcionalidade à linguagem (rotinas de rede e de interface Gráfica )
- OO facilita a reutilização de código
- Distribuída, permite o acesso e interação com protocolos como HTTP e FTP, facilitando acesso via rede
- Independente de plataforma (código gerado pelo compilador é baseado em bytecodes, unidade padrão para execução de código em uma máquina virtual (JVM)
- Segura (ambiente do interpretador), quando é baixado um applet via rede, o interpretador checa o código e ele é que determina o layout de memória para execução, não sendo possível acessar informações diretamente da memória. Esta verificação é tanto sintática quanto semantica. Verifica se é bytecode e verifica se faz acesso a arquivo sem autorização ou à memória.
- Portátil, além da independência de plataforma, implementa primitivas de tipo   padronizadas. ex. integer de 32 bits em todas as máquinas.
- Alta performance, multithreading interno para períodos de inatividade do processador.
- Em projeto, isto pode significar vários threads rodando em paralelo como som e animação em separado.

Atualmente arquitetura de execução vem com browsers. O JVM e o compilador JIT (Just in Time) vem com o Win95 e Win NT, OS/2 Merlin, Solaris, System7 da Macintosh. Em futuro próximo fará parte de sistemas operacionais.

AMBIENTES JAVA:

JDK - Java software, Visual J++ (Microsoft), Visual Café(Symantec), Java Workshop (Sun), Latté e depois JBuilder (Borland). Atualmente em desenvolvimento pela Sun o chip picoJava(aumentar desempenho e p/ web PCs) . Prometido para 97 impressão em Java.



E-Mail: walterchagas@yahoo.com Clique aqui para cair fora desta pagina.