histórico, cenário atual e características. aula ii - 08/08/2014 sistemas de informação - cpan
TRANSCRIPT
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.
• 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...
• 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..
• 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...
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.
• 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...
• 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...
• 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...
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.
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?!
• 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
• 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
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].
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;
“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;
• 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
Programação Estruturada x
Orientação a objetos
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;
• 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
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.
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.
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 ?
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.
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.
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.
• 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.
• 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
• 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
• 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.
• 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.
• 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
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.
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.
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.
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).
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.
FIM!!!!! PREPARA!!