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 c...
Para que estudar linguagens?
 Desenvolvimento da habilidade em resolver
problemas.
 Capacidade de extrair o máximo da
fu...
O que Estudar?
 Sintaxe: gramática (forma)
 Semântica: significado
 Pragmática (ex.: metodologias)
 Processadores:
com...
Histórico das LP
FORTRAN (FORmula TRANslation)-1956-John
Backus
 muito utilizada no meio técnico-científico
 disponibili...
Histórico das LP
COBOL (COmmon Business Oriented
Language) - 1959
 Código é "English-like"
 Padrão para as aplicações co...
Histórico das LP
ALGOL 60 (ALGorithmic Oriented Language)
 Linguagem algébrica européia
 resolução de problemas científi...
Histórico das LP
LISP (LISt Processing) - 1960 - John
McCartly(MIT)
 Linguagem funcional criada para dar suporte à
pesqui...
Histórico das LP
PL/I (Programming Language I) -IBM
 Incorporou:
 ALGOL 60- estrutura de bloco, de controle e
recursivid...
Histórico das LP
SIMULA 67
 destinada a sistemas e programação de simulações.
 Contribuição: conceito de classe
PASCAL -...
Histórico das LP
PROLOG (PROgramming in LOGic)
 desenvolvida para aplicações de IA Artificial
 baseada em lógica formal
...
Histórico das LP
C - Bell Lab - início dos anos 70
 implementação do UNIX.
 facilidades para a programação em "baixo nív...
Por que tantas linguagens?
13
• Propósitos diferentes
• Avanços tecnológicos
• Interesses comerciais
• Cultura e backgroun...
Escolha de uma LP
 Implementação
 Competência na LP
 Portabilidade
 Sintaxe
 Semântica
 Ambiente de programação
 Mo...
15
O que é um paradigma de
programação?
• Modelo, padrão ou estilo de programação
suportado por linguagens que agrupam cer...
Paradigmas de LP
 Paradigma Imperativo - Computador
 FORTRAN, COBOL, ALGOL 60, APL, BASIC, PL/I, SIMULA
67, ALGOL 68, PA...
O Paradigma Imperativo
 Solução do problema especificada na ótica do
computador
 Programas centrados no conceito de um
e...
Vantagens e Desvantagens -
Imperativo
 Vantagens
- Eficiência (embute modelo de Von
Neumann)
- Modelagem “natural” de apl...
O Paradigma Funcional
 Programas são funções que descrevem
uma relação explícita e precisa entre E/S
 Estilo declarativo...
Vantagens e Desvantagens -
Funcional
 Vantagens
- Manipulação de programas mais
simples:
- Prova de propriedades
- Transf...
Exemplo LP Funcional -
Scheme
 Função que Calcula o Máximo de uma
