SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
Paradigmas de Programação
Programação Orientada a Objetos Java
Prof. Anselmo Cardoso Paiva
Prof. Geraldo Braz Junior
Linguagem de Programação
Linguagem destinada a ser usada por um ser
humano para expressar um processo
através do qual um computador pode
resolver 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-John
Backus
 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 Oriented
Language) - 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 LP
LISP (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 ou
não-numérica.
BASIC (Beginners All-purpose Symbolic
Instruction 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 LP
PL/I (Programming Language I) -IBM
 Incorporou:
 ALGOL 60- estrutura de bloco, de controle e
recursividade
 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ção
interativa;
- Conceito de LP extensível;
11
Histórico das LP
C - 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 melhorias
no Pascal.
 Acrescentou:
- possibilidade de implementar TAD;
- existência de uma palavra-chave de terminação para toda
estrutura de controle;
- co-rotinas - execução intercalada; e tipos de
procedimentos;
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, SIMULA
67, 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ção20
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 - Prolog
Verifica 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órica
1950........................................................................................................
FORTRAN
1960.......................ALGOL-60...........COBOL......LISP.........................
SIMULA ALGOL-68 PL/I BASIC
1970..................Pascal............................................................................
Smalltalk C PROLOG
Modula-2 ML
1980....................Ada...........DBASE-II..................................................
Miranda
Eifell 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 se
comunicam 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, adicionando
funcionalidade 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 no
domínio do problema a ser resolvido.
 usuários dos tipos abstratos de dados tem
comportamento 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 que
combina a
representação da
informação (estruturas
de dados) e sua
manipulaçã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 que
implementa um objeto pode ser escrita e
mantida sem gerar alterações nas demais;
 Ocultamento de informação:
 Objeto possui interface pública que outros objetos
usam para se comunicar com ele.
 Objeto mantêm informações e métodos particulares,
que podem ser alterados a qualquer momento sem
afetar 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 de
parâ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 podem
comunicar-se através do uso de mensagens(Corba,
DCOm, etc.).
 Mensagem ~ uma chamada de subrotina (procedimento
ou função).
40
Troca de Mensagens - Exemplo 1
"João deseja enviar flores para Maria mas ela
mora em outra cidade. João vai, então, até a
floricultura e pede a José, o floricultor, para que ele
envie 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 flores
sejam entregues. João precisa resolver um
problema, então, ele procura um agente, José, e
lhe passa uma mensagem contendo sua requisição:
enviar rosas para Maria. José tem a
responsabilidade 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 a
um objeto representando o número. A
mensagem especifica a operação desejada
(adição) e o número que deve ser somado ao
objeto receptor. Então, a operação “x + y” é
interpretada como a mensagem “+” sendo
enviada 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 pode
acessar o seu estado interno para realizar
alguma operação.
 procedimento cujo primeiro parâmetro é o
objeto no qual deve trabalhar(objeto
receptor)
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 a
uma classe
 Provê a informação para construir e utilizar
objetos de um tipo particular
 Classes de objetos
 descrição das propriedades de objetos, de forma
concisa em termos de estrutura e
comportamento
 Provê a informação para construir e utilizar
objetos de um tipo particular
 Descreve o comportamento de vários objetos
de 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ções
suportadas por objetos da classe A, menos as
redefinidas
 as variáveis de instância de B incluem todas as
variáveis de instância de A.
 Especialização: nova classe é criada a
partir de uma classe existente, que era
muito 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âncias
definidas na sua superclasse
 Mudanças na implementação de uma classe,
podem comprometer a implementação de
suas subclasses.
50
Herança Múltipla
 subclasse pode herdar características de
diversas superclasses
 Exemplo: classe Janela
DefineAltura
DefineLargura
MostraObjeto
MoveObjeto
DefineAltura
DefineLargura
MostraObjeto
MoveObjeto
ObjetoTela Texto Arvore
Janela
ExibeTexto
AdicionaTexto
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 um
atributo e uma entidade ou entre uma
operação e um símbolo.
 Estática: ocorre em tempo de compilação ou de
ligação (linking) e não é mais modificada durante
toda a execução do programa.
 Dinâmica: é feita em tempo de execução ou pode
ser alterada no decorrer da execução do programa.
 Aumenta reutilização - diminui a
performance
53
Objeto, Classe e Herança
 Permitem a definição de hierarquias de
abstrações, que facilitam a compreensão
 classes agrupam objetos com características
iguais
 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ÇÃO
VÍ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 novas
funcionalidades
58
Desvantagens da POO
 Apropriação:
 Problemas com limites nebulosos
 Fragilidade
 sensível a mudanças de relacionamentos
entre as classes chave
 Importância fundamental de bom projeto e
aná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

Más contenido relacionado

Was ist angesagt?

Análise da conversação power point
Análise da conversação   power pointAnálise da conversação   power point
Análise da conversação power pointDaniele Lopes Lopes
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de ProgramasSidney Roberto
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08André Phillip Bertoletti
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programaçãoAlbertoVach
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoElaine Cecília Gatto
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1engenhariadecomputacao
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Arthur Emanuel
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalGustavo Coutinho
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonGiancarlo Silva
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresEduardo de Lucena Falcão
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Renato William
 

Was ist angesagt? (20)

Paradigma funcional
Paradigma funcionalParadigma funcional
Paradigma funcional
 
Análise da conversação power point
Análise da conversação   power pointAnálise da conversação   power point
Análise da conversação power point
 
Estrutura de Programas
Estrutura de ProgramasEstrutura de Programas
Estrutura de Programas
 
Aula 3 - Software
Aula 3 - SoftwareAula 3 - Software
Aula 3 - Software
 
Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08Lógica de Programação - Unimep/Pronatec - Aula08
Lógica de Programação - Unimep/Pronatec - Aula08
 
O compilador dev c++
O compilador dev c++O compilador dev c++
O compilador dev c++
 
Funcionalismo
FuncionalismoFuncionalismo
Funcionalismo
 
Aula 03
Aula 03Aula 03
Aula 03
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Linguágens de programação
Linguágens de programaçãoLinguágens de programação
Linguágens de programação
 
Algoritmos - Lógica de Programação
Algoritmos - Lógica de ProgramaçãoAlgoritmos - Lógica de Programação
Algoritmos - Lógica de Programação
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Noam Chomisky
Noam ChomiskyNoam Chomisky
Noam Chomisky
 
Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01Sistemas Distribuídos - Aula 01
Sistemas Distribuídos - Aula 01
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Curso básico de Algoritmos com Python
Curso básico de Algoritmos com PythonCurso básico de Algoritmos com Python
Curso básico de Algoritmos com Python
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Sistemas distribuídos aula 1
Sistemas distribuídos aula 1Sistemas distribuídos aula 1
Sistemas distribuídos aula 1
 

Ähnlich wie 1.1.paradigmas

Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfAmlieOGalaxias
 
Linguagen..
Linguagen..Linguagen..
Linguagen..essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09essa
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de ProgramaçãoBeDMK
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacaopablogranola
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptxbrayankedroksi
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoFabio Spanhol
 
Paradigms of programming languagens
Paradigms of programming languagensParadigms of programming languagens
Paradigms of programming languagensMarcelo Hama
 
Programacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfProgramacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfMuseiwaLopes
 
Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Romário santos
 

Ähnlich wie 1.1.paradigmas (20)

Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagem da programação
Linguagem da programaçãoLinguagem da programação
Linguagem da programação
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Atps paradigmas linguagem programacao
Atps paradigmas linguagem programacaoAtps paradigmas linguagem programacao
Atps paradigmas linguagem programacao
 
aula03-introprogy.pptx
aula03-introprogy.pptxaula03-introprogy.pptx
aula03-introprogy.pptx
 
Functional Programming - Scala
Functional Programming - ScalaFunctional Programming - Scala
Functional Programming - Scala
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Haskell motivação
Haskell motivaçãoHaskell motivação
Haskell motivação
 
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de ProgramaçãoParadigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação
 
Paradigms of programming languagens
Paradigms of programming languagensParadigms of programming languagens
Paradigms of programming languagens
 
Programacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdfProgramacao_Concorrente slide.pdf
Programacao_Concorrente slide.pdf
 
Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01Linguagensdeprogramao 100611235520-phpapp01
Linguagensdeprogramao 100611235520-phpapp01
 

Mehr von Fábio Costa

Docslide.com.br aula01 eletricidade-industrial
Docslide.com.br aula01 eletricidade-industrialDocslide.com.br aula01 eletricidade-industrial
Docslide.com.br aula01 eletricidade-industrialFábio Costa
 
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidiaFábio Costa
 
Aula 02 ambientes e produtos multimidia
Aula 02   ambientes e produtos multimidiaAula 02   ambientes e produtos multimidia
Aula 02 ambientes e produtos multimidiaFábio Costa
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia iFábio Costa
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoesFábio Costa
 
Aula 01 apresentacao da disciplina
Aula 01   apresentacao da disciplinaAula 01   apresentacao da disciplina
Aula 01 apresentacao da disciplinaFábio Costa
 
Aula 05 ferramentas para autoria de produtos multimídia ii
Aula 05   ferramentas para autoria de produtos multimídia iiAula 05   ferramentas para autoria de produtos multimídia ii
Aula 05 ferramentas para autoria de produtos multimídia iiFábio Costa
 
Aula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensaoAula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensaoFábio Costa
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídiaFábio Costa
 
Notas b1 multimidia noite
Notas b1 multimidia noiteNotas b1 multimidia noite
Notas b1 multimidia noiteFábio Costa
 
Aula 07 08 - imagens
Aula 07   08 - imagensAula 07   08 - imagens
Aula 07 08 - imagensFábio Costa
 
Aula 09 imagens vetoriais
Aula 09   imagens vetoriaisAula 09   imagens vetoriais
Aula 09 imagens vetoriaisFábio Costa
 
Aula 01 apresentacao da disciplina
Aula 01   apresentacao da disciplinaAula 01   apresentacao da disciplina
Aula 01 apresentacao da disciplinaFábio Costa
 
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidiaFábio Costa
 
Aula 02 ambientes e produtos multimidia
Aula 02   ambientes e produtos multimidiaAula 02   ambientes e produtos multimidia
Aula 02 ambientes e produtos multimidiaFábio Costa
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia iFábio Costa
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoesFábio Costa
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídiaFábio Costa
 

Mehr von Fábio Costa (20)

Docslide.com.br aula01 eletricidade-industrial
Docslide.com.br aula01 eletricidade-industrialDocslide.com.br aula01 eletricidade-industrial
Docslide.com.br aula01 eletricidade-industrial
 
Cronograma
CronogramaCronograma
Cronograma
 
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
 
Aula 02 ambientes e produtos multimidia
Aula 02   ambientes e produtos multimidiaAula 02   ambientes e produtos multimidia
Aula 02 ambientes e produtos multimidia
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia i
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoes
 
Aula 01 apresentacao da disciplina
Aula 01   apresentacao da disciplinaAula 01   apresentacao da disciplina
Aula 01 apresentacao da disciplina
 
Aula 05 ferramentas para autoria de produtos multimídia ii
Aula 05   ferramentas para autoria de produtos multimídia iiAula 05   ferramentas para autoria de produtos multimídia ii
Aula 05 ferramentas para autoria de produtos multimídia ii
 
Aula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensaoAula 10 11 - terceira dimensao
Aula 10 11 - terceira dimensao
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 
Notas b1 multimidia noite
Notas b1 multimidia noiteNotas b1 multimidia noite
Notas b1 multimidia noite
 
Aula 07 08 - imagens
Aula 07   08 - imagensAula 07   08 - imagens
Aula 07 08 - imagens
 
Aula 09 imagens vetoriais
Aula 09   imagens vetoriaisAula 09   imagens vetoriais
Aula 09 imagens vetoriais
 
Aula 01 apresentacao da disciplina
Aula 01   apresentacao da disciplinaAula 01   apresentacao da disciplina
Aula 01 apresentacao da disciplina
 
Cronograma
CronogramaCronograma
Cronograma
 
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
2015 1 ciencia_da_computacao_1_sistemas_aplicacoes_multimidia
 
Aula 02 ambientes e produtos multimidia
Aula 02   ambientes e produtos multimidiaAula 02   ambientes e produtos multimidia
Aula 02 ambientes e produtos multimidia
 
Aula 04 ferramentas para autoria de produtos multimídia i
Aula 04   ferramentas para autoria de produtos multimídia iAula 04   ferramentas para autoria de produtos multimídia i
Aula 04 ferramentas para autoria de produtos multimídia i
 
Aula 03 plataformas, ambientes e configuracoes
Aula 03   plataformas, ambientes e configuracoesAula 03   plataformas, ambientes e configuracoes
Aula 03 plataformas, ambientes e configuracoes
 
Aula 06 projetos multimídia
Aula 06   projetos multimídiaAula 06   projetos multimídia
Aula 06 projetos multimídia
 

1.1.paradigmas

  • 1. Paradigmas de Programação Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior
  • 2. Linguagem de Programação Linguagem destinada a ser usada por um ser humano para expressar um processo através do qual um computador pode resolver um problema 2 processo Solução
  • 3. 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
  • 4. O que Estudar?  Sintaxe: gramática (forma)  Semântica: significado  Pragmática (ex.: metodologias)  Processadores: compiladores, interpretadores, editores, ambientes visuais ... 4
  • 5. Histórico das LP FORTRAN (FORmula TRANslation)-1956-John Backus  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
  • 6. Histórico das LP COBOL (COmmon Business Oriented Language) - 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
  • 7. 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
  • 8. Histórico das LP LISP (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 ou não-numérica. BASIC (Beginners All-purpose Symbolic Instruction 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
  • 9. Histórico das LP PL/I (Programming Language I) -IBM  Incorporou:  ALGOL 60- estrutura de bloco, de controle e recursividade  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
  • 10. 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
  • 11. 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ção interativa; - Conceito de LP extensível; 11
  • 12. Histórico das LP C - 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 melhorias no Pascal.  Acrescentou: - possibilidade de implementar TAD; - existência de uma palavra-chave de terminação para toda estrutura de controle; - co-rotinas - execução intercalada; e tipos de procedimentos; 12
  • 13. Por que tantas linguagens? 13 • Propósitos diferentes • Avanços tecnológicos • Interesses comerciais • Cultura e background científico
  • 14. Escolha de uma LP  Implementação  Competência na LP  Portabilidade  Sintaxe  Semântica  Ambiente de programação  Modelo de computação- 14
  • 15. 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
  • 16. Paradigmas de LP  Paradigma Imperativo - Computador  FORTRAN, COBOL, ALGOL 60, APL, BASIC, PL/I, SIMULA 67, 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
  • 17. 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
  • 18. 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
  • 19. 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
  • 20. 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ção20
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. Exemplo Lp Lógico - Prolog Verifica 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
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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. 29 Uma Visão histórica 1950........................................................................................................ FORTRAN 1960.......................ALGOL-60...........COBOL......LISP......................... SIMULA ALGOL-68 PL/I BASIC 1970..................Pascal............................................................................ Smalltalk C PROLOG Modula-2 ML 1980....................Ada...........DBASE-II.................................................. Miranda Eifell C++ 1990.....................................................................Haskell..........Godel... Java Delphi Imperativo Funcional LógicoOrientado a objetos
  • 31. 31 Paradigma de OO  1ª noção de objeto - Simula (Birtwistle, 1973)  POO  programador visualiza programa como uma coleção de objetos cooperantes que se comunicam 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, adicionando funcionalidade a estas estruturas.  Aspectos fundamentais: Abstração de dados; Objetos; Mensagens; Classes; Herança; Polimorfismo.
  • 32. 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. 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 no domínio do problema a ser resolvido.  usuários dos tipos abstratos de dados tem comportamento do objeto  dados estão ocultos  aumento de confiabilidade
  • 34. 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. 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. 36 Objetos  Entidade autônoma que combina a representação da informação (estruturas de dados) e sua manipulaçã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. 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. 38 Objetos  Vantagens:  Modularidade: a unidade de programa que implementa um objeto pode ser escrita e mantida sem gerar alterações nas demais;  Ocultamento de informação:  Objeto possui interface pública que outros objetos usam para se comunicar com ele.  Objeto mantêm informações e métodos particulares, que podem ser alterados a qualquer momento sem afetar os outros objetos que se comunicam com ele  Não é necessário saber como o objeto é implementado para poder utilizá-lo.
  • 39. 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 de parâ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 podem comunicar-se através do uso de mensagens(Corba, DCOm, etc.).  Mensagem ~ uma chamada de subrotina (procedimento ou função).
  • 40. 40 Troca de Mensagens - Exemplo 1 "João deseja enviar flores para Maria mas ela mora em outra cidade. João vai, então, até a floricultura e pede a José, o floricultor, para que ele envie 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 flores sejam entregues. João precisa resolver um problema, então, ele procura um agente, José, e lhe passa uma mensagem contendo sua requisição: enviar rosas para Maria. José tem a responsabilidade de, através de algum método, cumprir a requisição. O método utilizado por José pode estar oculto de João."
  • 41. 41 Troca de Mensagens - Exemplo 2 Realização de uma operação aritmética (SmallTalk) Adição é realizada enviando uma mensagem a um objeto representando o número. A mensagem especifica a operação desejada (adição) e o número que deve ser somado ao objeto receptor. Então, a operação “x + y” é interpretada como a mensagem “+” sendo enviada ao objeto “x” com o parâmetro “y”.
  • 42. 42 Método  implementa algum aspecto do comportamento do objeto.  uma função ou procedimento que é definido para o objeto e tipicamente pode acessar o seu estado interno para realizar alguma operação.  procedimento cujo primeiro parâmetro é o objeto no qual deve trabalhar(objeto receptor) receptor.nome_da_mensagem(par1, par2, par3)
  • 43. 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. 44 Classes  Objetos com estrutura e comportamento idênticos são descritos como pertencendo a uma classe  Provê a informação para construir e utilizar objetos de um tipo particular  Classes de objetos  descrição das propriedades de objetos, de forma concisa em termos de estrutura e comportamento  Provê a informação para construir e utilizar objetos de um tipo particular  Descreve o comportamento de vários objetos de comportamento semelhante
  • 45. 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. 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. 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. 48 Herança  se B é subclasse de A:  objetos da classe B suportam todas as operações suportadas por objetos da classe A, menos as redefinidas  as variáveis de instância de B incluem todas as variáveis de instância de A.  Especialização: nova classe é criada a partir de uma classe existente, que era muito geral.  Generalização: processo inverso
  • 49. 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âncias definidas na sua superclasse  Mudanças na implementação de uma classe, podem comprometer a implementação de suas subclasses.
  • 50. 50 Herança Múltipla  subclasse pode herdar características de diversas superclasses  Exemplo: classe Janela DefineAltura DefineLargura MostraObjeto MoveObjeto DefineAltura DefineLargura MostraObjeto MoveObjeto ObjetoTela Texto Arvore Janela ExibeTexto AdicionaTexto RemmoveTexto AdicionaFilho RemoveFilho
  • 51. 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. 52 Polimorfismo  útil na compreensão de programas  sobrecarga de função ou de operadores  polimorfismo paramétrico  ligação (binding): associação entre um atributo e uma entidade ou entre uma operação e um símbolo.  Estática: ocorre em tempo de compilação ou de ligação (linking) e não é mais modificada durante toda a execução do programa.  Dinâmica: é feita em tempo de execução ou pode ser alterada no decorrer da execução do programa.  Aumenta reutilização - diminui a performance
  • 53. 53 Objeto, Classe e Herança  Permitem a definição de hierarquias de abstrações, que facilitam a compreensão  classes agrupam objetos com características iguais  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. 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. 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. 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ÇÃO VÍDEOTECLADO MICROCOMPUTADOR
  • 57. 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 novas funcionalidades
  • 58. 58 Desvantagens da POO  Apropriação:  Problemas com limites nebulosos  Fragilidade  sensível a mudanças de relacionamentos entre as classes chave  Importância fundamental de bom projeto e análise  necessidade de estratégia linera de projeto ao invés da cíclica
  • 59. 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