59
Paradigmas de Programação Programação Orientada a Objetos Java Prof. Geraldo Braz Junior

Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

Paradigmas de Programação

Programação Orientada a Objetos Java

Prof. Geraldo Braz Junior

Page 2: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 3: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificaçã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

Page 4: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

O que Estudar?

Sintaxe: gramática (forma)

Semântica: significado

Pragmática (ex.: metodologias)

Processadores:

compiladores, interpretadores, editores,

ambientes visuais ...

4

Page 5: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 6: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 7: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 8: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 9: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 10: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 11: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 12: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 13: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

Por que tantas linguagens?

13

• Propósitos diferentes

• Avanços tecnológicos

• Interesses comerciais

• Cultura e background científico

Page 14: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

Escolha de uma LP

Implementação

Competência na LP

Portabilidade

Sintaxe

Semântica

Ambiente de programação

Modelo de computação-

14

Page 15: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 16: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 17: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 18: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 19: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 20: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 21: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 22: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 23: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 24: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 25: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 26: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 27: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 28: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 29: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 30: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

Paradigma de Orientação a Objetos

Page 31: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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.

Page 32: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 33: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 34: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 35: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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...

Page 36: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 37: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 38: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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.

Page 39: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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).

Page 40: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificaçã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."

Page 41: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificaçã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”.

Page 42: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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)

Page 43: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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.

Page 44: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 45: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 46: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificaçã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

Page 47: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 48: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 49: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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.

Page 50: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 51: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 52: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 53: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 54: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificaçã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

Page 55: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A 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

Page 56: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 57: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 58: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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

Page 59: Paradigmas de Programaçãodeinf.ufma.br/~geraldo/paradigmas/1.1.Paradigmas.pdf · 2011. 8. 23. · Paradigmas de Programação Programação Orientada a Objetos Java ... •A classificação

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