Upload
rafael-loureiro
View
229
Download
0
Embed Size (px)
Citation preview
7/25/2019 Aula 5 Python Oo
1/49
1
PythonOrientao a Objetos
Marcel Pinheiro Caraciolo
Python Aula 05
7/25/2019 Aula 5 Python Oo
2/49
2
Defnindo classes... o!es de Orientao a
Objetos
Python Aula 05
7/25/2019 Aula 5 Python Oo
3/49
"
... # tudo so
objetos...
$%udo e& Python ' no f& u& objeto($ )hello*.u++er,-
$ list".a++end,a/-Python Aula 05
7/25/2019 Aula 5 Python Oo
4/49
9
... Defnindo u&a
classe...
$Python no usa o conceito de defnio deinter4aces co&o e& outras lin8ua8ens.
:asta oc; defnir a clase e utili
7/25/2019 Aula 5 Python Oo
5/49
5
... M'todos e&
classes...$Defnir u& &'todoe& u&a classe 7 bastaincluir a defnio da 4uno se8uindo oesco+o de bloco da classe.
$ #& todos &'todos associados > inst?ncia defnido dentro de u&aclasse dee& ter o ar8u&ento self defnido co&o +ri&eiroar8u&ento.
$ @ 8eral&ente u& &'todo es+ecial__init__ defnido na &aioriadas classes.
Python Aula 05
7/25/2019 Aula 5 Python Oo
6/49
Defnio de u&a
classe
Python Aula 05
7/25/2019 Aula 5 Python Oo
7/49B
Orientao a
objetosCriando e Deletando inst?ncias
Python Aula 05
7/25/2019 Aula 5 Python Oo
8/49
nstanciando Objetos$o h )neE* co&o 4eito e& aa(
$ a F student,)Gheldon*7 "9 - ,HH se& o o+erador neE( -
$)IIinitII* sere co&o construtor de u&aclasse. Jeral&ente 4a< o trabalho deiniciali
7/25/2019 Aula 5 Python Oo
9/49
nstanciando Objetos$self N O +ri&eiro ar8u&ento de LualLuer&'todo ' a re4er;ncia +ara a +r+ria
inst?ncia da classe
$ #& )IIinitII* self re4erencia o objetocriado recente&ente7 e e& outros&'todos7 re4erencia a inst?ncia de Lual o&'todo 4oi inocado.
$ Gi&ilar ao this usado e& aa ou C33
$ Por'& Python usa &ais self do Lue aa co& this
Python Aula 05
7/25/2019 Aula 5 Python Oo
10/4910
IIinitII
Python Aula 05
7/25/2019 Aula 5 Python Oo
11/4911
sel4
$o ' necessrio inclu=lo no &'todo Lue4a< a cha&ada do &es&o7 a+enas nadefnio(
$Python +assa ele auto&atica&ente.
a F Auto&oel,-
+rinta.8etI+laca,-
Python Aula 05
7/25/2019 Aula 5 Python Oo
12/4912
Deletando inst?ncias$Quando estier fnali
7/25/2019 Aula 5 Python Oo
13/491"
Desendando a
classe...Acesso de atributos e &'todos
Python Aula 05
7/25/2019 Aula 5 Python Oo
14/49
19
Acessibilidade
$Acesso de &'todos e atributos$ Direta&ente objeto.atributo ou +or al8u& &'todo
objeto.8etAtributo,-
a F Auto&oel,-
+rinta.nIrodas
Python Aula 05
7/25/2019 Aula 5 Python Oo
15/49
15
Acessibilidade$Atributos ,class e ou inst?ncias-
$ Privados
$ Atributos e mtodos s podem ser acessados dentroda classe, usa-se __ no nicio do nome.
$ Protected
$ Apenas conveno e usa-se apenas um _ no nomede mtodos ou atributos
Python Aula 05
7/25/2019 Aula 5 Python Oo
16/49
1
#s+ecialN +ro+erty
Python Aula 05
class Rone,object-N
,...-
de4 +e8arIolu&e,sel4-N return sel4.olu&e
olu&e F +ro+erty,+e8arIolu&e7alterarIolu&e-olu&e F +ro+erty,+e8arIolu&e7alterarIolu&e-.
7/25/2019 Aula 5 Python Oo
17/49
1B
#s+ecialN +ro+erty
Python Aula 05
SSS4one F Rone,200-SSS4one.+e8arTolu&e,-
100SSS4one.olu&e100SSS4one.olu&e F = 500SSS4one.olu&e F 200SSS4one.olu&e100
7/25/2019 Aula 5 Python Oo
18/49
1
AtributosCo&o declarar os &e&bros de
u&a classe U(
Python Aula 05
7/25/2019 Aula 5 Python Oo
19/49
1
Atributos$
#6ceto &'todos7 todos os de&ais dadosdentro de u&a classe so ar&a classe co&o u& todo.
$ %odas as inst?ncias da classe co&+artilha& o &es&oatributo ,alor-.
$ Conhecidos co&o )estticos*e& outras lin8ua8e&sPython Aula 05
7/25/2019 Aula 5 Python Oo
20/49
20
Atributos
$Atributos de inst?ncia so criados einiciali
7/25/2019 Aula 5 Python Oo
21/49
21
Atributos$Atributos de classe so co&+artilhados,a+enas u&a c+ia- +or todas inst?ncias da
classe.
$QualLuer inst?ncia alter=lo7 o alor ' alterado +ara todasinst?ncias.
$ Atributos de classe so defnidasN
$ Dentro da defnio de u&a classe
$ Rora de LuaisLuer &'todos da classe
$ Lue estes atributos so co&+artilhados +or todasinst?ncias de u&a classe7 eles so acessados atra's deu&a notao di4erenteN
$ sel4.IIclassII.na&ePython Aula 05
7/25/2019 Aula 5 Python Oo
22/49
22
@eranaPythonu&a lin8ua8e& de
+ro8ra&ao...
Python Aula 05
7/25/2019 Aula 5 Python Oo
23/49
2"
@erana$W&a classe +ode herdar a defnio de
outra classe
$ Per&ite o uso ou a e6tenso de &'todos e atributos+reia&ente defnidos +or outra classe.
$ oa classeN subclasse. Ori8inalN classe +ai7 ancestral ousu+erclasse
$ Para defnir u&a subclasse7 coloLue o no&e da su+erclasseentre +ar;nteses de+ois do no&e da subclasse na +ri&eiralinha da defnio.
$ Python no te& a +alara e6tends/ co&o e& aa
$ MKlti+la herana ' su+ortada
Python Aula 05
7/25/2019 Aula 5 Python Oo
24/49
29
@erana
Python Aula 05
7/25/2019 Aula 5 Python Oo
25/49
25
Xedefnindo &'todos
$Toc; +ode redefnir &'todos declarados nasu+erclasse
$ O &es&o ale +ara o &'todoIIinitII.
$ Jeral&ente oc; al8o assi& no &'todo IIinitII dassubclassesN
$ +arentClass.IIinitII,sel4767y-onde +arentClass ' o no&e da classe +ai.
Python Aula 05
7/25/2019 Aula 5 Python Oo
26/49
2
Xedefnindo &'todos
Python Aula 05
7/25/2019 Aula 5 Python Oo
27/49
2B
Xedefnindo &'todos
Python Aula 05
7/25/2019 Aula 5 Python Oo
28/49
2
@erana
Python Aula 05
7/25/2019 Aula 5 Python Oo
29/49
2
Al8uns &'todos e atributoss+eciais natios
a& s+ecial(
Python Aula 05
7/25/2019 Aula 5 Python Oo
30/49
"0
Me&bros natios$As classes cont;& &'todos e atributos
es+eciais Lue so includos +or Python&es&o se oc; no os defnae6+licita&ente.
$ A &aioria destes &'todos so inocados auto&atica&entosa +artir de al8u&a ao ou eento +or &eio de o+eradoresou uso da classe.
$ Al8u&s atributos natios defne& in4or&a!es Lue dee&ser ar&a
7/25/2019 Aula 5 Python Oo
31/49
"1
Me&bros natios$Al8uns &'todos co&o +or e6e&+loIIre+rII e6iste& +ara todas as classes e
oc; +ode se&+re redefn=las.
$A defnio deste &'todo es+ecifca co&otornar a inst?ncia de u&a classe e& u&astrin8.
$print f al8u&as e
7/25/2019 Aula 5 Python Oo
32/49
"2
M'todos natios$Toc; +ode redefnir estes &'todos
ta&b'&N
$ __init__ : O construtor da classe
$ __cmp__: Defne co&o FF 4unciona +ara a classe
$ __len__ : Defne co&o len,obj- 4unciona
$ __copy__ : Defne co&o co+iar u&a classe$ Outros &'todos natios +er&ite& oc; dar a classe o +oder
de usar notao YZ co&o u& array ou ,- co&o u&a cha&adade 4uno.
Python Aula 05
7/25/2019 Aula 5 Python Oo
33/49
""
M'todos natios
Python Aula 05
7/25/2019 Aula 5 Python Oo
34/49
"9
Atributos es+eciais$#stes atributos e6iste& +ara todas as
classes.
$ __doc__ : Ar&a classe de LualLuerinst?ncia dela.
$__module__ : Xetorna a re4er;ncia ao &dulo Lue aLuelaclasse e& +articular 4oi defnida.
$ Outro &'todo be& Ktil dir(x) retorna a lista de todos os&'todos e atributos defnidos +elo objeto 6.
Python Aula 05
7/25/2019 Aula 5 Python Oo
35/49
"5
%rata&ento de e6ce!es
Ratal #rror( #a8oraU(
Python Aula 05
7/25/2019 Aula 5 Python Oo
36/49
"
%ry[#6ce+t
$ Python tenta e6ecutar o cdi8o de +ro8ra&adentro do bloco inserido dentro do try.
$Caso al8u& erro acontea7 u&a e6ceo 'leantada($ Geu +ro8ra&a ' interro&+ido +or al8u&a 4alha e& te&+o de
e6ecuo.
$ e6ce+t+er&ite tratar as e6ce!es leantadas. O+ro8ra&ador defne co&o lidar co& estes errosines+erados(
Python Aula 05
7/25/2019 Aula 5 Python Oo
37/49
"B
%ry[#6ce+t
$Toc; +ode ca+turar rios ti+os de e6ceo(
Python Aula 05
7/25/2019 Aula 5 Python Oo
38/49
"
raise
$ Ge oc; no desejar naLuele bloco de cdi8o tratara e6ceo7 oc; +ode o+tar +or leantar a e6ceo+ara a cha&ada cujo o bloco 4oi cha&ado.
$ o fnal de contas7 al8ue& te& Lue tratar e6ceo( Toc; esta+enas adiando o ineitel( &+ortante Luando oc; Luer Lue
outro desenoledor &onte trata&ento de e6ce!escusto&i
7/25/2019 Aula 5 Python Oo
39/49
"
Rinally
$%enta re&ediar a situao7 Klti&a ao antes doestouro da e6ceo ou f& do try.
$ Ge&+re e6ecutado antes do f& de u& co&ando try.
Python Aula 05
7/25/2019 Aula 5 Python Oo
40/49
90
#6e&+lo
Python Aula 05
7/25/2019 Aula 5 Python Oo
41/49
91
Toc; +ode criar suas
e6ce!es(($ Gua classe dee herdar da classe direta&ente ou
indireta&ente da classe #6ce+tion
$ M'todos redefnidosN IIinitII e IIstrII
Python Aula 05
7/25/2019 Aula 5 Python Oo
42/49
92
#6erccio 01
Python Aula 05
7/25/2019 Aula 5 Python Oo
43/49
9"
#6erccio 01
Python Aula 05
7/25/2019 Aula 5 Python Oo
44/49
99
#6erccio 02
Python Aula 05
7/25/2019 Aula 5 Python Oo
45/49
95
#6erccio 02
Python Aula 05
7/25/2019 Aula 5 Python Oo
46/49
9
Docu&entao
Python Aula 05
7/25/2019 Aula 5 Python Oo
47/49
9B
#6erccio 0"
$Jere a docu&entao dos &dulos desenolidosno #6erccio 02.
$ DCAN Procurar no @#\P do co&ando +ydoc co&o 4a
7/25/2019 Aula 5 Python Oo
48/49
9
Xe4er;ncias
Python Aula 05
7/25/2019 Aula 5 Python Oo
49/49
PythonOrientao a ObjetosMarcel Pinheiro Caraciolo
Python Aula 05