#EJERCICIO 3
#Escogeremos la temática que prefiramos y definiremos una estructura de clases y subclases
#donde practiquemos la herencia en al menos dos niveles (herencia multi nivel).
#Crearemos una estructura de mínimo 5 clases, con sus respectivos constructores y métodos.
#Crearemos algunos objetos y comprobaremos que la herencia esté funcionando. Si podemos,
#incluiremos alguna técnica de polimorfismo.
print ( "EJERCICIO 3" )
#Escogeremos la temática que prefiramos y definiremos una estructura de clases y subclases
#donde practiquemos la herencia en al menos dos niveles (herencia multi nivel).
#creamos la clase Animal
class Animal:
def __init__ ( self , especie, edad) :
self .especie = especie
self .edad = edad
# Método hablar
def hablar( self ) :
pass
# Método moverse
def moverse( self ) :
pass
def describeme( self ) :
print ( "Soy un Animal del tipo" , type ( self ) .__name__)
#Definimos la clase Perro
class Perro( Animal) :
def hablar( self ) :
print ( "Guau!,Guau! Soy un perro muy guapo" )
def moverse( self ) :
print ( "Y tengo 4 patas para andar\n " )
#Definimos la clase Vaca
class Vaca( Animal) :
def hablar( self ) :
print ( "Muuu! Muuu! Soy una Vaca muy simpática" )
def moverse( self ) :
print ( "Caminando con 4 patas" )
class Abeja( Animal) :
def hablar( self ) :
print ( "Bzzzz!" )
def moverse( self ) :
print ( "Volando" )
# Nuevo método
def picar( self ) :
print ( "Picar!" )
mi_perro = Perro( 'mamífero' , 10 )
mi_vaca = Vaca( 'mamífero' , 23 )
mi_abeja = Abeja( 'insecto' , 1 )
mi_perro.hablar ( )
mi_vaca.hablar ( )
# Guau!
# Muuu!
mi_vaca.describeme ( )
mi_abeja.describeme ( )
# Soy un Animal del tipo Vaca
# Soy un Animal del tipo Abeja
mi_abeja.picar ( )
# Picar!
I0VKRVJDSUNJTyAzCiNFc2NvZ2VyZW1vcyBsYSB0ZW3DoXRpY2EgcXVlIHByZWZpcmFtb3MgeSBkZWZpbmlyZW1vcyB1bmEgZXN0cnVjdHVyYSBkZSBjbGFzZXMgeSBzdWJjbGFzZXMKI2RvbmRlIHByYWN0aXF1ZW1vcyBsYSBoZXJlbmNpYSBlbiBhbCBtZW5vcyBkb3Mgbml2ZWxlcyAoaGVyZW5jaWEgbXVsdGkgbml2ZWwpLgojQ3JlYXJlbW9zIHVuYSBlc3RydWN0dXJhIGRlIG3DrW5pbW8gNSBjbGFzZXMsIGNvbiBzdXMgcmVzcGVjdGl2b3MgY29uc3RydWN0b3JlcyB5IG3DqXRvZG9zLgojQ3JlYXJlbW9zIGFsZ3Vub3Mgb2JqZXRvcyB5IGNvbXByb2JhcmVtb3MgcXVlIGxhIGhlcmVuY2lhIGVzdMOpIGZ1bmNpb25hbmRvLiBTaSBwb2RlbW9zLAojaW5jbHVpcmVtb3MgYWxndW5hIHTDqWNuaWNhIGRlIHBvbGltb3JmaXNtby4KcHJpbnQoIkVKRVJDSUNJTyAzIikKI0VzY29nZXJlbW9zIGxhIHRlbcOhdGljYSBxdWUgcHJlZmlyYW1vcyB5IGRlZmluaXJlbW9zIHVuYSBlc3RydWN0dXJhIGRlIGNsYXNlcyB5IHN1YmNsYXNlcwojZG9uZGUgcHJhY3RpcXVlbW9zIGxhIGhlcmVuY2lhIGVuIGFsIG1lbm9zIGRvcyBuaXZlbGVzIChoZXJlbmNpYSBtdWx0aSBuaXZlbCkuCiNjcmVhbW9zIGxhIGNsYXNlIEFuaW1hbApjbGFzcyBBbmltYWw6CiAgICBkZWYgX19pbml0X18oc2VsZiwgZXNwZWNpZSwgZWRhZCk6CiAgICAgICAgc2VsZi5lc3BlY2llID0gZXNwZWNpZQogICAgICAgIHNlbGYuZWRhZCA9IGVkYWQKIyBNw6l0b2RvIGhhYmxhcgogICAgZGVmIGhhYmxhcihzZWxmKToKICAgICAgICBwYXNzCiMgTcOpdG9kbyBtb3ZlcnNlCiAgICBkZWYgbW92ZXJzZShzZWxmKToKICAgICAgICBwYXNzCiAgICBkZWYgZGVzY3JpYmVtZShzZWxmKToKICAgICAgICBwcmludCgiU295IHVuIEFuaW1hbCBkZWwgdGlwbyIsIHR5cGUoc2VsZikuX19uYW1lX18pCiNEZWZpbmltb3MgbGEgY2xhc2UgUGVycm8KY2xhc3MgUGVycm8oQW5pbWFsKToKICAgIGRlZiBoYWJsYXIoc2VsZik6CiAgICAgICAgcHJpbnQoIkd1YXUhLEd1YXUhIFNveSB1biBwZXJybyBtdXkgZ3VhcG8iKQogICAgZGVmIG1vdmVyc2Uoc2VsZik6CiAgICAgICAgcHJpbnQoIlkgdGVuZ28gNCBwYXRhcyBwYXJhIGFuZGFyXG4iKQojRGVmaW5pbW9zIGxhIGNsYXNlIFZhY2EKY2xhc3MgVmFjYShBbmltYWwpOgogICAgZGVmIGhhYmxhcihzZWxmKToKICAgICAgICBwcmludCgiTXV1dSEgTXV1dSEgU295IHVuYSBWYWNhIG11eSBzaW1ww6F0aWNhIikKICAgIGRlZiBtb3ZlcnNlKHNlbGYpOgogICAgICAgIHByaW50KCJDYW1pbmFuZG8gY29uIDQgcGF0YXMiKQoKY2xhc3MgQWJlamEoQW5pbWFsKToKICAgIGRlZiBoYWJsYXIoc2VsZik6CiAgICAgICAgcHJpbnQoIkJ6enp6ISIpCiAgICBkZWYgbW92ZXJzZShzZWxmKToKICAgICAgICBwcmludCgiVm9sYW5kbyIpCgogICAgIyBOdWV2byBtw6l0b2RvCiAgICBkZWYgcGljYXIoc2VsZik6CiAgICAgICAgcHJpbnQoIlBpY2FyISIpCm1pX3BlcnJvID0gUGVycm8oJ21hbcOtZmVybycsIDEwKQptaV92YWNhID0gVmFjYSgnbWFtw61mZXJvJywgMjMpCm1pX2FiZWphID0gQWJlamEoJ2luc2VjdG8nLCAxKQoKbWlfcGVycm8uaGFibGFyKCkKbWlfdmFjYS5oYWJsYXIoKQojIEd1YXUhCiMgTXV1dSEKCm1pX3ZhY2EuZGVzY3JpYmVtZSgpCm1pX2FiZWphLmRlc2NyaWJlbWUoKQojIFNveSB1biBBbmltYWwgZGVsIHRpcG8gVmFjYQojIFNveSB1biBBbmltYWwgZGVsIHRpcG8gQWJlamEKCm1pX2FiZWphLnBpY2FyKCkKIyBQaWNhciEK