42
Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Embed Size (px)

Citation preview

Page 1: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Histórico, cenário atual e características.

AULA II - 08/08/2014 Sistemas de Informação - CPAN

Page 2: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN
Page 3: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Breve relato da história da POO...• O termo Programação Orientada a Objetos foi criado por Alan

Kay, autor da linguagem de programação Smalltalk.

Page 4: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Mesmo antes da criação do Smalltalk, algumas das ideias da POO já eram aplicadas, sendo que a primeira linguagem a realmente utilizar estas idéias foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967.

• Note que este paradigma de programação já é bastante antigo, mas só agora vem sendo aceito realmente nas grandes empresas de desenvolvimento de Software.

Breve relato da história da POO...

Page 5: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Alguns exemplos de linguagens modernas utilizadas por grandes empresas em todo o mundo que adotaram essas idéias:

Breve relato da história da POO..

Page 6: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• A maioria dessas empresas adotam idéias de POO parcialmente, dando espaço para o antigo modelo procedural de programação, como acontece no C++ por exemplo.

Breve relato da história da POO...

Page 7: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Voltando ao histórico da POO...• A orientação a objetos foi mais bem conceituada no

laboratório da Xerox, em Palo Alto, sendo refinada numa seqüência de protótipos da linguagem Smalltalk.

• Alan Kay começou a programar depois de conhecer um inovador programa chamado Sketchpad.

• Sketchpad foi um editor gráfico desenvolvido por Ivan Sutherland, no MIT, em 1963.• primeiro editor gráfico orientado a objetos.• criação de objetos que poderiam ser manipulados

distintamente uns dos outros.

Page 8: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Em 1968, Kay teve o seu primeiro encontro com Seymour Papert, criador da linguagem Logo, no Laboratório de Inteligência Artificial do MIT, e ficou interessado na linguagem criada por ele.

• Logo é uma linguagem de programação interpretada, voltada principalmente para crianças e aprendizes em programação.

Breve relato da história da POO...

Page 9: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Conceito de objetos - ferramenta cognitiva: havia uma boa correspondência com a maneira de pensar das pessoas sobre o mundo.

• Ele percebeu que um substantivo isolado faz aparecer uma imagem concreta na mente das pessoas e um verbo isolado não tem esse efeito. Verbos são propriedades dos substantivos: • Garotos correm ; • Cachorro corre;• Trem corre;

Breve relato da história da POO...

Page 10: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Então, Alan Kay pensou em como construir um sistema de software a partir de agentes autônomos que interagissem entre si, estabelecendo os seguintes princípios da orientação a objetos:

• Qualquer coisa é um objeto.• Objetos realizam tarefas através da requisição de serviços.• Cada objeto pertence a uma determinada classe.• Uma classe agrupa objetos similares.• Um classe possui comportamentos associados ao objeto.• Classes são organizadas em hierarquias.

Breve relato da história da POO...

Page 11: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN
Page 12: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

O que faz uma linguagem ser Orientada a Objetos?

• Para uma linguagem ser Orientada a Objetos ela precisa:• ser baseada em objetos, ou seja, deve ser fácil

programar objetos que encapsulam dados e operações;• ser baseadas em classes, ou seja, cada objeto

pertence a (ou é fabricado a partir de) uma classe; • permitir herança, ou seja, deve ser fácil agrupar

classes em hierarquias de subclasses e superclasses.

Page 13: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Idéias básicas da POO

• A POO foi criada para tentar aproximar o mundo real do mundo virtual: a idéia fundamental é tentar simular o mundo real dentro do computador. Para isso, nada mais natural do que utilizar Objetos.

• Afinal, nosso mundo é composto de objetos, certo?!

Page 14: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Na POO o programador é responsável por moldar o mundo dos objetos, e explicar para estes objetos como eles devem interagir entre si.

• Os objetos "conversam" uns com os outros através do envio de mensagens, e o papel principal do programador é especificar quais serão as mensagens que cada objeto pode receber, e também qual a ação que aquele objeto deve realizar ao receber aquela mensagem em específico.

Idéias básicas da POO

Page 15: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Uma mensagem é um pequeno texto que os objetos conseguem entender. Junto com algumas dessas mensagens ainda é possível passar algumas informações para o objeto (parâmetros), dessa forma, dois objetos conseguem trocar informações entre si facilmente.

Idéias básicas da POO

Page 16: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Motivos que influenciaram o uso da POO

• Avanços na tecnologia de arquiteturas de computadores, suportando sofisticados ambientes de programação e interfaces homem-máquina.

