Advertisement
teslariu

oop python

Oct 21st, 2023
934
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.05 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. """
  5. POO
  6.  
  7. La programación orientada a objetos es un PARADIGMA de programación que
  8. proporciona un medio para ESTRUCTURAR programas para que las propiedades
  9. y los comportamientos se agrupen en objetos individuales
  10.  
  11. Un objeto podría representar a una persona con propiedades como nombre,
  12. edad, domicilio y comportamientos como caminar, correr, hablar.
  13.  
  14. La POO modela entidades del mundo real como objetos de software que
  15. tiene algunos datos asociados con ellos y pueden realizar ciertas funciones
  16.  
  17. La programación procedimental es otro paradigma de programación que
  18. ESTRUCTURA un programa como una receta en el sentido que proporciona un
  19. conjunto de pasos, en forma de funciones y bloques de código, que fluyen
  20. secuencialmente para completar una tarea.
  21.  
  22.  
  23. CLASES E INSTANCIAS
  24.  
  25. Las clases se utilizan para crear estructuras. Las clases definen funciones
  26. llamadas METODOS que identifican los comportamientos.Los ATRIBUTOS se identifican
  27. con las propiedades indivuduales
  28.  
  29. Una clase es una abstracción, el nombre de un conjunto. La instancia es un
  30. objeto particular:
  31.  
  32. Ejemplo:
  33. CLASE Ser humano
  34. Una clase hija es una clase derivada de otra, que hereda sus METODOS Y
  35. ATRIBUTOS
  36. EJ. clase futbolista
  37.  
  38. Una instancia de la clase futbolista: Lionel Messi
  39.  
  40.  
  41. # ej de codificacion de una clase Perro
  42.  
  43. class Perro:
  44.     # Atributo de clase:
  45.     especie = "Canis familiaris"
  46.    
  47.     def __init__(self, nombre, edad):  
  48.         '''Crea los atributos de cada instancia'''
  49.         self.nombre = nombre
  50.         self.edad = edad
  51.        
  52.     # Metodos:
  53.     def __str__(self):
  54.         return f"{self.nombre} tiene {self.edad} años de edad"
  55.        
  56.     def ladra(self, sonido):
  57.         return f"{self.nombre} dijo {sonido}"
  58.        
  59.     def __add__(self1, self2):
  60.         return f"{self1.nombre} y {self2.nombre} han tenido cachorritos"   
  61.    
  62.        
  63.        
  64.        
  65. # Creo dos instancias
  66. sultan = Perro("Sultán",4)
  67. firulai = Perro("Firulai",3)
  68.  
  69. # imprimo atributos                          
  70. print(f"Edad de firulai: {firulai.edad}")
  71. print(f"Nombre de sultán: {sultan.nombre}")   
  72.    
  73. # cambio la especie de sultan
  74. sultan.especie = "Marca Perro"
  75.  
  76. print(f"Especie de sultan: {sultan.especie}")
  77. print(f"Especie de firulai: {firulai.especie}")
  78.  
  79.  
  80. print(sultan)
  81. print(sultan.ladra("Guau Guau"))
  82. print(sultan + firulai)
  83.  
  84.  
  85.  
  86. # HERENCIA
  87. class Perro:
  88.     # Atributo de clase:
  89.     especie = "Canis familiaris"
  90.    
  91.     def __init__(self, nombre, edad):  
  92.         '''Crea los atributos de cada instancia'''
  93.         self.nombre = nombre
  94.         self.edad = edad
  95.        
  96.     # Metodos:
  97.     def __str__(self):
  98.         return f"{self.nombre} tiene {self.edad} años de edad"
  99.        
  100.     def ladra(self, sonido):
  101.         return f"{self.nombre} grita {sonido}"
  102.        
  103.     def __add__(self1, self2):
  104.         return f"{self1.nombre} y {self2.nombre} han tenido cachorritos"
  105.  
  106.  
  107. class Bulldog(Perro):
  108.     def ladra(self, sonido="Arf Arf"):
  109.         return f"{self.nombre} dijo {sonido}"
  110.        
  111. class Chihuahua(Perro):
  112.     def ladra(self, sonido="grr grr"):
  113.         return super().ladra(sonido)
  114.  
  115. cachito = Chihuahua("Cachito",3)
  116. oscar = Bulldog("Oscar",7)
  117.  
  118. print(cachito.ladra())
  119. print(oscar.ladra())
  120. """
  121.  
  122. # polimorfismo
  123. # nos permite invocar un metodo que arroja diferentes resultados segun el objeto
  124.  
  125. class Gato():
  126.     def __init__(self, nombre):
  127.         self.nombre = nombre
  128.        
  129.     def hablar(self):
  130.         return "MIAU"
  131.  
  132. class Perro():
  133.     def __init__(self, nombre):
  134.         self.nombre = nombre
  135.        
  136.     def hablar(self):
  137.         return "GUAU"
  138.  
  139.  
  140. def escuchar_mascota(mascota):
  141.     return mascota.hablar()
  142.    
  143. cacho = Perro("Cacho")
  144. fufu = Gato("Fufu")
  145.  
  146. print(f"Un perro dice {escuchar_mascota(cacho)}")
  147. print(f"Un gato dice {escuchar_mascota(fufu)}")
  148.  
  149.  
  150. # POLIMORFISMO CON HERENCIA
  151. class Animal():
  152.     def hablar(self):
  153.         pass
  154.    
  155.  
  156.  
  157. class Gato(Animal):
  158.     def __init__(self, nombre):
  159.         self.nombre = nombre
  160.        
  161.     def hablar(self):
  162.         return "MIAU"
  163.  
  164. class Perro(Animal):
  165.     def __init__(self, nombre):
  166.         self.nombre = nombre
  167.        
  168.     def hablar(self):
  169.         return "GUAU"
  170.  
  171. cacho = Perro("Cacho")
  172. fufu = Gato("Fufu")
  173.  
  174. print(f"Un perro dice {cacho.hablar()}")
  175. print(f"Un gato dice {fufu.hablar()}")
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement