Entrada

Python 馃悕 : 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
Esta entrada est谩 licenciada bajo CC BY 4.0 por el autor.