• Avanços na área de linguagens de programação como modularização, ocultamento de informação, etc.

• Crise do Software: termo utilizado para descrever problemas associados ao modo como o software é desenvolvido, como é feita a manutenção e como acompanhar a demanda por mais software [Pressman, 1995].

Page 17: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Vantagens da Tecnologia de Objetos• Facilita a reutilização de código;• Os modelos refletem o mundo real de maneira

mais aproximada:• Descrevem de maneira mais precisa os dados;• A decomposição é baseada em um

particionamento natural; e• Mais fáceis de entender e manter.

• Pequenas mudanças nos requisitos não implicam em alterações massivas no sistema em desenvolvimento.• Implementação de Tipos Abstratos de Dados;

Page 18: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

“Preconceitos” sobre Orientação a Objetos

• A orientação a objetos não é uma metodologia para o desenvolvimento de interfaces gráficas amigáveis, ou seja, o paradigma de objetos não está necessariamente relacionada a programação visual;

• A orientação a objetos não elimina a necessidade de implementar os sistemas, e nem está relacionadas apenas a fase de implementação;

• Padrões de projeto não são necessariamente abordagens relacionadas ao paradigma de objetos;

Page 19: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• A orientação a objetos não garante a reutilização, ela oferece mecanismos para que isso ocorra, mas sempre será função do desenvolvedor garantir isso.

“Preconceitos” sobre Orientação a Objetos

Page 20: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Programação Estruturada x

Orientação a objetos

Page 21: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Programação Estruturada• Busca a obtenção de uma estrutura lógica clara; boa tanto

para compreensão do código, como para manutenção do mesmo;

• Normalmente essa estrutura é interpretada linha por linha, havendo três tipos de estruturas básicas para navegar pelo código: sequência, seleção e repetição;

Page 22: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Além disso, este tipo de programação usa como unidade básica a "função".

• Define-se como função uma sequência de comandos que é executada ao longo do programa várias vezes.

• Tal sequência é definida em um modulo separado e chamada de dentro da estrutura principal do programa, ou até de outros programas.

• Além de tornar o programa mais organizado, a utilização de funções otimiza a utilização de memória pelo código.

Programação Estruturada

Page 23: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Orientação a objetos• Introduz a noção de "classe" e "objeto“;

• Classes são estruturas de dados que contêm tanto campos de dados (variáveis próprias) como seus próprios métodos (funções).

• Um objeto é uma instância de uma classe, declarada dentro do programa.

• Uma classe pode ser vista como um conjunto de funções (operações) que encapsulam um conjunto de variáveis (atributos), visando garantir o uso correto das mesmas.

Page 24: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN
Page 25: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

POO Prog. Estruturada

Enfoque Objetos Ações

Unidade básica Classe Função

Tabela 1, da qual pode-se tirar uma visão básica da diferença entre os dois paradigmas de programação apresentados.

Page 26: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Algoritmo X Implementação X Programa

•O que são e quais as diferenças entre:– Algoritmo ?– Implementação ?– Programa ?

✔ O que é Metodologia ?

✔E Metodologia de programação ?

Page 27: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Desenvolvimento Orientado a Objetos• PROCESSOS

Análise Orientada a Objetos: É o processo de construção de modelos do domínio do problema, identificando e especificando um conjunto de objetos que interagem e comportam-se conforme os requisitos estabelecidos para o sistema.

Projeto Orientado a Objetos: é o processo de geração de uma especificação detalhada do software a ser desenvolvido, de tal forma que esta especificação possa levar a direta implementação no ambiente alvo.

Page 28: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Programação Orientada a Objetos: é um modelo de programação que baseia-se em conceitos como classes, objetos, herança, etc. Seu objetivo é a resolução de problemas baseada na identificação de objetos e o processamento requerido por estes objetos, e então na criação de simulações destes objetos.

Desenvolvimento Orientado a Objetos• PROCESSOS

A programação é obtida através da definição de classes e criação de hierarquias, nas quais propriedades comuns são transmitidas das superclasses para as subclasses através do mecanismo de herança.

Objetos destas classes são instanciados tal que a execução do programa é vista como um conjunto de objetos relacionados que se comunicam enviando mensagens uns para os outros.

Page 29: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Linguagens Orientadas a Objetos• Na literatura existe uma distinção entre linguagens

baseadas em objetos e linguagens orientadas a objetos:

