Post on 07-Jul-2018
8/18/2019 Apresentação em java e orientado a objetos
1/110
Java e ProgramaçãoOrientada a ObjetosSóstenes P. Gomes
8/18/2019 Apresentação em java e orientado a objetos
2/110
Java
• Green Team liderado por James Gosling (pai do Java)
• Ideia de riar !m interpretador "nio paradispositivos eletr#nios
• $ ideia não de! erto iniialmente mas res!lto! em!m interpretador e onj!nto de tenologias %!elideram o merado de dispositivos móveis
• &ais detal'es em'ttp***.+o!t!be.om*at',v-$+/mg0b2o
http://www.youtube.com/watch?v=WAy9mgEYb6ohttp://www.youtube.com/watch?v=WAy9mgEYb6o
8/18/2019 Apresentação em java e orientado a objetos
3/110
Java
• 4ódigos devem ser ompilados e trans5ormadosde !ma ling!agem alto n6vel para !ma ling!agem%!e o S. O. 7entenda8 (bai9o n6vel)
•
O S. O. por s!a ve: 5a: a inter5ae om os n6veisde m;%!ina in5eriores
•
8/18/2019 Apresentação em java e orientado a objetos
4/110
8/18/2019 Apresentação em java e orientado a objetos
5/110
Java
•
J@& tamb?m gerenia memóriaB t'readsB pil'a dee9e!çãoB et
• $ J@& não 7entende8 a ling!agem JavaB apenas obytecode gerado atrav?s da ompilação•
4ódigo de instr!ção de apenas !m byte
• Cer o b+teode não ? trivial mas ? poss6vel• 4omando javap -c
8/18/2019 Apresentação em java e orientado a objetos
6/110
Java e Orientação a Objetos
•
Eailita a re!tili:ação de ódigo
• Padroni:a o desenvolvimento de apliaçFes 5ailitando odesenvolvimento em e%!ipe
• Eailita o desenvolvimento de apliaçFes de m?dio egrande porteB om m!itos desenvolvedores• Orientação a objetos promove o isolamento entre os
omponentes de !m software
•
Permite interonetividade entre dispositivos eplata5ormas 'eterogneas
8/18/2019 Apresentação em java e orientado a objetos
7/110
Java
•
Trs ediçFes• Java Standard 0dition (Java S0) espei=a diversas $PIs para
apliaçFes desktop e lienteHservidor
• Java 0nterprise 0dition (Java 00) para apliaçFes em larga
esalaB m!ltiamada e *eb servies
• Java &iro 0dition (Java &0) para apliaçFes embaradas
8/18/2019 Apresentação em java e orientado a objetos
8/110
Java
•
!as I0s grat!itas prinipais 0lipse e KetLeans• 0lipse assoiado M IL&
• KetLeans tenologia S!nOrale
8/18/2019 Apresentação em java e orientado a objetos
9/110
Programação Orientada a Objetos (POO)
•
Tem origem no est!do da ognição• $bstração de oneitos do m!ndo real
• Ka omp!taçãoB programas são abstra6dos omo !monj!nto de objetos %!e interagem entre si
• POO 9 PnOO• Cista de omandos a serem e9e!tados
8/18/2019 Apresentação em java e orientado a objetos
10/110
Programação Orientada aObjetos (POO)•
09emplo 09emplares (objetos) da4lasse @entilador
4arater6stias (atrib!tos)• 4or da '?lie• Taman'o• K6veis de veloidade
8/18/2019 Apresentação em java e orientado a objetos
11/110
Programação Orientada aObjetos (POO)•
09emplo Objetos da 4lasse @entilador
$çFes
(m?todos)• Cigar• esligar• $lterar
veloidade
8/18/2019 Apresentação em java e orientado a objetos
12/110
Programação Orientada aObjetos•
&odelagem Orientada a Objetos• 4lasse (oleção de dados om as mesmas arater6stias)• $trib!tos (ampos dos dadosB vari;veis)• &?todos (ação do objeto sobre dadosB rotinas e s!bHrotinas)• Objetos (det?m os dados e o %!e ? neess;rio para interagir
om eles)
8/18/2019 Apresentação em java e orientado a objetos
13/110
Programação Orientada aObjetos
8/18/2019 Apresentação em java e orientado a objetos
14/110
Programação Orientada aObjetos•
E!ion;rioFuncionário
nomedepartamento
salariom!daepartamento()boni=a()
8/18/2019 Apresentação em java e orientado a objetos
15/110
Programação Orientada aObjetos•
Pensar orientado a objetos• Os dados do me! programa devem poss!ir !ma lasse• $s açFes poss6veis sobre os dados devem estar ontidas na
lasse do próprio dado e não em !ma o!tra lasse• Eorça a mod!laridade e isolamento dos dados
• 0naps!lamento
8/18/2019 Apresentação em java e orientado a objetos
16/110
09er6io
•
Ciste atrib!tos e m?todos para as lasses ContaBancária e Cliente do Banco e 5ormali:e om osdiagramas
8/18/2019 Apresentação em java e orientado a objetos
17/110
09er6io
Conta
n!mero int limite salario propriet;rio String saldo do!ble
saa(valor do!ble) boolean deposita (valor do!ble)
Cliente
nome String endereo String p5 String
altera0ndereo(novoString) String
Kome da lasse
8/18/2019 Apresentação em java e orientado a objetos
18/110
0lipse $trib!tosKome da lasse
&?todos
Eim da de=nição da lasse
8/18/2019 Apresentação em java e orientado a objetos
19/110
Tipo do atrib!to
Tipo de retorno m?todo
$rg!mento de entrada do m?tod
8/18/2019 Apresentação em java e orientado a objetos
20/110
Java
8/18/2019 Apresentação em java e orientado a objetos
21/110
Java
•
4omando javac para ompilar
• 09e!tar om o omando java
8/18/2019 Apresentação em java e orientado a objetos
22/110
0lipse
•
I0 %!e 5ailita o desenvolvimento de so5t*ares
• Poss!i ompatibilidade om diversas ling!agens
• @;rios pl!gins grat!itos j; desenvolvidos para e9pandir a
5!nionalidade do 0lipse• Gerador de
8/18/2019 Apresentação em java e orientado a objetos
23/110
8/18/2019 Apresentação em java e orientado a objetos
24/110
8/18/2019 Apresentação em java e orientado a objetos
25/110
8/18/2019 Apresentação em java e orientado a objetos
26/110
8/18/2019 Apresentação em java e orientado a objetos
27/110
09er6io
•
4riar a lasse Conta om se!s respetivos atrib!tos em?todos
8/18/2019 Apresentação em java e orientado a objetos
28/110
09er6io
8/18/2019 Apresentação em java e orientado a objetos
29/110
Java
8/18/2019 Apresentação em java e orientado a objetos
30/110
Java
•
$ lasse e9e!t;vel deve sempre onter esta delaração
8/18/2019 Apresentação em java e orientado a objetos
31/110
Java
•
Palavras reservadas (apenas A/)
8/18/2019 Apresentação em java e orientado a objetos
32/110
Java
• Tipos primitivos
8/18/2019 Apresentação em java e orientado a objetos
33/110
Java
• @ari;veis de re5ernia• Ea:em re5ernia M !ma posição de memória aloada
8/18/2019 Apresentação em java e orientado a objetos
34/110
Java
• Operadores aritm?tios
8/18/2019 Apresentação em java e orientado a objetos
35/110
Java
• Operadores de ig!aldade e relaionais
8/18/2019 Apresentação em java e orientado a objetos
36/110
Java
• Operadores de atrib!ição
8/18/2019 Apresentação em java e orientado a objetos
37/110
Java
• Operadores de inremento e deremento
8/18/2019 Apresentação em java e orientado a objetos
38/110
Java
• 0str!t!ras de seleção
8/18/2019 Apresentação em java e orientado a objetos
39/110
Java
• 0str!t!ras de repetição
0 d i ã
8/18/2019 Apresentação em java e orientado a objetos
40/110
0str!t!ras de repetição
• While
8/18/2019 Apresentação em java e orientado a objetos
41/110
J
8/18/2019 Apresentação em java e orientado a objetos
42/110
Java
• Objetos devem ser instaniados om o operador new
• $trib!tos de objetos podem ser aessados atrav?s dooperador 7 . 8
0 6 i
8/18/2019 Apresentação em java e orientado a objetos
43/110
09er6io
• 4rie !ma lasse om o m?todo main e instanie !m objetoda lasse Conta
• $trib!a valores aos atrib!tos do objeto !tili:ando ooperador 7 . 8
J $PI
8/18/2019 Apresentação em java e orientado a objetos
44/110
Java $PI
• 4onj!nto de paotes de lasses nativas do Java
• 0spei=a e padroni:a a tenologia Java
• Prov sol!çFes para !ma grande variedade de apliaçFesom!ns a desenvolvedores
• 'ttpdos.orale.omjavase2dosapi
8/18/2019 Apresentação em java e orientado a objetos
45/110
09er6io
8/18/2019 Apresentação em java e orientado a objetos
46/110
09er6io
• 4rie !ma seg!nda onta om novos valores
• 4rie !ma tereira onta e 5aça a seg!inte atrib!içãoonta> - onta3Q
•
09iba os dados de onta>Q
09emplo
8/18/2019 Apresentação em java e orientado a objetos
47/110
09emplo
8/18/2019 Apresentação em java e orientado a objetos
48/110
09er6io
8/18/2019 Apresentação em java e orientado a objetos
49/110
09er6io
• S!bstit!a o atrib!to nome (o! dono) por !m objeto do tipo
4liente na lasse 4onta
09er6io
8/18/2019 Apresentação em java e orientado a objetos
50/110
09er6io
09er6io
8/18/2019 Apresentação em java e orientado a objetos
51/110
09er6io
B no 5!ndo=naneiro do banoB %!e rende j!ros de 1 aoms. $ss!mindo %!e todo o rendimento ?dei9ado em depósitoB calclar e e!ibir o saldodo 5!ndo no =m de ada msB para !m per6odo
de 13 meses.
8/18/2019 Apresentação em java e orientado a objetos
52/110
09er6io
4onstr!tores
8/18/2019 Apresentação em java e orientado a objetos
53/110
4onstr!tores
• 4onstr!tores são proedimentos delarados om o mesmo
nome da lasse
• Sempre %!e o operador new ? 'amado ele e9e!ta oonstr!tor da lasse
4onstr!tores
8/18/2019 Apresentação em java e orientado a objetos
54/110
4onstr!toreselaração
class "ome#aClasse$
%%atribtos
"ome#aClasse(paramentros)
$
%%&&&'
%%mtodos
'
Instaniação"ome#aClasse objeto new NomeDaClasse(paramentros);
09er6io
8/18/2019 Apresentação em java e orientado a objetos
55/110
09er6io
• 4rie !m onstr!tor para a lasse 4onta %!e reebe omo
parUmetro !m objeto do tipo 4liente
• O onstr!tor deve atrib!ir ao atrib!to do tipo 4liente nalasse 4onta o objeto reebido omo arg!mento
09er6io
8/18/2019 Apresentação em java e orientado a objetos
56/110
09er6io"o mtodo main&&&
*ar+metro do constrtor
*ar+metro do constrtor
$nin'amento de lasses
8/18/2019 Apresentação em java e orientado a objetos
57/110
$nin'amento de lasses
class A V
int iQ
class B V
void g() V ... WWvoid 5() V ... W
W
&odi=adores de aesso
8/18/2019 Apresentação em java e orientado a objetos
58/110
&odi=adores de aesso
• 09emplo sa%!e aima do limite 1
&odi=adores de aesso
8/18/2019 Apresentação em java e orientado a objetos
59/110
&odi=adores de aesso
• 09emplo sa%!e aima do limite 3
&odi=adores de aesso
8/18/2019 Apresentação em java e orientado a objetos
60/110
&odi=adores de aesso
etters e Setters
8/18/2019 Apresentação em java e orientado a objetos
61/110
etters e Setters
8/18/2019 Apresentação em java e orientado a objetos
62/110
etters e Setters
8/18/2019 Apresentação em java e orientado a objetos
63/110
etters e Setters
8/18/2019 Apresentação em java e orientado a objetos
64/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
65/110
ç
09emplo de sit!açFes arrisadas
• 4'amar !m m?todo de !ma lasse %!e vonão esreve!
•
8/18/2019 Apresentação em java e orientado a objetos
66/110
ç
• &?todos no Java !tili:am e!ceptions para7di:er8 ao ódigo 'amadorB %!e algo r!imaontee! em tempo de e9e!ção
• $s e9eçFes são lançadas ao ódigo'amador
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
67/110
ç
• $ntes de ontin!ar veremos omo a Java@irt!al &a'ine age em !ma sit!açãoinesperada omo divisão por zero e índicede array fora dos limites
• Teste o seg!inte ódigo
8/18/2019 Apresentação em java e orientado a objetos
68/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
69/110
ç
• Repare o m?todo main 'amando o metodo e esse por s!a ve: 'amando o metodo.
• 4ada !m destes m?todos podem ter s!aspróprias vari;veis loais
• O metodo não en9erga as vari;veisdelaradas dentro do main e por a6 em diante
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
70/110
ç
• 4omo o Java e o!tras ling!agens 5a:em isso,
• Toda invoação de m?todo ? empil'ada em!ma estr!t!ra de dados %!e isola a ;rea dememória de ada !m
• X!ando !m m?todo termina (retorna)B elevolta para o m?todo %!e o invoo!
• 4on'eida omo pilha de eecu!ão (stack )
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
71/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
72/110
Res!ltado da e9e!ção
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
73/110
• 0sse o on'eido stacktrace
• Sa6da important6ssima para o programador
•
0m %!al%!er 5or!m o! lista de dis!ssão ?om!m os programadores enviarem j!ntoom !m problema a stacktrace
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
74/110
• X!ando !ma e9eção ? lançada (throw)B a J@& entra
em estado de alerta e veri=a se o m?todo at!altoma alg!ma prea!ção ao tentar e9e!tar o tre'ode ódigo
8/18/2019 Apresentação em java e orientado a objetos
75/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
76/110
• O metodo. não toma nen'!ma prea!ção
• $ J@& para a e9e!ção do m?todo premat!ramenteB e volta !mstackframe
• @eri=a o metodo
• 4omo o metodo tamb?m não toma nen'!ma medida para sepreaver do problema a J@& volta !ma stackframe
• @eri=a o m?todo main
•
4omo o main não poss!i !m tratamento para essa e9eção a J@&? desligada
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
77/110
• $diione !m try%catch em volta do for
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
78/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
79/110
• Retire o tr+at' e olo%!e ele em volta da
'amada do metodo.
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
80/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
81/110
• Retire o try%catch e olo%!e em volta da
'amada do metodo& Rode os ódigos
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
82/110
• @eri=ação de erros em tempo de e9e!ção
• 09er6ios• Eaça !ma veri=ação omo if%else no m?todo sacar()
se e9iste saldo para a retirada do valor desejado.• Retire o retrn do valor do saldo.• $ltere o m?todo sacar() para retornar !m valor do
tipo boolean (tre se o sa%!e 5oi e5et!ado o! false aso ontr;rio).
• 4rie na lasse e9e!t;vel !ma veri=ação parareeber o valor booleano de sacar() e in5ormar aso aoperação não seja poss6vel.
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
83/110
Tratamento de 09eçFes
8/18/2019 Apresentação em java e orientado a objetos
84/110
• Cançamento de e9eçFes om o operador
throw
"a de4niç5o da classe Conta
8/18/2019 Apresentação em java e orientado a objetos
85/110
Classe /!ception da 0*1 2ava
3e!to passado ao constrtor da classe
0
5 bj t d ti l d
8/18/2019 Apresentação em java e orientado a objetos
86/110
"o mtodo main
0 e!ceç5o pe6a no objeto da e!ception lançada
8/18/2019 Apresentação em java e orientado a objetos
87/110
[erança
8/18/2019 Apresentação em java e orientado a objetos
88/110
• $lg!mas lasses poss!em arater6stias em om!m•
Kome• 4p5 • Sal;rio• Reebem boni=ação
[erança
8/18/2019 Apresentação em java e orientado a objetos
89/110
[erança
8/18/2019 Apresentação em java e orientado a objetos
90/110
[erança
8/18/2019 Apresentação em java e orientado a objetos
91/110
Reesrita de m?todos
8/18/2019 Apresentação em java e orientado a objetos
92/110
Reesrita de m?todos
8/18/2019 Apresentação em java e orientado a objetos
93/110
Polimor=smo
8/18/2019 Apresentação em java e orientado a objetos
94/110
Polimor=smo
8/18/2019 Apresentação em java e orientado a objetos
95/110
Sobrearga de m?todos
8/18/2019 Apresentação em java e orientado a objetos
96/110
4lasses $bstratas
8/18/2019 Apresentação em java e orientado a objetos
97/110
09er6ios
8/18/2019 Apresentação em java e orientado a objetos
98/110
• Pol6gonos reg!lares
09er6ios
8/18/2019 Apresentação em java e orientado a objetos
99/110
• 4ada pol6gono reg!lar pode ser deomposto em
triUng!losB se insrito em !ma ir!n5ernia
09er6ios
8/18/2019 Apresentação em java e orientado a objetos
100/110
• Para al!lar a ;rea A deste pol6gono reg!larB basta 5a:er
p - n"m. de lados \ tam. dos lados
09er6ios
O 6 d 6 l
8/18/2019 Apresentação em java e orientado a objetos
101/110
• O per6metro do 6r!lo
p - 3\a\π• ]rea do 6r!lo$ - π\a3
a - raio
8/18/2019 Apresentação em java e orientado a objetos
102/110
09er6ios
& d l i l t li ã t b l'
8/18/2019 Apresentação em java e orientado a objetos
103/110
&odelar e implementar !ma apliação %!e trabal'a om
d!as formas "eom#tricas polí"onos re"ulares ecírculos. $ apliação deve permitir o ;l!lo da ;rea e doper6metro de ambas as 5ormas geom?trias.•
8/18/2019 Apresentação em java e orientado a objetos
104/110
09er6ios
8/18/2019 Apresentação em java e orientado a objetos
105/110
O per6metro do 6r!lo
p - 3\a\π]rea do 6r!lo$ - π\a3
a - raio
p - n"m. de lados \ tam. dos lados
8/18/2019 Apresentação em java e orientado a objetos
106/110
8/18/2019 Apresentação em java e orientado a objetos
107/110
8/18/2019 Apresentação em java e orientado a objetos
108/110
8/18/2019 Apresentação em java e orientado a objetos
109/110
8/18/2019 Apresentação em java e orientado a objetos
110/110