lista
(define maximo
(lambda (l)
(if (null? (cdr l)) ; ...
O Paradigma Lógico
 Programas são relações entre E/S
 Estilo declarativo, como no paradigma
funcional
 Na prática, incl...
Vantagens e Desvantagens - Lógico
 Vantagens
Em princípio, todas do paradigma funcional
Permite concepção da aplicação em...
Exemplo Lp Lógico - Prolog
Verifica se uma palavra é palíndroma.
Exemplo de utilização: inicio(madam).
% entrada e saida d...
O Paradigma Orientado a Objetos
 Pode ser visto como uma subclassificacão do
imperativo
 A diferença é mais de metodolog...
Vantagens e Desvantagens - OO
 Vantagens
Todas as do estilo imperativo
Classes estimulam projeto centrado em
dados: modul...
Tendência: integração de
paradigmas
 A principal vantagem é combinar
facilidades de mais de um paradigma,
aumentando o do...
Outras Classificações
 Linguagens de 1a., 2a., 3a., 4a. e
5a. gerações
 Programação seqüencial versus
concorrente
 Prog...
29
Uma Visão histórica
1950..................................................................................................
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çã...
32
Abstração de dados
 Tipo Abstrato de Dados (TAD)
 o que constitui o tipo
 as operações aplicáveis
 representação
 ...
33
Abstração de dados
 TAD pode ser usado sem qualquer
conhecimento sobre sua implementação.
 Vantagens:
 Independência...
34
Abstração - Exemplo
 Plantação de alface hidropônico
 Sistema para monitorar as condições
 Elemento central:
 senso...
35
Abstração - Exemplo
 Elemento SensorTemp
 Parte Públicas:
 SensorTemp(pos) - cria o sensor
 ~SensorTemp() - destroi...
36
Objetos
 Entidade autônoma que
combina a
representação da
informação (estruturas
de dados) e sua
manipulação
(procedim...
37
Objetos
 Fácil identificar objetos
 Exemplo: Objetos do tipo empregado
 identidade única: CPF.
 Atributos:
 endere...
38
Objetos
 Vantagens:
 Modularidade: a unidade de programa que
implementa um objeto pode ser escrita e
mantida sem gera...
39
Mensagens
 Aplicação OO: vários objetos interagindo
 fornece grande funcionalidade e comportamentos complexos.
 Inte...
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é...
41
Troca de Mensagens - Exemplo 2
Realização de uma operação aritmética
(SmallTalk)
Adição é realizada enviando uma mensag...
42
Método
 implementa algum aspecto do
comportamento do objeto.
 uma função ou procedimento que é
definido para o objeto...
43
Construtores e Destrutores
 Construtores:
 usados para criar e inicializar objetos novos.
 Destrutores:
 usados par...
44
Classes
 Objetos com estrutura e comportamento
idênticos são descritos como pertencendo a
uma classe
 Provê a informa...
45
Classes
 Objeto -- variável
 Classe - tipo
 Objeto criado a
partir de uma
classe: instância
 Cada instância
pertenc...
46
Herança
 Permite a reutilização das propriedades de uma
classe na definição de outra.
 característica única de lingua...
47
Herança
 classe Ponto:
 herança da classe Posição
 variável de instância Visivel
 métodos para desenhar , apagar e
...
48
Herança
 se B é subclasse de A:
 objetos da classe B suportam todas as operações
suportadas por objetos da classe A, ...
49
Herança
 Pode afetar o encapsulamento de
informação.
 Clientes:
 requisitam operações sobre instâncias da classe
 i...
50
Herança Múltipla
 subclasse pode herdar características de
diversas superclasses
 Exemplo: classe Janela
DefineAltura...
51
Polimorfismo
 Vários objetos respondem à uma mesma
mensagem, cada um a seu próprio modo
Solução sem polimorfismo
Funçã...
52
Polimorfismo
 útil na compreensão de programas
 sobrecarga de função ou de operadores
 polimorfismo paramétrico
 li...
53
Objeto, Classe e Herança
 Permitem a definição de hierarquias de
abstrações, que facilitam a compreensão
 classes agr...
54
Classificação/Instanciação
 Classificação de objetos em classes
 definição de propriedades e comportamentos
comuns a ...
55
Generalização/Especialização
 Abstração de uma classe mais genérica
 Subclasses possuem todas as propriedades
das cla...
56
Composição/Decomposição
 objetos compostos pela agregação de
outros objetos ou componentes
 instâncias (objetos) de u...
57
Vantagens POO
 Reutilização de código: maior vantagem
 Escalabilidade: capacidade de crescimento
 Encapsulamento: fa...
58
Desvantagens da POO
 Apropriação:
 Problemas com limites nebulosos
 Fragilidade
 sensível a mudanças de relacioname...
59
Estilo POO
 Modularidade:
 Suporte a generalização/especialização
 Visão balanceada entre dados e processos
 Compos...
Próximos SlideShares
Carregando em…5
×

1.1.paradigmas

220 visualizações

Publicada em

Livro sobre paradígmas

Publicada em: Internet
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
220
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

1.1.paradigmas

  1. 1. Paradigmas de Programação Programação Orientada a Objetos Java Prof. Anselmo Cardoso Paiva Prof. Geraldo Braz Junior
  2. 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. 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. 4. O que Estudar?  Sintaxe: gramática (forma)  Semântica: significado  Pragmática (ex.: metodologias)  Processadores: compiladores, interpretadores, editores, ambientes visuais ... 4
  5. 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. 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. 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. 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. 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. 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. 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. 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. 13. Por que tantas linguagens? 13 • Propósitos diferentes • Avanços tecnológicos • Interesses comerciais • Cultura e background científico
  14. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  30. 30. Paradigma de Orientação a Objetos
  31. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×