POO Aula 01 PDF

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 41

Programação Orientada a

Objetos

quarta-feira, 2 de maio de 2012


• Conceitos
• Orientação a Objetos: Conceito e
Vantagens

• Metodologias da OO

• Orientação a Objetos

• Classes

quarta-feira, 2 de maio de 2012


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) e
comunicação entre classes.
quarta-feira, 2 de maio de 2012
Introdução

• Programação funcional
• Lisp
• Programação Orientado a aspecto

• Java(AspectJ)

quarta-feira, 2 de maio de 2012


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# , Object-


Pascal, Ruby, Python.

• Reuso de código
• Encapsulamento
• Acoplamento

quarta-feira, 2 de maio de 2012


Conceitos
• Análise:
• Investigar o que tem de ser feito.

• Projeto:
• Planejar como será feito.
• Implementação:
• Colocar a mão na massa.

quarta-feira, 2 de maio de 2012


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, casa

• Abstratos: conta, música


quarta-feira, 2 de maio de 2012
Linguagem Java

• Poderosa
• Abrangente
• Híbrida - Compilada / Interpretada
• Funciona em qualquer equipamento - Máquinas
virtuais

quarta-feira, 2 de maio de 2012


Linguagem Java

• Ciclo de funcionamento:
• código fonte --> compilador --> bytecode(saída)
--> execução(máquina virtual)

quarta-feira, 2 de maio de 2012


JavaJava1.02
1.02 Java 1.1
Java Java
Java 1.1 1.22 (versões
- 1.41.2 - 1.4) Java 1.5
Java 5.0 (versões 1.5 e
posteriores)

1996 1997
1998,2000,2002 2004
250 classes 500 classes 2.300 classes
3.500 classes
Lenta. Um pouco ma is rápida. MUito mais rápida.
Mais recursos, mais fácil de

Java 6 - 2006
Nome e logotipo Mais recursos , mais Po de (em al gumas situações) desenvolver.
in teressante s. amigável. Começando a ser exec ut ada e m velocidades
Divertida de u sar . se tornar muito condi zentes . Pro fi ssion al, Além d e ad ici ona r mais de n;lil
Muito s erros . Os
applets são o
destaque.
Java 7 - 2011
popular. Código de GUI
mais adequado .
poderosa. Vem e m três
versões: Micro Edition
(J2ME), Standard Edit ion
clas s es comp l ement ares, a Java
5. O (conhecida como "Tiger'j )
acre s cento u alterações

Atualmente esta na versão Java 1.7 ou Java 7


(J 2SE) e Enterprise Edition
.(J2EE). Torna - se a linguagem
preferida para novos
sign if icativas à própria
l ingu agem, tornando-a maiS j fáCil
(pe lo menos em teoria) p ar l os
ap li cativos empresari ai s prog r a madores e f ornecendo novo s
(pr incipa lmente os baseados recu r sos que eram populare; em
na Web) e móvei s . 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

te
t
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 forma girar 360' }

• playSound(shapeNum) {usa 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
"
r I
• BradNocriou
laptopclasses
de Brad para
dentro representar
do restauranteos elementos
ou a gráficos:
ou rotate e
Brad criou uma classe para cada uma das três formas

Square
11
;1 . J
ro·ta t e 11
II có Circle
-1
} I; '"'-I
rotate ( I
playSo1.; /I có Triangle
IJ
II có }
o II de r ota te () {
} playSou II código pa ra gira r um triângul o
/I có }
II de
p laySound () {
li
}
fi código pa ra rep ro duzi r o arquivo AIF
!I
I / de um triângulo
}
_. _J
quarta-feira, 2 de maio de 2012
fi código pa ra rep ro duzi r o arquivo AIF
!I
I / de um triângulo

Alteração na _. especificação
_J
}

e eba na
d U\:n a am
ixo , 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 '
temos t;>
repro
d\rz.i.ra UI"
á

rry,
o. "E

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

va
Usando o laptop de Brad na praia
Brad
Brad sorriu, tomou um gole de sua marguerita e criou uma
um 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
distribuído. apenas extensibilidade
"Flexibilidade, mais uma ...classe para
" ele pensou,
representar
refletindo sobre osabenefícios
Amoeba da 00.

Amoeba II
rotate ()
II c ó digo pa ra girar a ameba
I;

playSound ( )
s 1/ código para repr odu z ir o n ovo
I I a rqui vo .hif de uma a me ba
e de
as.

Brad.
quarta-feira, 2 de maio de 2012
de um ponto em uma extremidade, como um ponteiro de relógio .
m Wonderbread™ chamuscado. "Porém, hmmm. Eu poderia apenas

Nova Mudança
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?"

ba na versa
da ame
de rotaçao
ponto d'
de Larry e Bra .

da ameba
de rotaçao o que as
Onde o O especificações
' a estar. esqueceram de
deve(1 mencionar
adequadamente

quarta-feira, 2 de maio de 2012


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
Brad
modificou, testou e di stribuiu (com tecnologia sem fio) o
programa revisto apen as durante o show de Bela Fleck.

Amoeba

in t x point;
int y point;
rotate() (
iJ
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
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 Shape. Sobrepor significa apenas que uma r
subclasse redefinirá um de seus métodos herdados
ro ta te () quando precisar alterar ou estender o
Superclasse
comportamento desse método.

Superclasse (mais abstrata)


(mais abstrata)

Square Square
.___1

"J Métodos de
sobreposição

Subclasses
---I da ameba
playSound ( )
(mais específicas) Il código de
reprodução
de som Subclasses
.___1
Ilespecífico • (mais específicas)
da ameba

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

você está aqui !lo--

quarta-feira, 2 de maio de 2012


Classe

• Quando formos criar uma classe temos


de nos preocupar com duas coisas:

•o que o OBJETO conhece

•o que o OBJETO faz

quarta-feira, 2 de maio de 2012


Despertador carrinhoCompras
a classe, pense nos objetos
h o r a Alarme que
conhece con
serão
t e
criados
údoCarrinho
modoAl arme
Considere: ad i c i o narAoCarrinho(
configurarHoraAlarme ( remove rDoCa r r i nho( )
carJtur a1. Ho [CtAlarme ( ) passarCai x a ( )
a l a rmeEs!:..iC:1n f i g u rado( faz
s o n e ca ( )

carrinhoCompras Botão

con t e údoCarrinho conhece rótul o


ce
cor
ad i c i onarAoCarrinho(
remove rDoCa r r i nho( ) con fi g u r arCor ( )
passarCai x a ( ) faz conf i gu rarRó t u l o( )
soltar( )
pressionarNovarnente ( )

quarta-feira, 2 de maio de 2012


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.

li
Televisão

variáveis de

li 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

Você também pode gostar