Upload
ronald
View
229
Download
0
Embed Size (px)
Citation preview
8/17/2019 Aula de Java
1/57
Introdução à Orientação a Objetos
Prof. Ricardo Linden
8/17/2019 Aula de Java
2/57
História das LPOO
• Simula 67: Encapulamento em uma de!inição de "cla#• Smalltal$-%&: 'ero( PA)*: Primeira linguagem +erdadeiramente
orientada a objeto ,Alan a./
• *00: Primeira linguagem OO amplamente aceita ,inicialmente eraapena um pr-proceador/
• *00 Ada34 5odula- *OS: acrecentaram orientação a objeto aetrutura pr-e(itente
• 8a+a: 5odelo de objeto deri+ado do *00 impli!icado emel9orado
8/17/2019 Aula de Java
3/57
Programação OO X Procedural
• A orientação a objeto muda o !oco da programação do algoritmo para a etrutura de dado: A organi;ação lue a ele ão aplicada
"?ipo de dado# agora et@ embutido no conceito de "clae#
5ai perto da !orma como penamo no "mundo real#
8/17/2019 Aula de Java
4/57
Conceitos !sicos da Orientação a Objetos
Para podermo começar a noa aula n
8/17/2019 Aula de Java
5/57
Objeto
• m pacote de o!t=are >ue contm uma coleção de procedimentoe dado relacionadoF
• m objeto repreenta um item unidade ou entidade ,real ou
abtrata/ indi+idualmente epar@+el com um papel bem de!inidono domGnio do problemaF
• m objeto como um ubtanti+o pode er uma peoa local ouobjeto baicamente >ual>uer conceito >ue eja aplic@+el ao
projeto do itemaF
8/17/2019 Aula de Java
6/57
Classe
• m padrão >ue de!ine o mtodo e caracterGtica >ue erãoincluGdo em um tipo particular de objetoF
• ma clae uma de!inição geral do atributo e mtodo deum conjunto de objetoF
• E(emplo: Cliente, Veículo, Conta Corrente, Documento, Reserva
• *ada uma deta clae repreenta uma rie de caracterGticacomun:
dados, como placa do veículo ações, como ligar o veículo
8/17/2019 Aula de Java
7/57
Inst"ncia
• Outro nome para um objeto >ue pertença a uma clae particularF
• Huando uma aplicação et@ e(ecutando objeto ão intanciadode uma clae e tornam-e então intCncia deta claeF
• E(emplo- Ticket No. 00-!"#$ repreenta um objeto ,intCncia/ da clae%Reserva&.
- %'eu (us)uin*a& repreenta uma intCncia da clae %Veículo&
8/17/2019 Aula de Java
8/57
#$todo
• m procedimentoI!unção dentro de um objetoF• 5todo ão açJe >ue uma clae ou objeto !a; e incluem a
l
8/17/2019 Aula de Java
9/57
%tributos &s. #$todos
• Atributo de!inem o dado en>uanto o mtodo de!inem a!uncionalidadeF
• Atributo ão de!inido por eu nome e tipo ,por e(emplointeger, string, date/F
• 5todo ão de!inido ecre+endo o c
8/17/2019 Aula de Java
10/57
'nca(sulamento
• ma tcnica no >uai o dado etão encapulado junto comeu procedimento correpondente
• Encapulamento econde tanto o mtodo >uanto o atributo domundo e(teriorF
• Kiibilidade: Public Pri+ate Protected e Pac$age-le+elF Pri+ate: Somente membro da clae podem acear a propriedadeImtodo
Protected: Somente membro da clae e ubclae ,clae decendente/ podem acear a propriedadeImtodo
Public: ?oda a clae podem acear a propriedadeImtodo Pac$age e+el : ?odo a clae do memo pac$age coneguem acear a
propriedadeImtodo
Kamo dicutir mai detal9adamente mai L !rente
8/17/2019 Aula de Java
11/57
#ensagem
• m inal >ue um objeto manda para outro >ue pede >ue o objeto >uerecebe o inal e(ecute um de eu mtodoF
• *omo reultado do encapulamento mandar menagen e torna o
mecanimo de comunicação entre objeto >ue interagemF• m !ormato geral de menagem tem o eguinte !ormato:+ect.mtodo/parmetros1
• E(emplo: in+oiceFcalcular?otal , /
8/17/2019 Aula de Java
12/57
)ub*Classe
• ma clae >ue um cao epecial de outra claeF
• Sub-clae tambm con9ecida como clae !il9a en>uanto >ue auper-clae tambm c9amada de clae pai ou mãeF
• Sub-clae ão epeciali;açJe da uper-clae e ão criada +ia*erança
• E(emplo:
m pediata um cao epecial de mdico
m carro um cao epecial de +eGculoF
8/17/2019 Aula de Java
13/57
Herança
• Em OO e(ite um relacionamento "B-a# entre clae E(emplo : aluno-oF-perGodo i-a aluno i-a peoa
• *lae deri+ada ão c9amada de ubclae ,memo >ue normalmente ejammaiore/
• Pode 9a+er 9erança imple e mMltiplia• *lae bae abtrata:
*lae não tNm intCncia reai ,objeto/ Subclae tNm >ue implementar algun mtodo E(F : clae +eGculoautomotor com o mtodo abtrato ligarF ão e(item objeto
deta clae >ue uma clae bae abtrataF A clae carro e moto 9erdam a propriedade deta clae e implementam o mtodo ligarF
8/17/2019 Aula de Java
14/57
Hierar+uia de Classes
• Classes (odem ser organi,adas em -ierar+uias de forma+ue classes mais es(ecficas -erdem m$todos de classesmais abstratas
• Qiagrama de 9ierar>uia de clae
*lae: *adeira
ubclae
*adeira de Ecrit
8/17/2019 Aula de Java
15/57
%bstração
• o proceo de capturar o comportamento eencial ecaracterGtica e coloc@-la de uma !orma con+eniente paraorgani;ar a 9ierar>uia de claeF
• E(emplo: KeGculo ,Sub-clae: ?erretre 5arin9o e Areo/
• *lae abtrata nunca ão intanciada QecorrNncia da ua nature;a genrica
E(emplo : ada um "+eGculo# genericamente ma im um +eGculo
terrete marin9o ou areoF
8/17/2019 Aula de Java
16/57
)obrecarga
• #esmo nome/ mas n0mero ou ti(o de (ar"metros diferentes.
• Para sobrecarregar uma função/ basta declarar os &!rios ti(os +ueela (ode ter.
• '1em(lo 2 classe carro/ m$todo frear. Se receber um parCmetro indica a !orça >ue temo >ue aplicar no pedalF
Se não receber nen9um parCmetro indica >ue temo >ue parar o carroF
• 3amb$m $ a(lic!&el a o(eradores
• '1em(lo2 o(erador 42 0 ,adição inteira/
F2 0 2F4 ,adição real/
8/17/2019 Aula de Java
17/57
Polimorfismo
• Econder procedimento alternati+o por tr@ de uma inter!ace comumF
• Polimor!imo +em do grego e igni!ica "muita !ormaF#
• Bto permite >ue e ten9a uma inter!ace comum >ue econde detal9e deimplementação
• E(emplo : mtodo !rearF ?em uma implementação na clae bae ,carro/F
?em outra implementação na clae !il9a ,!errari/F
• A !unção da clae !il9a e obrepJe ,overrides/ L da clae mãe
8/17/2019 Aula de Java
18/57
Polimorfismo )obrecarga
• *om polimor!imo nual do mtodo er@uado em tempo de e(ecução ,e(emplo claro de bindingdinCmico/F
• *om obrecarga podemo decidir >ual do mtodo er@uado em tempo de compilação ditinguindo pelo
parCmetro paadoF O proceo de ecol9a da !unção correta pelo compilador c9amado
de reolução de obrecarga ,o+erload reolution/
8/17/2019 Aula de Java
19/57
Programas 5a&a
• Programa 8a+a conitem em clae >ue ão !ormada poratributo e mtodo >ue reali;am tare!a e retornam in!ormaçJe>uando apropriadoF
• Bto para !a;er eu programa 8a+a +ocN precia deen+ol+erclae >ue c9amarão outra clae e aim por dianteF
• ogo preciamo aprender como deen+ol+er noa prue poamo implementar oluçJe para noo problemaF
8/17/2019 Aula de Java
20/57
Programando OO em 5a&a
• O nMcleo da P pe>ueno ma e(item +@ria biblioteca de clae>ue !ornecem +@ria !uncionalidade adicionai para a PF
• Em 8a+a uamo uma abordagem de bloco de contruçãoreutili;ando o o!t=are j@ e(itenteF Bto !ar@ com >ue: Seu programa ten9am mel9or deempen9o poi normalmente a clae pr-
programada ão mai otimi;ada do >ue o eu cue ão incluGdo em praticamente toda a implementaçJe do 8a+a KocN economi;e tempo de programaçãoF
8/17/2019 Aula de Java
21/57
% Linguagem de Programação 5a&a
• Onde encontrar informação In&entada (ela )un #icros6stems
-tt(277ja&a.sun.com
• O código 5a&a $ com(ilado (ara um código de n&el m$dio 8b6te code9/ +ue $inde(endente de m!+uina e (recisa então ser inter(retedado (or um
inter(retador 5a&a.
*ui+o *la8a+a
Bnterpretador 8a+a E(ecutar
Programa
E(ecutar Programa
8/17/2019 Aula de Java
22/57
'ditando seus (rogramas
• m ar>ui+o !onte 8a+a 1&&U te(to puroF
• KocN pode edit@-lo uando >ual>uer editor de te(to de ua pre!erNncia ,notepad +i emac edit etc/F
• E(item ambiente BQE como etbean ,ecrito em 8a+a egratuito para uo não comerciai/ 8builder Kiual *a! e oKiual 800
• O ar>ui+o !onte de+em ter e(tenão Fja+a
8/17/2019 Aula de Java
23/57
• 8a+a uma linguagem de !ormato li+roF Bto >uer di;er >ue nãoneceitamo de epaço em branco identação ou pulo de lin9a
para >ue o compilador entenda noo c
8/17/2019 Aula de Java
24/57
re&e introdução ao 5a&a
• Kamo +er agora doi e(emplo >ue no permitirão ter uma idiade como programar em 8a+aF
• Entretanto +@rio conceito erão omitido nete momentoF
• ão 9@ moti+o para etree ou para começar a penar em detruireu computador - n
8/17/2019 Aula de Java
25/57
Primeiro '1em(lo em 5a&a
IIEte o noo primeiro e(emplo em 8a+a public cla DelloWorld X
public tatic +oid main ,StringYZ arg/X
S.temFoutFprintln,[Dello WorldV[/\]
]
8/17/2019 Aula de Java
26/57
Conceitos &istos no e1em(lo
• II São iniciadore de coment@rio em uma lin9a ,como no *00/F
• Em 8a+a tambm podemo ter coment@rio delimitado por I^ e ^Icomo no *F
• O coment@rio marcado por II ão pre!erG+ei por poderem erlido pela !erramenta ja+adoc >ue +eremo nete curo e ti+ermotempoF
ão 9@ neceidade de correr com a matria ma 9@muito para e +er em 8a+aF ogo >uanto mai adiante!ormo mai +ocN aprenderãoF
8/17/2019 Aula de Java
27/57
• public cla DelloWorld Eta lin9a uma de!inição de claeF ?odo programa em 8a+a conite em uma ou mai classes de2inidas pelo
programador ,ou pelo uu@rio/F
A pala+ra c9a+e class introdu; uma de!inição de clae em 8a+a e
imediatamente eguida pelo nome da classeF ota importante:O nome da clae egue um identi!icador
A pala+ra c9a+e em 8a+a ão pala+ra reer+ada
8a+a !a; di!erenciação entre maiMcula e minMcula ,DelloWorld ≠ Dello=orld/
Conceitos &istos no e1em(lo
8/17/2019 Aula de Java
28/57
• public cla DelloWorld public um modi!icador de +iibilidade
?oda clae public de+e etar gra+ada em um ar>ui+o cujonome o memo da clae ,nete cao DelloWorldFja+a/
Aim não podemo ter dua clae public no memoar>ui+oF
Kamo +er como contornar ito mai a !renteF
?odo ar>ui+o ja+a de+e terminar com a e(tenão Fja+a
Conceitos &istos no e1em(lo
8/17/2019 Aula de Java
29/57
• X ] O bloco de comando ão de!inido pela c9a+e como no * e no *00 KocN notarão muito ponto em comum entre o 8a+a e eta linguagenF
• public tatic +oid main ,StringYZ arg/ ?odo aplicati+o 8a+a de+e ter um mtodo main onde ele iniciadoF Se não ti+er o interpretador 8a+a não e(ecutar@ a ua claeF
*omo no * a pala+ra c9a+e +oid indica >ue o mtodo não retorna nen9um+alorF
Conceitos &istos no e1em(lo
8/17/2019 Aula de Java
30/57
• public tatic +oid main ,StringYZ arg/ O public um modi!icador de +iibilidade ,!a; o mtodo er pMblico/F O tatic di; >ue o mtodo pertence L clae e não ao eu objeto
Conceitos &istos no e1em(lo
Kamo +er ete conceito commai detal9e mai adianteV
8/17/2019 Aula de Java
31/57
• S.temFoutFprintln,[Dello WorldV[/\ S.temFout o oeto de saída padr3o
Ele permite ao aplicati+o 8a+a ecre+er na janela de comando a partir do>ual o aplicati+o 8a+a e(ecutadoF
O mtodo println imprime uma lin9a colocando um *)T no !imF
O mtodo print !a; o memo < >ue em o *)T O caractere de ecape _n _t etcF >ue con9ecGamo do print! tambm +alem
para o print e para o printlnF
Conceitos &istos no e1em(lo
8/17/2019 Aula de Java
32/57
Como com(ilar o código usando 5:;<
5anela #)*:O)
O ar+ui&o fonte
=.ja&a> de&e sem(reter esta e1tensão
'1ecutando ocom(ilador
%r+ui&o=.class>gerado
8/17/2019 Aula de Java
33/57
%(licati&os 5a&a
• E(item doi tipo de programa 8a+a: Aplicati+o : programa emel9ante a proceador de te(to planil9a etcF >ue
normalmente ão arma;enado e e(ecutado localmenteF
ão carregado na memueno >ue normalmente ão arma;enado em um
computador ao >ual o uu@rio e conecta remotamente +ia =ebF
São carregado e e(ecutado +ia applet+ie=er e preciam er c9amado
atra+ de uma p@gina 9tmlF
8/17/2019 Aula de Java
34/57
Como e1ecutar o código<
'1ecutando o
inter(retador5a&a
)ada do(rograma et$rmino
8/17/2019 Aula de Java
35/57
Im(ortante
•O diretue n
8/17/2019 Aula de Java
36/57
)egundo e1em(lo
IIEte o noo egundo e(emplo em 8a+aimport ja+a(F=ingF8OptionPane\
public cla DelloWorldX
public tatic +oid main ,StringYZ arg/X
8OptionPaneF9o=5eageQialog,null [Dello WorldV[/\
S.temFe(it,&/\]]
8/17/2019 Aula de Java
37/57
Conceitos &istos neste e1em(lo
• im(ort ja&a1.s?ing.5O(tionPane@ Eta intrução er+e para identi!icar e carregar clae re>uerida para
compilar um programa ja+aF
E(item muita clae pronta em 8a+a como a clae S=ing >ue contmelemento >ue no ajudam a de!inir inter!ace gr@!ica com o uu@rioF
E(item elemento para di@logo botJe janela etcF
Se ti+ermo tempo +eremo tambm a inter!acegr@!ica ao !im dete curoF 5a não +amo corrermai por caua ditoV
8/17/2019 Aula de Java
38/57
iblioteca de classes
• Ama biblioteca de classes $ uma coleção de classes +ue (odemosusar +uando desen&ol&emos (rogramas.• '1iste uma biblioteca padrão de classes Java +ue $ (arte de
+ual+uer ambiente de desen&ol&imento 5a&a
• 'stas classes não são (arteda linguagem 5a&a (er se/ mas nósnos baseamos bastante nelas.
A biblioteca de clae 8a+aão e>ui+alente L biblioteca do *
8/17/2019 Aula de Java
39/57
• B!rias classes +ue usaremos/ como a System e a String são(arte da biblioteca (adrão de classes 5a&a• Outras bibliotecas de classes (odem ser ad+uiridas com
fabricantes de soft?are ou criadas (or &oc mesmo.
iblioteca de classes
ão eja teimooVQeen+ol+er no+amente clae j@ e(itente implemente tolice - caua erro e perda de
per!ormanceV
8/17/2019 Aula de Java
40/57
Pacotes
• %s classes da biblioteca (adrão 5a&a são organi,adas em(acotes.
• %lguns dos (acotes da biblioteca (adrão são2
Pacote
java.lang
java.applet
java.awt
javax.swing
java.netjava.util
Pro(ósito
)u(orte gen$ricoCriar a((lets (ara a ?ebInterfaces gr!ficas e gr!ficosCa(acidades e com(onetes gr!ficos adicionais
Comunicação em redeAtilidades &ariadas
8/17/2019 Aula de Java
41/57
% declaração im(ort
• Duando +ueremos usar uma classe de um (acote/ (ode usar seunome totalmente qualificado
java.util.Random
• Outra o(ção $ im(ortar a classe/ e de(ois usar o nome da classe2import java.util.Random;
• Para im(ortar todas as classes em um (acote es(ecfico/ &oc
(ode usar o caracter curinga E
import java.util.*;
8/17/2019 Aula de Java
42/57
• 3odas as classes do (acote java.lang são automaticamente
im(ortadas em nossos (rogramas• F (or isto +ue não (recisamos de um im(ort no (rimeiro
e1em(lo.
% declaração im(ort
ão nece@rio etourar a cabeçatentando entender a !undo agora oconceito de clae e pacoteF
8/17/2019 Aula de Java
43/57
Conceitos &istos neste e1em(lo
• )6stem.e1it8G9@ Eta intrução er+e para !inali;ar o noo programaF
?odo programa com inter!ace gr@!ica precia er !inali;ado deta!orma para >ue termine corretamenteF
*ao não o !açamo noa janela de comando não +oltar@ a!uncionar corretamenteF
8/17/2019 Aula de Java
44/57
Pergunta ra,o!&el
Se eu precio importar um ar>ui+o para uar a clae8OptionPane por>ue não precio importar uma
clae para uar a clae S.tem e eu objeto out`
8/17/2019 Aula de Java
45/57
Res(osta
A clae S.tem parte do pacote ja+aFlangembre-e >ue ete pacote padrão importado
automaticamente em todo programa 8a+a
8/17/2019 Aula de Java
46/57
3erceiro e1em(loimport ja+a(F=ingF8OptionPane\
public cla Soma1 X public tatic +oid main ,StringYZ arg/
X int n1n2oma\
String 12\18OptionPaneF9o=BnputQialog,"Prim umF :[/\28OptionPaneF9o=BnputQialog,"SegF umF :[/\n1BntegerFpareBnt,1/\n2BntegerFpareBnt,2/\oman10n2\
8OptionPaneF9o=5eageQialog,null"A oma #0oma/\ S.temFe(it,&/\]
]
8/17/2019 Aula de Java
47/57
Conceitos &istos neste e1em(lo
• im(ort ja&a1.s?ing.5O(tionPane@ Eta intrução er+e para identi!icar e carregar clae re>uerida paracompilar um programa ja+a in!ormando ao compilador onde pode encontr@-la ,no cao no diretui+o denominadoSoma1Fja+a
A c9a+e indica o começo do bloco de de!iniçJeF ão e>ueça >ue ela tem>ue er !ec9ada >uando ete terminarF
8/17/2019 Aula de Java
48/57
Conceitos &istos neste e1em(lo
QeclaraçJe de +ari@+ei *omo em toda a linguagen compilada preciamo declarar a +ari@+ei
>ue uamoF
QeclaraçJe conitem do tipo da +ari@+el eu nome e um ponto-e-+GrgulaF
Se ti+ermo mai de uma +ari@+el do memo tipo podemo coloc@-la namema declaração eparada por +GrgulaF
boa pr@tica de programação dar para a +ari@+ei nome decriti+o da ua+erdadeira !unçãoF
8/17/2019 Aula de Java
49/57
Conceitos &istos neste e1em(lo
•int n/nJ/soma@ Etamo declarando +ari@+ei do tipo inteiroF E(item outro tipo numrico para arma;enar nMmero racionai ,!loat e
double/F
• )tring s/sJ@ Etamo declarando objeto da clae StringF
*omo diemo ante não +amo no apro!undar noconceito de 8a+a nete momentoF 5ai a !rente n
8/17/2019 Aula de Java
50/57
Conceitos &istos neste e1em(lo• sK5O(tionPane.s-o?In(ut:ialog8>Prim um. 2M9@
Etamo uando um mtodo da clae 8OptionPane >ue reali;a uma entrada dedadoF
Ete mtodo retorna uma tringF
• nKInteger.(arseInt8s9@ 8a+a uma linguagem muito mai rigoroamente tipada do >ue o *F
ão poG+el reali;ar t.pecating autom@tico na maioria do caoF
?emo >ue c9amar uma !unção ,no cao um mtodo da clae Bnteger/ para poder con+erte a tring entrada na intrução anterior em um inteiro para
reali;armo a omaF E(ite o tipo int e a clae Bnteger >ue
denominada uma "=rapper cla# do
tipoF 5ai L !rente +eremo ito com
detal9eF
8/17/2019 Aula de Java
51/57
Duarto e1em(loimport ja+a(F=ingF8OptionPane\
public cla 5a(1 X public tatic +oid main ,StringYZ arg/
X int n1n2ma(\
n1BntegerFpareBnt,8OptionPaneF9o=BnputQialog,"Prim umF :[//\n2BntegerFpareBnt,8OptionPaneF9o=BnputQialog,"Seg umF :[//\i! ,n1n2/ X
ma(n1\] ele X
ma(n2\
] 8OptionPaneF9o=5eageQialog,null"O m@(imo #0ma(/\
S.temFe(it,&/\]
]
8/17/2019 Aula de Java
52/57
• if 8nNnJ9 O if $ uma statement condicional/ +ue (ermite +ue tomemos
decises7escol-amos um curso de ação em nossos (rogramas.
% statement if tem o seguinte formato2i! 8condição9 statement ele statementJ
onde2condição $ uma e1(ressão booleana 8lógica9
statement $ e1ecutada se a condição $ a&aliada como &erdadeira.
statementJ $ e1ecutada se a condição $ a&aliada como falsa.
% cl!usula ele $ o(cional
Conceitos &istos neste e1em(lo
A tatement1 e a tatement2 podem er ubtituGda por um bloco de tatement ma nete cao não podemo e>uecer da c9a+e em torno dete blocoF
8/17/2019 Aula de Java
53/57
Duinto '1em(loimport ja+a(F=ingF8OptionPane\
public cla 5a(1 X public tatic +oid main ,StringYZ arg/
X int ioma\
i1\oma&\=9ile ,i1&/ X oma0BntegerFpareBnt,8OptionPaneF9o=BnputQialog,"um :[//\ i00\]
8OptionPaneF9o=5eageQialog,null"A oma #0oma/\ S.temFe(it,&/\]
]
8/17/2019 Aula de Java
54/57
Conceitos &istos neste e1em(lo
• ?-ile 8iKG9 )tatements de re(etição nos (ermitem re(etir açes dentro de nossos
(rogramas
'1istem trs ti(os de estruturas de re(etição em 5a&a!or statement
do statement
=9ile statement
*ompromio:
Keremo todacom cuidado depoiV
8/17/2019 Aula de Java
55/57
• O comando =9ile permite >ue um tatement ,ou bloco detatement/ eja repetido at >ue uma determinada condição eja+erdadeiraF
• Tormato geral:
=9ile,condition/X tatement,/ ]• Onde:
condição uma e(preão booleana
a,/ tatement,/ endo repetida alteram o +alor da condição para !ale emalgum momento
Conceitos &istos neste e1em(lo
d 9il
8/17/2019 Aula de Java
56/57
*omportamento do =9ile
• a primeira +e; >ue o loop e(ecutado a condição a+aliadaF Se
ela !or !ala não e e(ecuta a tatement dentro do loop nen9uma+e;F
• Se !or +erdadeira e(ecutam-e toda a tatement do loop e +olta-e para o começo para a+aliar a condição no+amenteF
• Ete pao repetido at >ue a condição eja !alaF
Bto implica >ue a tatement podem e(ecutar >ual>uernMmero de +e;e ,de ;ero a in!initoV/
i
8/17/2019 Aula de Java
57/57
Qim da aula
8@ temo uma boa introduçãoF
5el9orem-na !a;endo o e(ercGcioV