Cargando...
Enlace de descarga: http://datamanagement.es/Recursos/POO/python-orientado-objetos.txt
El objetivo de este nuevo artículo es sencillo, aprender los conocimientos básicos de la programación orientada a objetos utilizando Python.
Los gurús de la informática y de la programación suelen utilizar una jerga técnica entendibles por personas con altos conocimientos de programación. Con este artículo voy a intentar en la medida de lo posible no utilizar esta jerga e intentar explicarlo de manera sencilla.
Antes de empezar con el artículo he de decir que hay que tener un mínimo de conocimientos de programación en cualquier lenguaje, como mínimo, escribir “Hello World”.
Como en mis anteriores publicaciones, me gusta inventarme un posible problema real para aplicar la solución.
Enlace a otro artículo: http://datamanagement.es/2019/10/13/proceso-etl-con-python-desde-cero-y-paso-a-paso/
Enlace a wikipedia: https://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
Explicado para “tontos” porque el mundo está lleno de gurús a los que no se les entiende nada.:
Cuando se programa hay trozos de código que se pueden reutilizar, estos trozos de código que se pueden reutilizar contienen funcionalidad específica que realiza algo en concreto como por ejemplo contar cuántos números hay en un texto, encriptar un texto o enviar un email.
Bien, estos códigos reutilizables se pueden definir como una función que cada vez que se invoca “se le da la orden de ejecutar la función” realiza la funcionalidad. Está muy bien porque se puede utilizar tantas veces queramos sin tener que volver a escribir el código pero hay un problema.
Como introducción, voy a inventarme una historia para dar sentido a la programación orientada a objetos. Antes de explicar qué es la programación orientada a objetos, de explicar qué es un atributo, un método… contaré una historia para luego llevarla al mundo de la programación.
Para la creación de la historia, voy a partir de esta serie de elementos y sus características. A partir de aquí, la historia va a tener interacción entre ellos.
Esta historia trata sobre Fran, Álex, María.
Fran vive en Palma de Mallorca y tiene un perro llamado Anaconda, nació el 4 de abril de 1990 y en el momento en el que se escribe la historia tiene la edad de 29 años. No es necesario definir el sexo de Fran pero para que no quede duda Fran es hombre.
Álex es de Madrid, no tiene animales y nació el 29 de febrero de 2000, fué un año bisiesto por eso es especial. Además, Álex utiliza Tinder y es de los que se ponen en la descripción “Soy un hombre especial, salúdame y te cuento”.
María es de Alicante, nació el 1 de enero de 1993 y tiene 2 perros llamados Sam y Roy.
Anaconda es el perro de Fran, es un Pitbull nacido el 1 de julio de 2018.
Sam y Roy son los perros de María, son dos chuchos (sin raza) y el primero nació el 1 de mayo de 2015 y el segundo el 5 de junio de 2016.
Fran se compra un coche, un Audi A1 blanco “too guapo” y María un Range Rover Evoque “too chulo” matriculados los dos el 1 de enero de 2017.
Además de todo esto, a la historia hay que añadir 2 perros más que acaban de aparecer por arte de magia y no tienen dueño, el primero es Rocky y el segundo es Cobra, además, no sabemos ni la raza ni la fecha de nacimiento.
Enlace de descarga: http://datamanagement.es/Recursos/POO/python-orientado-objetos.txt
class Persona:
nombre = None
perros = list()
fecha_nacimiento = None
ciudad = None
sexo = None
descripcion = None
coche = None
def __init__(self, nombre = None, sexo = None, fecha_nacimiento = None, ciudad = None):
self.nombre = nombre
self.fecha_nacimiento = fecha_nacimiento
self.ciudad = ciudad
self.ciudad.ciudadanos.append( self )
def getCiudad(self):
return self.ciudad
def getNombre(self):
return self.nombre
def getPerros(self):
return self.perros
def getFecha_Nacimiento(self):
return self.fecha_nacimiento
def getSexo(self):
self.sexo
def setDescripcion( self, descripcion = "Soy un hombre especial, salúdame y te cuento" ):
self.descripcion = descripcion
def getDescripcion(self):
return self.descripcion
def setCoche(self, coche = None ):
self.coche = coche
def getCoche(self):
return self.coche
class Perro:
nombre = None
dueno = None
fecha_nacimiento = None
ciudad = None
raza = None
def __init__(self, nombre = None, dueno = None, fecha_nacimiento = None, ciudad = None, raza = None):
self.nombre = nombre
self.dueno = dueno
self.fecha_nacimiento = fecha_nacimiento
self.ciudad = ciudad
self.raza = raza
self.dueno.perros.append( self )
self.ciudad.perros.append( self )
class Ciudad:
ciudad = None
codigo_postal = None
pais = None
ciudadanos = list()
perros = list()
def __init__(self, ciudad = None, codigo_postal = None, pais = None):
self.ciudadanos.clear()
self.ciudad = ciudad
self.codigo_postal = codigo_postal
self.pais = pais
def getCiudad(self):
return self.ciudad
def getPais(self):
return self.pais
def getCiudadanos(self):
return self.ciudadanos
class Coche:
marca = None
modelo = None
dueno = None
ano_matricula = None
descripcion = None
def __init__( self, marca = None, modelo = None, ano_matricula = None ):
self.marca = marca
self.modelo = modelo
self.ano_matricula = ano_matricula
def setDescripcion(self, descripcion = None ):
self.descripcion = descripcion
### Creación de las ciudades
Palma = Ciudad( ciudad = "Palma de Mallorca", codigo_postal = "07001", pais = "España" )
Crevillente = Ciudad( ciudad = "Crevillente", codigo_postal = "03330", pais = "España" )
Madrid = Ciudad( ciudad = "Madrid", codigo_postal = "28001", pais = "España" )
### Creación de las personas
Fran = Persona( nombre = "Fran", sexo = "Hombre", fecha_nacimiento = "1990-04-04", ciudad = Palma )
Maria = Persona( nombre = "María", sexo = "Mujer", fecha_nacimiento = "1993-01-01", ciudad = Crevillente )
Alex = Persona( nombre = "Álex", sexo = "Hombre", fecha_nacimiento = "2000-02-29", ciudad = Madrid )
Alex.setDescripcion( descripcion = "Soy un hombre especial, salúdame y te cuento" )
### Creación de los perros
Anaconda = Perro( nombre = "Anaconda", dueno = Fran
, fecha_nacimiento = "2018-07-01", ciudad = Fran.getCiudad()
, raza = "Pitbull" )
Sam = Perro( nombre = "Sam", dueno = Maria
, fecha_nacimiento = "2015-05-01", ciudad = Maria.getCiudad()
, raza = "Chucho" )
Roy = Perro( nombre = "Roy", dueno = Maria
, fecha_nacimiento = "2016-06-05", ciudad = Maria.getCiudad()
, raza = "Chucho" )
### Creación de los coches
AudiA1 = Coche( marca = "Audi", modelo = "A1", ano_matricula = 2017 )
RangeRover = Coche( marca = "Range Rover", modelo = "Evoque", ano_matricula = 2017 )
AudiA1.setDescripcion( descripcion = "Este coche está \"Too Guapo\"" )
RangeRover.setDescripcion( descripcion = "Este coche está \"Too Chulo\"" )
### Asignar los coches a Fran y a María
Fran.setCoche( coche = AudiA1 )
Maria.setCoche( coche = RangeRover )
### Responder a las preguntas ###
#1. ¿Que coche tiene Fran?
msg = Fran.getNombre() + " tiene un " + Fran.getCoche().marca + "-" + Fran.getCoche().modelo \
+ " y la descripción es: " + Fran.getCoche().descripcion
print(msg)
#2. ¿Que coche tiene María?
msg = Maria.getNombre() + " tiene un " + Maria.getCoche().marca + "-" + Maria.getCoche().modelo \
+ " y la descripción es: " + Maria.getCoche().descripcion
print(msg)
#3. ¿Qué perros son de María?
print( "\nLos perros de María son" )
for perro in Maria.perros:
if( perro.dueno == Maria ):
print(perro.nombre)
#4. ¿Qué perros son de Fran?
print( "\nLos perros de Fran son" )
for perro in Fran.perros:
if( perro.dueno == Fran ):
print(perro.nombre)
#5. ¿Qué perros viven en Crevillente?
print( "\nMostrar los perros que viven en Crevillente" )
for perro in Crevillente.perros:
if ( perro.ciudad == Crevillente ):
print( perro.nombre )
Si te ha parecido útil y tienes cualquier consulta no dudes en ponerte en contacto con el correo info@datamanagement.es o bien usando el formulario de contacto que se encuentra en la página web http://datamanagement.es/contacto.php
Enlaces de interés
Virgen del pilar nº4, ático H
03330 Crevillente (Alicante)
Francisco Rodriguez Alfaro