professor: leandro luque. paradigma procedural dados procedimento 1 procedimento 2procedimento 3...
TRANSCRIPT
Paradigma Orientado a Objetos
Professor: Leandro Luque
Como pensamos?
Paradigma procedural
Dados
Procedimento 1 Procedimento 2
Procedimento 3
Quais são os procedimentos/funções necessários para resolver o problema?Quais são os dados necessários para resolver o problema?
Programas modularizados em procedimentos e funções
Como pensamos?Exemplo Cálculo de média de alunos
Notas
Ler notas doaluno
Calcular média
Exibir média doaluno
program media;uses wincrt;
var notas: Array[1..4] of real; media: real;
procedure lerNotas();var cont: integer;begin for cont:=1 to 4 do begin write(‘Nota ', cont, ': '); readln(notas[cont]); end;end;
procedure calcularMedia();var contador: integer;begin media := 0; for contador:=1 to 4 do begin media := media + notas[contador] end; media := media / 4; end;
procedure exibirMedia();begin writeln('A média do aluno é ', media);end;
begin lerNotas(); calcularMedia(); exibirMedia();end.
Mudando de ParadigmaProblema
SoluçãoSolução
Perspectivas de Estudo do Paradigma Orientado a Objetos (OO)
História/evolução dos conceitos; Análise isolada dos conceitos; Comparação com o paradigma
procedural;
História do Paradigma Orientado a Objetos e seus conceitos
Simula 67 Linguagem de propósito geral; Suporte a simulação de sistemas;
Simulação de fluxos de barcosno mar norueguês
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Mapeamento problema -> solução
Procedimento
Procedimento
ComplexidadeCrescente em
Função do Númerode Navios
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Exemplo simples de simulação: Lançamento de uma bola em uma sala.
Onde a bola irá parar?
Dados
Verificarcolisão com
o chão
Verificarcolisão com
a cadeira
Verificarcolisão com
a parede
Moverbola
Alterarmovimento
da bola
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Dados
Verificarcolisão com
o chão
Verificarcolisão coma cadeira 1
Verificarcolisão com
a parede
Alterar aposição da
Bola 1
Verificarcolisão coma cadeira 2
Alterar aposição da
Bola 2
... ...
...
...
......
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Gestão da complexidade: dividir para conquistar
Bola
Cadeira
Chão
Parede
Mapeamento
direto Dados
Comportamento
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Quais são as características e comportamento desses objetos?
Bola
Características (dados): elasticidade,pressão, resistência, x, y, z, rotacao,velocidade, aceleracao, ...
Comportamento (procedimentos):mover, encher, esvaziar, ...
elasticidade
pressão
resistência...
mov
erencher
alterarMovim
ento
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Quais são as características e comportamento desses objetos?
Cadeira
Características (dados): material,pernas, cor, resistência, ...
Comportamento (procedimentos):mover, subirAssento, descerAssento
material
pernas
resistência...
mov
errecuperarPosicao
recResistencia
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Interação entre objetos:
mov
er
encher
alterarMovimento
Bola
Chão
Parede
Cadeira
mov
er
recResistencia
recuperarPosicao
recResistencia
recResistencia
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Diferença na abordagem proposta:
Dados
Procedimento 1 Procedimento 2
Procedimento 3
dados
proc
edim
ento
1
procedimento3
procedimento2
Permite o encapsulamento dos dados
acoplamento
Facilita a gestão da complexidade
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Como definir os objetos em programação?
Especificar as características e métodos para cada objeto?
Captar o que há de comum a classes de objetos
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Classe: Abstração do que há de comum (em
termos de características e comportamento) a um conjunto de objetos.
Características (atributos): velocidade, potência, numPortas, ...Comportamento (métodos): acelerar, frear, ligar, desligar, ...
História do Paradigma Orientado a Objetos e seus conceitos (cont.)
Classe:
Características (atributos): idade, altura,peso, ...Comportamento (métodos): mover,alimentar, descansar ...
Mamífero
Formalização de Conceitos
Paradigma orientado a objetos:
Um programa pode ser entendido como uma coleção de objetos com suas características e comportamento, especificados por classes, que interagem para a produção do resultado esperado.
Formalização de Conceitos (cont.)
Classes:
Especificam o que há de comum entre um conjunto de objetos.
Podem ser especializações de outras classes (relacionamento de herança – forma de reuso);
Formalização de Conceitos (cont.)
Objeto: Abstração do domínio do problema ou
da solução. É conhecido como instância de classe;
Características (atributos): velocidade, potência, numPortas, ...Comportamento (métodos): acelerar, frear, ligar, desligar, ...
Um carro qualquer é umObjeto da classe dos carrospotência = 80numPortas = 4 ...
Formalização de Conceitos (cont.)
Objeto: Possui:
▪ Identidade. dois objetos são diferentes mesmo que todos os seus dados sejam iguais
▪ dados que representam suas características e são chamados de atributos;
▪ procedimentos que implementam seu comportamento e são chamados de métodos;
Formalização de Conceitos (cont.) Atributos: dados que representam as
características de objetos;
Métodos: operações (procedimentos) que implementam o comportamento de objetos Podem receber parâmetros e retornar valores; Ao conjunto composto por nome do método +
parâmetros dá-se o nome de assinatura do método
Uma classe pode ter vários métodos com o mesmo nome, mas quantidade ou tipos de parâmetros diferentes (polimorfismo de sobrecarga);
Uma classe especializada pode redefinir um método de uma classe mais genérica (polimorfismo de inclusão);
Formalização de Conceitos (cont.) Mensagens:
Interação entre diferentes objetos.
Exemplo:▪ Objeto de carro interage com objeto da
estrada enquanto anda nela;▪ Objeto de cliente interage com objeto de
produto para conhecer suas características;
Formalização de Conceitos (cont.)
Classe e Objeto: Receita de bolo
4 ovos 2 xícaras de açúcar 3 xícaras de farinha de trigo 1 copo de suco de laranja ( 250ml) 1 colher de sopa de fermento em pó ...
Bolos diferentes
Representação de classes e objetos na UML
Classe
CorsaDoJoao : Carropotencia = 76numeroPortas = 5dataFabricacao = 10/12/2008
Objetos
FuscaDoJuscelino : Carropotencia = 54numeroPortas = 3dataFabricacao = 07/06/1969
Carropotencia : doublenumeroPortas : intdataFabricacao : Date
Carro()ligar()desligar()trocarMarcha()
Nome da classe
Atributos
MétodosNome do objeto Classe
Codificação de classes com Java Classe
CorsaDoJoao : Carropotencia = 76numeroPortas = 5dataFabricacao = 10/12/2008
Objetos
FuscaDoJuscelino : Carropotencia = 54numeroPortas = 3dataFabricacao = 07/06/1969
class Carro {
double potencia; int numeroPortas; java.util.Date dataFabricacao;
Carro(double p, int numP, String d) { potencia = p; //...}
void ligar() { // código para ligar o carro. }
void desligar() { // código para desligar o carro. }
void trocarMarcha() { // código para trocar a marcha do carro. }}
Carro FuscaDoJuscelino = new Carro(54, 3, “07/06/1969”);
Carro FuscaDoJoao = new Carro(76, 5, “10/12/2008”);
Como identificar classes e objetos?
Pode representar: Coisas tangíveis: livros, pessoas Incidente (evento, ocorrência): CopaDoMundo,
BO Interação (transação, contrato): Venda
Quais objetos estão presentes no domínio do problema e solução?
Procure por substantivos no domínio do problema/solução para identificar classes/objetos e atributos;
Procure por verbos no domínio do problema/solução para identificar métodos;
Como identificar classes e objetos?
Perguntas: Quais dados precisam ser produzidos,
processados ou armazenados? Qual deve ser o comportamento do
sistema? Como posso organizar os dados e
comportamento visando o reuso?
Como identificar classes e objetos?
Exemplo: “Um cliente deve poder consultar e
comprar produtos através da nossa loja virtual. Desejamos poder cadastrar os produtos informando seu código, nome e preço e deixaremos para o cliente a realização do cadastro. No cadastro do cliente, deverá ser informado o cpf, nome, endereço e telefone.”
Leitura Recomendada
A history of object-oriented programming and their impact on program design and software development: http://
jeffsutherland.com/papers/Rans/OOlanguages.pdf
Obrigado!
Ajude a plantar árvores. É possível compensar sua emissão de carbono: www.clickarvore.com.br