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