Aula 5 Python Oo

download Aula 5 Python Oo

of 49

Transcript of Aula 5 Python Oo

  • 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