Advertisement
teslariu

clases

Apr 7th, 2022
925
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. """
  5. Programación orientada a objetos (POO)
  6.  
  7. La POO es un paradigma de programación que proporciona un medio
  8. para estructurar programas y que las propiedades y los comportamientos
  9. se agrupen en objetos individuales
  10.  
  11. Por ejemplo, un objeto podría representar a una persona con propiedades como nombre,
  12. edad y dirección y comportamientos como comer, hablar y respirar
  13.  
  14. La POO modela entidades del mundo real como objetos de software con datos asociados
  15. y que pueden realizar ciertas funciones
  16.  
  17. CLASES E INSTANCIA
  18. Las clases se utilizan para crear estructuras de datos. Las clases definen mètodos que se
  19. identifican con comportamientos y acciones y atributos que se relacionan con propiedades
  20. """
  21.  
  22. class Perro:
  23.     # Atributo de clase (todas las instancias tiene la misma propiedad)
  24.     especie = "Canis familiaris"
  25.  
  26.     def __init__(self,nombre,edad):
  27.         """Creo los atributos de la instancia"""
  28.         self.nombre = nombre
  29.         self.edad = edad
  30.  
  31. # Creo dos instancias de perro
  32. sultan = Perro("Sultan",9)
  33. firulai = Perro("Firulai",4)
  34.  
  35. # imprimo el nombre de sultan
  36. print(sultan.nombre)
  37.  
  38. # imprimo la edad de firulai
  39. print(firulai.edad)
  40.  
  41. # accedo al atributo de clase
  42. print(firulai.especie)
  43. print(sultan.especie)
  44.  
  45. # los objetos o instancias son mutables por default
  46. sultan.edad = 7
  47. firulai.especie = "Raza canina"
  48.  
  49. ##### Reescribo la clase Perro con algunos métodos
  50.  
  51. class Perro:
  52.     # Atributo de clase (todas las instancias tiene la misma propiedad)
  53.     especie = "Canis familiaris"
  54.  
  55.     def __init__(self,nombre,edad):
  56.         """Creo los atributos de la instancia"""
  57.         self.nombre = nombre
  58.         self.edad = edad
  59.  
  60.     def descripcion(self):
  61.         return f"{self.nombre} tiene {self.edad} años de edad"
  62.  
  63.     def ladra(self, sonido):
  64.         return f"{self.nombre} dice {sonido}"
  65.  
  66. tronco = Perro("Tronco",5)
  67. print(tronco.descripcion())
  68. print(tronco.ladra("Woof Woof"))
  69.  
  70. ###### mejoremos la clase con métodos mágicos, dunder methods o métodos especiales
  71.  
  72. class Perro:
  73.     # Atributo de clase (todas las instancias tiene la misma propiedad)
  74.     especie = "Canis familiaris"
  75.  
  76.     def __init__(self,nombre,edad):
  77.         """Creo los atributos de la instancia"""
  78.         self.nombre = nombre
  79.         self.edad = edad
  80.  
  81.     def __str__(self):
  82.         return f"{self.nombre} tiene {self.edad} años de edad"
  83.  
  84.     def ladra(self, sonido):
  85.         return f"{self.nombre} dice {sonido}"
  86.  
  87. duque = Perro("Duque",5)
  88. print(duque)
  89. print(duque.ladra("Guau"))
  90.  
  91. #### HERENCIA
  92. """
  93. Es el proceso mediante el cual una clsae secundaria asume los métodos y atributos de una
  94. clase principal
  95. """
  96. class Perro:
  97.     # Atributo de clase (todas las instancias tiene la misma propiedad)
  98.     especie = "Canis familiaris"
  99.  
  100.     def __init__(self,nombre,edad):
  101.         """Creo los atributos de la instancia"""
  102.         self.nombre = nombre
  103.         self.edad = edad
  104.  
  105.     def __str__(self):
  106.         return f"{self.nombre} tiene {self.edad} años de edad"
  107.  
  108.     def ladra(self, sonido):
  109.         return f"{self.nombre} dice {sonido}"
  110.  
  111. # creo clases hijas
  112. class JackRusellTerrier(Perro):
  113.     def ladra(self, sonido="Arf"):
  114.         return f"{self.nombre} dice {sonido}"
  115.  
  116. class Dauschund(Perro):
  117.     def ladra(self, sonido="Woof"):
  118.         return f"{self.nombre} dice {sonido}"
  119.  
  120. class Bulldog(Perro):
  121.     def ladra(self, sonido="Grrr"):
  122.         return f"{self.nombre} dice {sonido}"
  123.  
  124. miles = JackRusellTerrier("Miles",4)
  125. buddy = Dauschund("Buddy",7)
  126. jack = Bulldog("Jack", 3)
  127.  
  128. print(buddy)
  129. print(buddy.ladra())
  130. print(jack.ladra("Miau"))
  131.  
  132.  
  133. # POLIMORFISMO
  134. class Gato():
  135.     def __init__(self, nombre):
  136.         self.nombre = nombre
  137.  
  138.     def hablar(self):
  139.         print("Miau")
  140.  
  141. class Perro():
  142.     def __init__(self, nombre):
  143.         self.nombre = nombre
  144.  
  145.     def hablar(self):
  146.         print("Guau")
  147.  
  148. def EscucharMascota(animal):
  149.     animal.hablar()
  150.  
  151. cacho = Perro("Cacho")
  152. fufu = Gato("Fufu")
  153.  
  154. print("Mi perro dice", end=" ")
  155. EscucharMascota(cacho)
  156. print("Mi gato dice", end=" ")
  157. EscucharMascota(fufu)
Advertisement
RAW Paste Data Copied
Advertisement