Uma linguagem é orientada a objetos quando ela fornece apoio a objetos, e requer que objetos sejam instâncias de classes. Além disso, um mecanismo de herança deve ser oferecido. Ex: C++, Java e Smalltalk.

Uma linguagem é baseada em objetos quando ela fornece apoio somente ao conceito de objetos. Exemplo: Ada e Visual Basic.

Page 30: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Além da distinção entre linguagens baseadas em objetos e linguagens orientadas a objetos, existe uma outra distinção que classifica as linguagens orientadas a objetos em:

Linguagens Orientadas a Objetos

Híbridas: São linguagens que originalmente não foram projetadas orientadas a objetos, mas que passaram a incorporar os conceitos deste paradigma. Ex: C++ e Object Pascal

Puras: São linguagens que foram projetadas originalmente orientadas a objetos. Ex: Smalltalk e Java.

Page 31: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• No entanto, cabe ressaltar que o conceito de Orientação Objeto depende mais da mentalidade do programador do que da linguagem de programação que está sendo utilizada.

Linguagens Orientadas a Objetos

Page 32: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Pode-se conseguir programas razoavelmente orientados a objeto em linguagens tipicamente estruturadas, assim como pode-se conseguir programas estruturados em linguagens voltadas para objetos.

Linguagens Orientadas a Objetos

Page 33: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Tomemos como exemplo a frase:

“O navio atraca no porto e descarrega sua carga.”

Linguagens Orientadas a Objetos

Estruturalmente:

Pensaríamos logo em como o navio atraca no porto e como ele faz para descarregar sua carga.

Orientado a objeto:

Primeiro pensaríamos no objeto navio, no objeto porto e no objeto carga, pensando como eles seriam e procurando definir seu comportamento.

Page 34: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Grande preocupação com os programadores experientes:

Linguagens Orientadas a Objetos

Migrar para a orientação a objeto, pois terá que esquecer os anos de prática analisando os problemas estruturadamente, para reaprender a analisá-los de forma voltada a objeto.

Page 35: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

• Nenhuma empresa faria isto se não tivesse bons motivos.• Duas vantagens que motivam veteranos programadores

a readaptar-se para o paradigma de orientação a objeto:

Linguagens Orientadas a Objetos

Sensível redução no custo de manutenção do software

Aumento na reutilização de código

Page 36: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Redução no custo de manutenção

• Na programação orientada a objetos, existem certas características (herança e encapsulamento) que permitem que, quando for necessária alguma alteração, modifique-se apenas o objeto que necessita desta alteração, e ela propagar-se-á automaticamente às demais partes do software que utilizam este objeto.

Page 37: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Aumento na reutilização de código

• Pode-se dizer, de modo simplório, que o conceito de orientação objeto fornece a possibilidade de um objeto acessar e usar como se fossem seus os métodos e a estrutura de outro objeto

Deste modo, quando, por exemplo, existirem dois objetos bastante semelhantes, com mínimas diferenças, pode-se escrever os métodos apenas uma vez e usá-los para os dois objetos. Apenas os métodos que realmente forem diferentes para os dois objetos é que precisam ser escritos individualmente.

Page 38: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN
Page 39: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Concluindo POO...Com o desenvolvimento de aplicações de software cada vez mais complexas, cresceram as demandas cada vez mais complexas, cresceram as demandas por metodologias que pudessem abstrair e por metodologias que pudessem abstrair e modularizar as estruturas básicas de programas. modularizar as estruturas básicas de programas

A programação OO suporta a abstração e modularização através da especificação de tipos abstratos de dados (as classe), e promove a reutilização de software por meio do mecanismos de herança.

Page 40: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

A programação OO busca modelar aplicações seguindo uma estrutura semelhante àquela encontrada no mundo real.

O mundo é composto por objetos que apresentam estados e comportamentos.

Um gato por exemplo tem um nome, uma cor e uma raça (os estados) e ele come, mia e caça ratos (os comportamentos).

Page 41: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

Uma aplicação OO é composta por diferentes objetos e uma sequência de ações (interações).

Uma ação se inicia através do envio de uma mensagem para um agente (um objeto) que será responsável por tratar essa ação.

A mensagem carrega uma requisição, além de toda a informação necessária (argumentos) para que a ação seja executada.

Se o agente receptor da mensagem a aceita, ele tem a responsabilidade de executar um método para cumprir a requisição.

Page 42: Histórico, cenário atual e características. AULA II - 08/08/2014 Sistemas de Informação - CPAN

FIM!!!!! PREPARA!!