D A T A M A N A G E M E N T

Cargando...

Descripción

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.

Objetivo

¿qué es la programación orientada a objetos?

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.

Historia

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.

Desarrollo

Enlace de descarga: http://datamanagement.es/Recursos/POO/python-orientado-objetos.txt 

Clase Persona

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

Clase Perro

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 )

Clase Ciudad

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

Clase Coche

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

Utilización de las clases y objetos

### 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 )

Consultar la información de los objetos

### 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 )

Contacto

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

Leave a Comment

Virgen del pilar nº4, ático H

03330 Crevillente (Alicante)