paradigmas de programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.paradigmas.pdf · 2011. 8. 23. ·...
Post on 17-Mar-2021
5 Views
Preview:
TRANSCRIPT
Paradigmas de Programação
Programação Orientada a Objetos Java
Prof. Geraldo Braz Junior
Linguagem de Programação
Linguagem destinada a ser usada por um serhumano para expressar um processoatravés do qual um computador poderesolver um problema
2
processo
Solução
Para que estudar linguagens? Desenvolvimento da habilidade em resolver
problemas.
Capacidade de extrair o máximo da
funcionalidade e eficiência da LP.
Escolha da LP apropriada para a solução
de cada problema
Facilidade para aprender outras linguagens.
3
O que Estudar?
Sintaxe: gramática (forma)
Semântica: significado
Pragmática (ex.: metodologias)
Processadores:
compiladores, interpretadores, editores,
ambientes visuais ...
4
Histórico das LP
FORTRAN (FORmula TRANslation)-1956-JohnBackus
muito utilizada no meio técnico-científico
disponibilidade de uma vasta biblioteca
Contribuições:
variáveis;
comando de atribuição;
conceito de tipos;
modularidade (com o uso de subprogramas);
E/S formatadas ;
5
Histórico das LP
COBOL (COmmon Business OrientedLanguage) - 1959
Código é "English-like"
Padrão para as aplicações comerciais (atépouco tempo)
Excelente para a manipulação de arquivos.
Contribuições:
código mais legível;
estrutura de dados heterogênea (record).
6
Histórico das LP
ALGOL 60 (ALGorithmic Oriented Language)
Linguagem algébrica européia
resolução de problemas científicos.
Influência marcante
Pouco usada em aplicações comerciais
Contribuições:
estrutura de blocos;
comandos de controle estruturados;
recursividade.
7
Histórico das LPLISP (LISt Processing) - 1960 - John
McCartly(MIT) Linguagem funcional criada para dar suporte à
pesquisa em Inteligência Artificial.
Contribuição:
pioneirismo na idéia de computação simbólica ounão-numérica.
BASIC (Beginners All-purpose SymbolicInstruction Code)
John Kemeny-Thomas Kurtz (Dartmouth College)
Contribuições para futuras linguagens:
ambiente de programação interativo;
conceito de execução interpretativa de programas.
8
Histórico das LPPL/I (Programming Language I) -IBM
Incorporou:
ALGOL 60- estrutura de bloco, de controle erecursividade
FORTRAN - subprogramas e E/S formatadas;
COBOL - manipulação de arquivos e registros do
LISP - alocação dinâmica e estruturas encadeadas
linguagem complexa
Contribuições:
tratamento de interrupção
suporte a multitarefa
9
Histórico das LP
SIMULA 67 destinada a sistemas e programação de simulações.
Contribuição: conceito de classe
PASCAL - Niklaus Wirth(1969)
linguagem de fácil aprendizado e implementação;
suporta programação estruturada;
adequada para o ensino de programação;
Influenciou quase todas posteriores
Contribuições:
Estruturas de controle flexíveis; tipos definidos pelo usuário; manipulação de arquivos; estruturas de dados heterogêneas e conjuntos. 10
Histórico das LP
PROLOG (PROgramming in LOGic) desenvolvida para aplicações de IA Artificial
baseada em lógica formal
SMALL TALK - Alan Kay -Xerox - Palo Alto Ambiente de programação com menus pop-up,
windows e mouse.
Modelo OO: conceito de classe, encapsulamento,herança e instanciação.
Contribuições:
- 1ª a utilizar o paradigma de programaçãointerativa;
- Conceito de LP extensível;
11
Histórico das LPC - Bell Lab - início dos anos 70
implementação do UNIX.
facilidades para a programação em "baixo nível"
gera código compacto e eficiente
Alta portabilidade
MODULA 2 - Niklaus Wirth - final 70's
linguagem de propósito geral, baseada em melhoriasno Pascal.
Acrescentou:
- possibilidade de implementar TAD;
- existência de uma palavra-chave de terminação para todaestrutura de controle;
- co-rotinas - execução intercalada; e tipos deprocedimentos;
12
Por que tantas linguagens?
13
• Propósitos diferentes
• Avanços tecnológicos
• Interesses comerciais
• Cultura e background científico
Escolha de uma LP
Implementação
Competência na LP
Portabilidade
Sintaxe
Semântica
Ambiente de programação
Modelo de computação-
14
15
O que é um paradigma de
programação?
• Modelo, padrão ou estilo de programação
suportado por linguagens que agrupam certas
características comuns
• A classificação de linguagens em paradigmas é
uma conseqüência de decisões de projeto que
impactam radicalmente a forma na qual uma
aplicação real é modelada do ponto de vista
computacional
Paradigmas de LP Paradigma Imperativo - Computador
FORTRAN, COBOL, ALGOL 60, APL, BASIC, PL/I, SIMULA67, ALGOL 68, PASCAL, C, MODULA 2, ADA.
Paradigma Funcional - solução do problema
LISP.
Paradigma Lógico - ser humano
PROLOG.
Paradigma Orientado a Objetos - problema
SMALTALK , Java
C++ : Linguagem híbrida
Modelo Imperativo + Orientação a Objetos
16
O Paradigma Imperativo Solução do problema especificada na ótica do
computador
Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado
Paradigma também denominado de procedural, por incluir subrotinas ou procedimentos como mecanismo de estruturação
Primeiro paradigma a surgir e ainda é o dominante
17
Vantagens e Desvantagens -Imperativo Vantagens
- Eficiência (embute modelo de Von
Neumann)
- Modelagem “natural” de aplicações do
mundo real
- Paradigma dominante e bem estabelecido
Desvantagens
- erros introduzidos durante manutenção
- descrições demasiadamente operacionais
focalizam o como e não o que
18
O Paradigma Funcional
Programas são funções que descrevem
uma relação explícita e precisa entre E/S
Estilo declarativo: não há o conceito de
estado nem comandos como atribuição
Aplicação: prototipação em geral e IA
19
Vantagens e Desvantagens -Funcional
Vantagens
- Manipulação de programas mais simples:
- Prova de propriedades
- Transformação (exemplo: otimização)
- Concorrência explorada de forma natural
Desvantagens
- “O mundo não é funcional!”
- Implementações ineficientes
- Mecanismos primitivos de E/S e formatação
20
Exemplo LP Funcional -Scheme
Função que Calcula o Máximo de uma lista
(define maximo
(lambda (l)
(if (null? (cdr l)) ; ultimo/unico elemento?
(car l)
(max (car l) (maximo (cdr l))
)
)
)
)
21
O Paradigma Lógico Programas são relações entre E/S
Estilo declarativo, como no paradigma funcional
Na prática, inclui características imperativas, por questão de eficiência
Aplicações: sistemas especialistas e banco de dados
22
Vantagens e Desvantagens - Lógico Vantagens
Em princípio, todas do paradigma funcional
Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S)
Problemas
Em princípio, todos do paradigma funcional
Linguagens usualmente não possuem tipos, nem são de alta ordem
23
Exemplo Lp Lógico - PrologVerifica se uma palavra é palíndroma.
Exemplo de utilização: inicio(madam).
% entrada e saida de dados
inicio(X) :- ler(X), (X = para; teste(X), inicio(Y)).
teste(X) :- nome(X,N), palindromo(N), write(X), write(` e'
palindroma'), nl, !.
teste(X) :- write(X), write(` nao e' palindroma'), nl.
% inversao e teste
palindromo(X) :- inverte2(X,X).
inverte2(L1,L) :- invconc(L1,[ ],L).
invconc([H|L],L,M) :- invconc(T,[H|L],M).
invconc([ ], L, L).
24
O Paradigma Orientado a Objetos
Pode ser visto como uma subclassificacão do imperativo
A diferença é mais de metodologia quanto à concepção e modelagem do sistema
A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado e operações (métodos) sobre este estado
Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)
25
Vantagens e Desvantagens - OO
Vantagens
Todas as do estilo imperativo
Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade
Aceitação comercial crescente
Desvantagens
Semelhantes às do paradigma imperativo, mas amenizadas pelas facilidades de estruturação
26
Tendência: integração de paradigmas A principal vantagem é combinar
facilidades de mais de um paradigma, aumentando o domínio de aplicação da linguagem
Exemplos: linguagens lógicas ou funcionais com o conceito de estado e comandos
A integração deve ser conduzida com muita cautela, para que não se viole os princípios básicos de cada paradigma.
27
Outras Classificações
Linguagens de 1a., 2a., 3a., 4a. e
5a. gerações
Programação seqüencial versus
concorrente
Programação Linear versus
orientada a eventos
28
29
Uma Visão histórica1950........................................................................................................
FORTRAN
1960.......................ALGOL-60...........COBOL......LISP.........................
SIMULA ALGOL-68 PL/I BASIC
1970..................Pascal............................................................................Smalltalk C PROLOG
Modula-2 ML1980....................Ada...........DBASE-II..................................................
MirandaEifell C++
1990.....................................................................Haskell..........Godel...Java Delphi
Imperativo Funcional LógicoOrientado a objetos
Paradigma de Orientação a Objetos
31
Paradigma de OO 1ª noção de objeto - Simula (Birtwistle, 1973) POO programador visualiza programa como uma
coleção de objetos cooperantes que secomunicam através de mensagens.
Cada objeto é uma instância de uma classe
As classes estão organizadas em hieraquia
Unifica dados e procedimentos
Dá ênfase à estrutura de dados, adicionandofuncionalidade a estas estruturas.
Aspectos fundamentais: Abstração de dados;Objetos; Mensagens; Classes; Herança;Polimorfismo.
32
Abstração de dados
Tipo Abstrato de Dados (TAD)
o que constitui o tipo
as operações aplicáveis
representação
Exemplo: TAD Pilha.
Interface: boolean isEmpty() - verifica se a pilha está vazia
push(int n) - empilha o número fornecido
int pop() - desempilha o número do topo e o retorna
int top() - retorna o número do topo
Representação: vetor
33
Abstração de dados TAD pode ser usado sem qualquer
conhecimento sobre sua implementação.
Vantagens: Independência entre uso e implementação
Manutenção da integridade do TAD
Abstração de dados:
introduz um novo tipo de objeto, útil nodomínio do problema a ser resolvido.
usuários dos tipos abstratos de dados temcomportamento do objeto
dados estão ocultos
aumento de confiabilidade
34
Abstração - Exemplo
Plantação de alface hidropônico
Sistema para monitorar as condições Elemento central:
sensores para medir: temperatura, pH, luz, ..
sensor: objeto que mede a temp. em uma posição
identificação do sensor
responsabilidades:
o conhecer a temperatura na sua posição de medida
o relatar a temp. medida.
Operações:
o perguntar a temperatura
o Calibrar o sensor
35
Abstração - Exemplo Elemento SensorTemp
Parte Públicas: SensorTemp(pos) - cria o sensor
~SensorTemp() - destroi o sensor
Calibra( tempAtual) - calibra o sensor
real QualTemp() - devolve a temp. atual no sensor
Parte Privada...
36
Objetos
Entidade autônoma quecombina arepresentação dainformação (estruturasde dados) e suamanipulação(procedimentos)
OPERAÇÃO 1
OPERAÇÃO 2
OPERAÇÃO 3
ESTADO
INTERNO
IMPLEMENTAÇÕES DAS
OPERAÇÕES 1, 2 E 3
{INTERFACE
• Compostos de:
- Propriedades(atributos)
- Comportamento (Métodos)
- Identidade
37
Objetos Fácil identificar objetos
Exemplo: Objetos do tipo empregado identidade única: CPF.
Atributos:
endereço
idade
dependentes
salário
cargo
Comportamento (Operações):
aumentar salário
listar dependentes
alterar cargo
AUMENTAR
SALÁRIO
LISTAR
DEPENDENTES
. . . . . .
NOME
CARGO
SALÁRIO
38
Objetos Vantagens:
Modularidade: a unidade de programa queimplementa um objeto pode ser escrita emantida sem gerar alterações nas demais;
Ocultamento de informação:
Objeto possui interface pública que outros objetosusam para se comunicar com ele.
Objeto mantêm informações e métodos particulares,que podem ser alterados a qualquer momento semafetar os outros objetos que se comunicam com ele
Não é necessário saber como o objeto éimplementado para poder utilizá-lo.
39
Mensagens Aplicação OO: vários objetos interagindo
fornece grande funcionalidade e comportamentos complexos.
Interação através de mensagens objeto A envia mensagem para objeto B executar um de seus
métodos
informação adicional para B executar o métodos: lista deparâmetros
Componentes:
- o objeto a quem a mensagem é endereçada (receptor);
o nome do método que se deseja executar;
os parâmetros (se existirem) necessários ao método;
Objetos em processos ou máquinas distintas podemcomunicar-se através do uso de mensagens(Corba,DCOm, etc.).
Mensagem ~ uma chamada de subrotina (procedimentoou função).
40
Troca de Mensagens - Exemplo 1
"João deseja enviar flores para Maria mas elamora em outra cidade. João vai, então, até afloricultura e pede a José, o floricultor, para que eleenvie um bouquet de rosas ao endereço de Maria.José, por sua vez, liga para uma outra floricultura,da cidade de Maria, e pede para que as floressejam entregues. João precisa resolver umproblema, então, ele procura um agente, José, elhe passa uma mensagem contendo sua requisição:enviar rosas para Maria. José tem aresponsabilidade de, através de algum método,cumprir a requisição. O método utilizado por Josépode estar oculto de João."
41
Troca de Mensagens - Exemplo 2
Realização de uma operação aritmética
(SmallTalk)
Adição é realizada enviando uma mensagem aum objeto representando o número. Amensagem especifica a operação desejada(adição) e o número que deve ser somado aoobjeto receptor. Então, a operação “x + y” éinterpretada como a mensagem “+” sendoenviada ao objeto “x” com o parâmetro “y”.
42
Método implementa algum aspecto do
comportamento do objeto.
uma função ou procedimento que édefinido para o objeto e tipicamente podeacessar o seu estado interno para realizaralguma operação.
procedimento cujo primeiro parâmetro é oobjeto no qual deve trabalhar(objetoreceptor)
receptor.nome_da_mensagem(par1,par2, par3)
43
Construtores e Destrutores Construtores:
usados para criar e inicializar objetos novos.
Destrutores:
usados para destruir objetos
construtor chamado automaticamente quando objeto é declarado
Exemplo: gerenciar a quantidade de objetos de uma determinada classe que já foram criados até o momento.
44
Classes Objetos com estrutura e comportamento
idênticos são descritos como pertencendo auma classe
Provê a informação para construir e utilizarobjetos de um tipo particular
Classes de objetos
descrição das propriedades de objetos, de formaconcisa em termos de estrutura ecomportamento
Provê a informação para construir e utilizarobjetos de um tipo particular
Descreve o comportamento de vários objetosde comportamento semelhante
45
Classes
Objeto -- variável
Classe - tipo
Objeto criado a partir de uma classe: instância
Cada instância pertence a uma classe
Uma classe pode possuir múltiplas instâncias
Posição
Dados: Variável de classe (compartilhada)
nobj
Variável de Instância (única)
X, Y – tipo coordenadas
Métodos
Inicializa a Posição
Retorna valor X
Retorna valor Y
nobj = 3
X = 5
Y = 10
Objeto Posição #1
nobj = 3
X = 7
Y = 2
Objeto Posição #2
nobj = 3
X = 5
Y = 10
Objeto Posição #3
• Exemplo: classe Posição
46
Herança Permite a reutilização das propriedades de uma
classe na definição de outra.
característica única de linguagens OO
diferencia POO de programação com TAD
Classe mais generalizada: superclasse
Classe mais especializada: subclasse.
Objeto descendente não tem nenhum trabalho
para receber a herança
47
Herança classe Ponto:
herança da classe Posição
variável de instância Visivel
métodos para desenhar , apagar e
perguntar acercar da visibilidade de
pontos.
classe Circulo:
herança da classe Ponto
variável de instância Raio
métodos para contrair e expandir
círculos.
Posição
Dados:
Variável de classe (compartilhada)
nobj
Variável de Instância (única)
X, Y – tipo coordenadas
Métodos
Inicializa a Posição Retorna valor X
Retorna valor Y
Ponto
Dados:Variável de Instância (única)
Visivel - lógico
Métodos
Inicializa Ponto
Desenha Ponto
Apaga valor Y
Retorna Visivel
Circulo
Dados:
Variável de Instância (única)
Raio
Métodos
Inicializa Circulo
Expande Circulo
Contrai Circulo
48
Herança se B é subclasse de A:
objetos da classe B suportam todas as operaçõessuportadas por objetos da classe A, menos asredefinidas
as variáveis de instância de B incluem todas asvariáveis de instância de A.
Especialização: nova classe é criada apartir de uma classe existente, que eramuito geral.
Generalização: processo inverso
49
Herança Pode afetar o encapsulamento de
informação.
Clientes:
requisitam operações sobre instâncias da classe
informações ocultadas
classes definidas através da herança
acesso à representação das variáveis de instânciasdefinidas na sua superclasse
Mudanças na implementação de uma classe,podem comprometer a implementação desuas subclasses.
50
Herança Múltipla
subclasse pode herdar características de diversas superclasses
Exemplo: classe Janela
DefineAltura
DefineLargura
MostraObjeto
MoveObjeto
DefineAltura
DefineLargura
MostraObjeto
MoveObjetoObjetoTela Texto Arvore
Janela
ExibeTextoAdicionaTexto
RemmoveTexto
AdicionaFilho
RemoveFilho
51
Polimorfismo Vários objetos respondem à uma mesma
mensagem, cada um a seu próprio modo
Solução sem polimorfismo
Função DesenhaObjeto ( Obj )
Se Obj é do tipo Ponto
DesenhaPonto ( Obj)
Senão
Se Obj é do tipo Circulo
DesenhaCirculo (Obj)
Fim se
Fim se
Fim DesenhaObjeto
Solução com polimorfismo
Função DesenhaObjeto ( Obj )
Obj.Desenha()
Fim DesenhaObjeto
52
Polimorfismo útil na compreensão de programas
sobrecarga de função ou de operadores
polimorfismo paramétrico
ligação (binding): associação entre umatributo e uma entidade ou entre umaoperação e um símbolo.
Estática: ocorre em tempo de compilação ou deligação (linking) e não é mais modificada durantetoda a execução do programa.
Dinâmica: é feita em tempo de execução ou podeser alterada no decorrer da execução do programa.
Aumenta reutilização - diminui aperformance
53
Objeto, Classe e Herança
Permitem a definição de hierarquias deabstrações, que facilitam a compreensão
classes agrupam objetos com característicasiguais
herança estrutura classes semelhantes.
Objetos e classes:
grande poder de modelagem
expressa relações entre comportamentos:
classificação/instanciação
generalização/especialização
agregação/composição
54
Classificação/Instanciação
Classificação de objetos em classes
definição de propriedades e comportamentos comuns a objetos para agrupá-los em classes
Instanciação de objetos de uma classe
criação de um objeto de uma determinada classes
MICROCOMPUTADOR
IBM PC MACHINTOSH
INSTANCIAÇÃO
CLASSIFICAÇÃO
55
Generalização/Especialização
Abstração de uma classe mais genérica
Subclasses possuem todas as propriedades das classes de quem elas são especializações Pelo menos uma propriedade para diferenciar duas
classes especializadas (subclasses) a partir da mesma classe genérica (superclasse)
ESPECIALIZAÇÃO
GENERALIZAÇÃO MAINFRAMEMICROCOMPUTADOR
COMPUTADOR
56
Composição/Decomposição objetos compostos pela agregação de
outros objetos ou componentes
instâncias (objetos) de uma classe compostas por instâncias de outras classes.
DECOMPOSIÇÃO
COMPOSIÇÃOVÍDEOTECLADO
MICROCOMPUTADOR
57
Vantagens POO Reutilização de código: maior vantagem
Escalabilidade: capacidade de crescimento
Encapsulamento: facilita manutenção
Polimorfismo: aumenta a legibilidade
Herança: facilidade de adição de novasfuncionalidades
58
Desvantagens da POO Apropriação:
Problemas com limites nebulosos
Fragilidade
sensível a mudanças de relacionamentosentre as classes chave
Importância fundamental de bom projeto eanálise
necessidade de estratégia linera de projeto ao invés da cíclica
59
Estilo POO Modularidade:
Suporte a generalização/especialização
Visão balanceada entre dados e processos
Composição “botton-up” de aplicação
Atividade incremental e evolutiva
Reutilização de código
Robustez
Programação em grande escala
top related