alto contraste

Propaganda
Programação Orientada a
Objetos
quarta-feira, 2 de maio de 2012
• Conceitos
• Orientação
a Objetos: Conceito e
Vantagens
• Metodologias
• Orientação
• Classes
quarta-feira, 2 de maio de 2012
da OO
a Objetos
Introdução
• Paradigmas de Programação
• Programação Estruturada
• Procedimentos e Funções. Ex.: C e Pascal.
• Compostos de: seqüência, decisão e
iteração
•
Programação Orientada a Eventos
• RAD.
Ex: Delphi e Visual Studio.
• Programação Orientada à Objetos
• Foco em classes (atributos e métodos)
comunicação entre classes.
quarta-feira, 2 de maio de 2012
e
Introdução
• Programação funcional
• Lisp
• Programação Orientado
• Java(AspectJ)
quarta-feira, 2 de maio de 2012
a aspecto
Conceito
• Programação
Orientada a Objetos é um
paradigma de Análise, Projeto e
Programação que é baseado na relação
entre objetos que irão compor o
sistema.
quarta-feira, 2 de maio de 2012
Conceitos
• Linguagens
OO: C++, Java, C# , ObjectPascal, Ruby, Python.
• Reuso de código
• Encapsulamento
• Acoplamento
quarta-feira, 2 de maio de 2012
Conceitos
• Análise:
• Investigar o que tem de ser
• Projeto:
• Planejar como será feito.
• Implementação:
• Colocar a mão na massa.
quarta-feira, 2 de maio de 2012
feito.
Objeto
•O
objeto é uma representação
de algo que seja real ou
abstrato que contenha traços
bem definidos.
quarta-feira, 2 de maio de 2012
Vantagens
•Facilidade de manutenção.
•Reusabilidade.
•Simplicidade.
•Agilidade.
quarta-feira, 2 de maio de 2012
Principais Elementos
• Classes
• Defini a estrutura do objeto
• Objetos contém:
• Atributos(Definição de seus traços,
características)
• Métodos - “Comportamentos”
• Construtores - Criar um objeto
quarta-feira, 2 de maio de 2012
Exemplo de Objetos
• Objetos:
Mesa, Cadeira, Pessoa, Carro,
Conta bancaria, Clima
• E os traços??
• Como classificar objetos:
• Objetos com os mesmo traços
recebem a mesma classificação.
• Os
objetos podem ser concretos ou
abstrato:
• Concretos: pessoa, carro,
• Abstratos: conta, música
quarta-feira, 2 de maio de 2012
casa
Linguagem Java
• Poderosa
• Abrangente
• Híbrida - Compilada / Interpretada
• Funciona em qualquer equipamento virtuais
quarta-feira, 2 de maio de 2012
Máquinas
Linguagem Java
• Ciclo de funcionamento:
• código fonte --> compilador
--> bytecode(saída)
--> execução(máquina virtual)
quarta-feira, 2 de maio de 2012
1.02
JavaJava1.02
1996
250 classes
Lenta.
Java 5.0 (versões 1.5 e
Java Java
1.22 (versões
- 1.41.2 - 1.4)
Java 1.5
posteriores)
1998,2000,2002
2004
Java 6 - 2006
Java 7 - 2011
Atualmente esta na versão Java 1.7 ou Java 7
Nome e logotipo
in teressante s.
Divertida de u sar .
Muito s erros . Os
applets são o
destaque.
Java 1.1
Java
1.1
1997
500 classes
2.300 classes
Um pouco ma is rápida.
MUito mais rápida.
Mais recursos , mais
amigável. Começando a
se tornar muito
popular. Código de GUI
mais adequado .
Po de (em al gumas situações)
ser exec ut ada e m velocidades
condi zentes . Pro fi ssion al,
poderosa. Vem e m três
versões: Micro Edition
(J2ME), Standard Edit ion
(J 2SE) e Enterprise Edition
.(J2EE). Torna - se a linguagem
preferida para novos
ap li cativos empresari ai s
(pr incipa lmente os baseados
na Web) e móvei s .
3.500 classes
Mais recursos, mais fácil de
desenvolver.
Além d e ad ici ona r mais de n;lil
clas s es comp l ement ares, a Java
5. O (conhecida como "Tiger'j )
acre s cento u alterações
sign if icativas à própria
l ingu agem, tornando-a maiS j fáCil
(pe lo menos em teoria) p ar l os
prog r a madores e f ornecendo novo s
recu r sos que eram populare; em
ou tr a s linguagens.
( quarta-feira,
( ( (' 2( de( maio
( de
( 2012
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (' ( ( ( ( \ ( ;
Problemática
• Era
uma vez em uma loja de softwares,
dois programadores que receberam as
mesmas especificações e a ordem
"construam". O Gerente de Projetos Muito
Chato forçou os dois codificadores a
competirem, prometendo que quem acabasse
primeiro ganharia uma daquelas modernas
cadeiras AeronTM que todo mundo no Vale
de Santa Clara tem.
quarta-feira, 2 de maio de 2012
quarta-feira, 2 de maio de 2012
As especificações
t
te
m.
da
r?
".
m
quarta-feira, 2 de maio de 2012
• Tanto
Larry, o programador de
procedimentos, quanto Brad, o adepto
da 0 0 , sabiam que isso seria fácil.
quarta-feira, 2 de maio de 2012
Larry
• Como
já tinha feito milhares de vezes, Larry
começou a escrever seus Procedimentos
Importantes. Ele criou rotate e playSound sem
demora.
• rotate(shapeNum)
{ faz a
• playSound(shapeNum) {usa
forma girar 360' }
shapeNum para
pesquisar que som AIF reproduzir e executá-lo}
quarta-feira, 2 de maio de 2012
envolvidos?"
aro que ele
o evento de Clicar.
ens, portanto, se
ra saber como Brad e
resposta à
"
Brad
A cadeira
laptopclasses
de Brad para
dentro representar
do restauranteos
• BradNocriou
r
elementos
;1
ou a
Brad criou uma classe para cada uma das três formas
gráficos:
ou rotate e
Square
11
II có Circle
rotate (
playSo1.;
o
}
/I có
-1
Triangle
r ota te ()
{
II código pa ra gira r um triângul o
playSou
}
li
II de
}
I
IJ
}
/I có
'"'-I
I;
}
II có
II de
. J
11
ro·ta t e
p laySound ()
{
fi código pa ra rep ro duzi r o arquivo AIF
!I
I / de um triângulo
}
quarta-feira, 2 de maio de 2012
_.
I
_J
fi código pa ra rep ro duzi r o arquivo AIF
I / de um triângulo
_J
Alteração na _. especificação
}
e
ixo
temos
á
eba na
d U\:n a am
, formatO e
f :nas.
Havera o
as outras on · ba ela
. to CO\:n , .
a ame '
tela, .lun
uár'o ClICar n
_e
Quando o us s outras formas
bif
, O\:nO a
. de SO\:n .
<Tirara c
, .,... arquIVO
'
d\rz.i.ra UI"
repro
t;>
rry,
o. "E
e
.
!I
da
o que foi adicionado às especificações
quarta-feira, 2 de maio de 2012
Larry
• Larry
teve de rescrever o código para tocar a
música
quarta-feira, 2 de maio de 2012
classes e objetos
Brad
Usando o laptop de Brad na praia
va
um
•
Brad sorriu, tomou um gole de sua marguerita e criou uma
nova classe . Às vezes o que ele mai s adorava na 00 era não
ser preciso mexer em código que já tivesse sido testado e
Brad
criou
apenas extensibilidade
mais uma ...classe
para
distribuído.
"Flexibilidade,
" ele pensou,
refletindo sobre osabenefícios
da 00.
representar
Amoeba
Amoeba
rotate ()
II c ó digo pa ra girar a ameba
playSound ( )
s
e de
as.
1/ código para repr odu z ir o n ovo
I I a rqui vo .hif de uma a me ba
Brad.
quarta-feira, 2 de maio de 2012
II
I;
de um ponto em uma extremidade, como um ponteiro de relógio .
m Wonderbread™ chamuscado. "Porém, hmmm. Eu poderia apenas
mento de rotação e, em seguida, embutir o código do ponto de
atrapalhará nada." Mas uma voz longínqua em sua mente dizia:
te que as especificações não mudarão novamente?"
Nova Mudança
ba na versa
da
ame
de rotaçao
ponto
d'
de Larry e Bra .
Onde o
' a estar.
deve(1
quarta-feira, 2 de maio de 2012
de rotaçao
da ameba
O
o que as
especificações
esqueceram de
mencionar
adequadamente
Larry
• Teve
de rescrever praticamente todo o
código
quarta-feira, 2 de maio de 2012
testado e compilado das outras partes do programa. Para
fornecer à classe Amoeba um ponto de rotação, ele adicionou
um atributo que todos os objetos Amoeba teriam. Ele
modificou, testou e di stribuiu (com tecnologia sem fio) o
programa revisto apen as durante o show de Bela Fleck.
Brad
Amoeba
in t x point;
int y point;
rotate() (
II c ó dig o para girar a ameba
/ 1 usa n do os pontos x e y
playSound()
II
código para reproduzir o novo
1/ a rqui vo .hi f d e uma ameba
adeira, certo?
quarta-feira, 2 de maio de 2012
iJ
Mas então quem
ganhou a cadeira?
quarta-feira, 2 de maio de 2012
do.
execução, a JVM saberá exatamente que métod
importa. Como a ameba pode fazer algo diferente se ela "herda" sua funcionalidade da
Amoeba gire.
?
Solução detalhada de BRAD
é a última etapa. A classe Amoeba sobrepõe os métodos da classe Shape. Portanto, no tempo de
JVM saberá exatamente que método rotate( ) exec utar quando alguém solicitar que o objeto
.
S
Fiz com que a classe Amoeba sobrepusesse os
métodos rotate( ) e playSound( ) da superclasse
Shape. Sobrepor significa apenas que uma
subclasse redefinirá um de seus métodos herdados
quando precisar alterar ou estender o
comportamento desse método.
Superclasse
Shape
ro ta te ()
(mais abstrata)
Superclasse
(mais abstrata)
Square
Square
.___1
"J
Subclasses
(mais específicas)
---I
Métodos de
sobreposição
da ameba
playSound ( )
Il código de
reprodução
de som
Ilespecífico •
da ameba
.___1
Subclasses
(mais específicas)
o você "diria" a um objeto Amoeba para fazer algo? Não é preciso chamar o procedimento,
- I
étodo, e, em seguida, lhe informar que item girar?
quarta-feira, 2 de maio de 2012
"J
r
ódigo do programa referenciará (chamará) o método rotate( ) no objeto Triangle. O resto do programa não
aberá ou se importará realmente em como o tliângulo o fará. E quando você precisar adicionar algo novo
o programa, apenas criará uma nova classe para o novo tipo de objeto, para que os novos objetos tenham
eu próprio comportamento.
Sei como um objeto Shape
deve se comportar. Sua tarefa é
me informar o que fazer e a
minha é fazer acontecer. Não
o
O
o
você está aqui
quarta-feira, 2 de maio de 2012
!lo--
Classe
• Quando
formos criar uma classe temos
de nos preocupar com duas coisas:
•o
•o
quarta-feira, 2 de maio de 2012
que o OBJETO conhece
que o OBJETO faz
Despertador
carrinhoCompras
a classe,
pense nos objetos
que
serão
criados
h o r a Alarme
con
t
e
údoCarrinho
conhece
modoAl arme
Considere:
ad i c i o narAoCarrinho(
configurarHoraAlarme (
carJtur a1. Ho [CtAlarme ( )
a l a rmeEs!:..iC:1n f i g u rado(
faz
remove rDoCa r r i nho(
passarCai x a ( )
)
s o n e ca ( )
Botão
carrinhoCompras
ce
con t e údoCarrinho
ad i c i onarAoCarrinho(
remove rDoCa r r i nho( )
passarCai x a ( )
quarta-feira, 2 de maio de 2012
conhece
faz
rótul o
cor
con fi g u r arCor ( )
conf i gu rarRó t u l o( )
soltar( )
pressionarNovarnente (
)
Classe
•O
que o OBJETO conhece chamamos
de variáveis de instancia ou atributos
•o
que o OBJETO faz chamamos de
métodos é a parte comportamental
quarta-feira, 2 de maio de 2012
, Aponte seu lápis
Atividade
Preencha com o que um objeto televisão
pode ter que saber e fazer.
Televisão
li
li
variáveis de
instância (estado)
métodos
(comportamento)
I!
quarta-feira, 2 de maio de 2012
Interface
•É
um grupo de métodos sem nenhuma
implementação que dá a liberdade de
se criar elementos que possam se
comunicar e trocar mensagens. Uma
classe em java pode-se utilizar de
várias interfaces ao mesmo tempo.
quarta-feira, 2 de maio de 2012
Exemplo
public interface Veiculo {
boolean ligar();
boolean desligar();
}
public class Carro implements Veiculo{
•
public boolean ligar()
{...}
quarta-feira, 2 de maio de 2012
Herança
• Forma
com que uma classe possa
herdar os comportamentos de outra
classe, não herda os atributos apenas
os métodos. Em java existe apenas a
herança simples.
quarta-feira, 2 de maio de 2012
Exemplo
public abstract class Veiculo {
.....
}
• public class Carro extends Veiculo
{
•
.....
quarta-feira, 2 de maio de 2012
Polimorfismo
• Forma
de abstração em que é possível
utilizar uma classe pai ou interface
como referencia do objeto. Com isso é
possível se utilizar de chamadas
polimorficas sem a necessidade de
identificar qual classe realmente se
esta trabalhando.
quarta-feira, 2 de maio de 2012
Exemplo
public interface Veiculo {
boolean ligar();
boolean desligar();
}
public class Carro implements Veiculo{
•
....
}
• Main{
•
Veiculo c = new Carro();
•
c.ligar();
quarta-feira, 2 de maio de 2012
Exemplo
public abstract class Veiculo {
public boolean ligarVeiculo(){}
public boolean desligarVeiculo(){}
}
public class Carro extends Veiculo{
•
....
}
• Main{
•
Veiculo c = new Carro();
•
c.ligar();
quarta-feira, 2 de maio de 2012
Atividade
• Utilizando se da atividade anterior
(Carro,Motor) cria uma interface
Veiculo com os seguintes métodos:
•
boolean ligar();
•
boolean desligar();
•
boolean andar();
•
boolean parar();
quarta-feira, 2 de maio de 2012
Download