programación orientada por

objetos en PYTHON

programación orientada por

objetos en PYTHON

John Cardozo

John Cardozo

Agenda

  • UML: Diagrama Estático de Clases

  • Clases

  • Atributos

  • Métodos

  • Objetos

  • Listas de objetos

uml: diagrama estático de clases

Nombre

Atributos

Métodos

Clase

Clase1

Relaciones

Clase2

*

Clase1 tiene muchos Clase2

Clase1

Clase2

3

Clase2 tiene 3 Clase1

clases y objetos

class Persona:
    nombre = ''
    edad = 0

Definición de clase

# Crea el objeto
p = Persona()
# Modifica los atributos
p.nombre = 'Luis'
p.edad = 64
# Obtiene e imprime los atributos
print(p.nombre)
print(p.edad)

Creación de objetos

class Persona:
    nombre = ''
    edad = 0

    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad

Definición de clase

p = Persona(nombre='Luis', edad=4)
print(p.nombre)
print(p.edad)

Creación de objetos

Sin constructor

Con constructor

mÉtodos

class Persona:
    nombre = ''
    edad = 0

    def __init__(self, nombre, edad):
        self.nombre = nombre
        self.edad = edad
        
    def es_adulto(self):
        return self.edad >= 18
    
    def obtener_nombre(self):
        return 'Este es el nombre de la persona: {0}'.format(self.nombre)    

    def __str__(self):
        return 'Nombre = {0}, Edad= {1}'.format(self.nombre, self.edad)

Definición de clase con métodos (constructor, str y negocio)

métodos

# Instanciación de la clase (creación de objeto)
p = Persona(nombre='Luis', edad=4)

# Acceso a los atributos del objeto
print(p.nombre)
print(p.edad)

# Uso implícito del método str de la clase Persona
print(p)

# Invocación de un método de negocio
p.es_adulto()

Invocación de métodos

herencia

class Empleado(Persona):
    salario = 0
    __deuda = 0 # Atributo privado
    
    def tiene_salario_asignado(self):
        return self.salario != 0
    
    def obtener_nombre(self):
        return 'Nombre de empleado: {0}'.format(self.nombre)

La clase Empleado hereda de la clase Persona

Clase Padre

Clase Hija

herencia

# Creación de objeto hijo
e = Empleado(nombre='Luis', edad=20)

# Accede a los atributos de la clase
print(e)
e.salario = 200
print(e.salario)

# Invoca un metodo de la clase hija
print(e.tiene_salario_asignado())

# Invoca un método sobreescrito
print(e.obtener_nombre())

Acceso a atributos y métodos de la clase hija

objetos y listas

# Crea una lista
personas = []

# Crea personas
p1 = Persona(nombre='Axl', edad=28)
p2 = Persona(nombre='Bono', edad=32)
p3 = Persona(nombre='Mick', edad=43)
p4 = Persona(nombre='Brian', edad=40)

# Agrega personas a la lista
personas.append(p1)
personas.append(p2)
personas.append(p3)
personas.append(p4)

# Imprime las personas
for persona in personas:
    print(persona)

Objetos en una lista

listas como atributo de objetos

class Clase():
    materia = ''
    creditos = 0
    
class Estudiante():
    nombre = ''
    clases = []
c1 = Clase()
c1.materia = 'POO'
c1.creditos = 4
    
c2 = Clase()
c2.materia = 'Programacion'
c2.creditos = 2

e = Estudiante()
e.nombre = 'John'

# Agrega objetos a un atributo de un objeto
e.clases.append(c1)
e.clases.append(c2)
print(e.nombre)
for clase in e.clases:
    print('Materia: {0} - Créditos: {1}'.format(clase.materia, clase.creditos))

Definición de clases

Agregar objetos al atributo

Acceso a atributos de la clase

john cardozo

johncardozo@gmail.com

Python: Programación Orientada por Objetos

By John Cardozo

Python: Programación Orientada por Objetos

Clases, objetos, atributos

  • 886