Entrada

Programación Orientada a Objetos

Clases y objetos

En POO, una clase es un plano o modelo para un objeto. Define los atributos y métodos que un objeto puede tener. Para definir una clase se usa la palabra reservada class seguido del nombre de la clase:

1
2
3
4
5
6
7
class Persona:
  def __init__(self, nombre, edad):
    self.nombre = nombre
    self.edad = edad

  def presentarse(self):
    print(f"Hola, mi nombre es {self.nombre} y tengo {self.edad} años.")

El método __init__ es el constructor de la clase que se llama cuando se crea una nueva instancia de la clase. En este caso, toma dos argumentos, nombre y edad, y establece los valores correspondientes de los atributos.

Para crear una instancia de la clase Persona, simplemente llamamos al nombre de la clase con los argumentos necesarios:

  • 1
    2
    
    marco = Persona("Marco", 32)
    marco.presentarse()
    
  • 1
    
    Hola, mi nombre es Marco y tengo 32 años.
    

Herencia

La herencia es una técnica en POO que permite que una clase herede atributos y métodos de una clase padre p superclase. En Python, una clase hereda de otra recibiendo la clase Padre como parámetro:

1
2
3
4
5
6
7
8
class Empleado(Persona):
  def __init__(self, nombre, edad, renta):
    super().__init__(nombre, edad)
    self.renta = renta

  def presentarse(self):
    super.presentarse()
    print(f"Soy un empleado y mi renta mensual es {self.renta}")

En este ejemplo, creamos una clase Empleado que hereda de la clase Persona y agrega un nuevo atributo renta y un método presentarse modificado que incluye información sobre la renta.

La función super() se utiliza para llamar al método __init__ de la clase padre, que establece los atributos heredados. Luego, se establece el nuevo atributo renta en la clase hija.


Polimorfismo

El polimorfismo es la capacidad de un objeto de tomar varias formas. En POO, el polimorfismo se logra mediante la sobreescritura de métodos de una superclase en una subclase. En Python, esto se puede hacer fácilmente de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Vehiculo:
    def moverse(self):
        print("El vehículo se está moviendo.")

class Auto(Vehiculo):
    def moverse(self):
        print("El auto se está moviendo")

v = Vehiculo()
v.moverse()  # El vehículo se está moviendo.

a = Auto()
a.moverse()  # El auto se está en movimiento.

En este ejemplo, creamos dos clases, Vehiculo y Auto. La clase padre tiene el método moverse(self), que imprime un mensaje. La clase Auto hereda de la clase


Encapsulamiento

El encapsulamiento es el proceso de ocultar detalles de implementación de un objeto a otros objetos. En Python, esto se logra a través de la convención de nombres. Los atributos y métodos que comienzan con dos guiones bajos (_) se convierten en atributos y métodos privados, lo que significa que solo se pueden acceder desde dentro de la clase.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class CuentaBancaria:

  def __init__(self, nombre, saldo):
    self.__nombre = nombre
    self.__saldo = salda

  def depositar(self, cantidad):
    self.__saldo += cantidad

  def retirar(self, cantidad):
    if cantidad > self.saldo:
      print("No hay suficiente saldo en la cuenta.")
    else:
      self.__saldo -= cantidad

  def obtener_saldo(self):
    return self.__saldo

Mi lema es

Esta entrada está licenciada bajo CC BY 4.0 por el autor.