Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- Programación orientada a objetos (POO)
- La POO es un paradigma de programación que proporciona un medio
- para estructurar programas y que las propiedades y los comportamientos
- se agrupen en objetos individuales
- Por ejemplo, un objeto podría representar a una persona con propiedades como nombre,
- edad y dirección y comportamientos como comer, hablar y respirar
- La POO modela entidades del mundo real como objetos de software con datos asociados
- y que pueden realizar ciertas funciones
- CLASES E INSTANCIA
- Las clases se utilizan para crear estructuras de datos. Las clases definen mètodos que se
- identifican con comportamientos y acciones y atributos que se relacionan con propiedades
- """
- class Perro:
- # Atributo de clase (todas las instancias tiene la misma propiedad)
- especie = "Canis familiaris"
- def __init__(self,nombre,edad):
- """Creo los atributos de la instancia"""
- self.nombre = nombre
- self.edad = edad
- # Creo dos instancias de perro
- sultan = Perro("Sultan",9)
- firulai = Perro("Firulai",4)
- # imprimo el nombre de sultan
- print(sultan.nombre)
- # imprimo la edad de firulai
- print(firulai.edad)
- # accedo al atributo de clase
- print(firulai.especie)
- print(sultan.especie)
- # los objetos o instancias son mutables por default
- sultan.edad = 7
- firulai.especie = "Raza canina"
- ##### Reescribo la clase Perro con algunos métodos
- class Perro:
- # Atributo de clase (todas las instancias tiene la misma propiedad)
- especie = "Canis familiaris"
- def __init__(self,nombre,edad):
- """Creo los atributos de la instancia"""
- self.nombre = nombre
- self.edad = edad
- def descripcion(self):
- return f"{self.nombre} tiene {self.edad} años de edad"
- def ladra(self, sonido):
- return f"{self.nombre} dice {sonido}"
- tronco = Perro("Tronco",5)
- print(tronco.descripcion())
- print(tronco.ladra("Woof Woof"))
- ###### mejoremos la clase con métodos mágicos, dunder methods o métodos especiales
- class Perro:
- # Atributo de clase (todas las instancias tiene la misma propiedad)
- especie = "Canis familiaris"
- def __init__(self,nombre,edad):
- """Creo los atributos de la instancia"""
- self.nombre = nombre
- self.edad = edad
- def __str__(self):
- return f"{self.nombre} tiene {self.edad} años de edad"
- def ladra(self, sonido):
- return f"{self.nombre} dice {sonido}"
- duque = Perro("Duque",5)
- print(duque)
- print(duque.ladra("Guau"))
- #### HERENCIA
- """
- Es el proceso mediante el cual una clsae secundaria asume los métodos y atributos de una
- clase principal
- """
- class Perro:
- # Atributo de clase (todas las instancias tiene la misma propiedad)
- especie = "Canis familiaris"
- def __init__(self,nombre,edad):
- """Creo los atributos de la instancia"""
- self.nombre = nombre
- self.edad = edad
- def __str__(self):
- return f"{self.nombre} tiene {self.edad} años de edad"
- def ladra(self, sonido):
- return f"{self.nombre} dice {sonido}"
- # creo clases hijas
- class JackRusellTerrier(Perro):
- def ladra(self, sonido="Arf"):
- return f"{self.nombre} dice {sonido}"
- class Dauschund(Perro):
- def ladra(self, sonido="Woof"):
- return f"{self.nombre} dice {sonido}"
- class Bulldog(Perro):
- def ladra(self, sonido="Grrr"):
- return f"{self.nombre} dice {sonido}"
- miles = JackRusellTerrier("Miles",4)
- buddy = Dauschund("Buddy",7)
- jack = Bulldog("Jack", 3)
- print(buddy)
- print(buddy.ladra())
- print(jack.ladra("Miau"))
- # POLIMORFISMO
- class Gato():
- def __init__(self, nombre):
- self.nombre = nombre
- def hablar(self):
- print("Miau")
- class Perro():
- def __init__(self, nombre):
- self.nombre = nombre
- def hablar(self):
- print("Guau")
- def EscucharMascota(animal):
- animal.hablar()
- cacho = Perro("Cacho")
- fufu = Gato("Fufu")
- print("Mi perro dice", end=" ")
- EscucharMascota(cacho)
- print("Mi gato dice", end=" ")
- EscucharMascota(fufu)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement