Programación Orientada a Objetos (POO): Guía Completa con Ejemplos
La Programación Orientada a Objetos (POO) es un paradigma de programación que organiza el software en torno a "objetos" y "clases". En este artículo, te explicamos los conceptos clave de POO y te mostramos ejemplos prácticos en Python.
¿Qué es la Programación Orientada a Objetos (POO)?
La POO es un paradigma de programación que se centra en el uso de objetos para modelar la lógica del software. Los objetos son instancias de clases, que actúan como plantillas para definir atributos (datos) y métodos (comportamientos).
Ventajas de la POO:
- Reutilizabilidad: El código se puede reutilizar en diferentes partes del programa.
- Modularidad: El código se organiza en módulos independientes (clases).
- Mantenibilidad: Es más fácil mantener y actualizar el código.
- Pruebas unitarias: Facilita la creación de pruebas para cada componente.
Conceptos Clave de la POO
Los conceptos fundamentales de la POO son:
1. Clases y Objetos
Una clase es una plantilla o prototipo que define los atributos y métodos de un tipo de dato. Un objeto es una instancia de una clase, con valores específicos para sus atributos.
Ejemplo en Python:
class Coche:
def __init__(self, marca, modelo):
self.marca = marca
self.modelo = modelo
mi_coche = Coche("Toyota", "Corolla")
print(mi_coche.marca) # Salida: Toyota
2. Atributos
Los atributos son características de una clase. Todos los objetos creados a partir de una clase tendrán estos atributos.
Ejemplo:
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
persona1 = Persona("Juan", 30)
print(persona1.nombre) # Salida: Juan
3. Métodos
Los métodos son funciones definidas dentro de una clase que describen el comportamiento de los objetos.
Ejemplo:
class Calculadora:
def sumar(self, a, b):
return a + b
calc = Calculadora()
print(calc.sumar(5, 3)) # Salida: 8
4. Constructor (__init__)
El método __init__ es el constructor de una clase en Python. Se llama automáticamente cuando se crea un nuevo objeto.
Ejemplo:
class Animal:
def __init__(self, nombre):
self.nombre = nombre
mi_animal = Animal("Perro")
print(mi_animal.nombre) # Salida: Perro
5. Parámetro Self
El parámetro self es una referencia a la instancia actual de la clase. Se utiliza para acceder a los atributos y métodos de la clase.
Ejemplo:
class Libro:
def __init__(self, titulo, autor):
self.titulo = titulo
self.autor = autor
def mostrar_info(self):
print(f"Título: {self.titulo}, Autor: {self.autor}")
mi_libro = Libro("Cien Años de Soledad", "Gabriel García Márquez")
mi_libro.mostrar_info() # Salida: Título: Cien Años de Soledad, Autor: Gabriel García Márquez
Ejemplo Completo de POO en Python
Aquí tienes un ejemplo completo que combina todos los conceptos de POO:
class CuentaBancaria:
def __init__(self, titular, saldo=0):
self.titular = titular
self.saldo = saldo
def depositar(self, cantidad):
self.saldo += cantidad
print(f"Depósito de {cantidad} realizado. Saldo actual: {self.saldo}")
def retirar(self, cantidad):
if cantidad > self.saldo:
print("Fondos insuficientes")
else:
self.saldo -= cantidad
print(f"Retiro de {cantidad} realizado. Saldo actual: {self.saldo}")
def mostrar_saldo(self):
print(f"Saldo actual de {self.titular}: {self.saldo}")
# Crear una cuenta bancaria
cuenta = CuentaBancaria("Juan Pérez", 1000)
cuenta.depositar(500) # Depósito de 500 realizado. Saldo actual: 1500
cuenta.retirar(200) # Retiro de 200 realizado. Saldo actual: 1300
cuenta.mostrar_saldo() # Saldo actual de Juan Pérez: 1300
Conclusión
La Programación Orientada a Objetos (POO) es un paradigma poderoso que permite organizar el código de manera modular y reutilizable. Dominar conceptos como clases, objetos, atributos, métodos y constructores te ayudará a escribir software más eficiente y mantenible. ¡Practica con estos ejemplos y lleva tus habilidades de programación al siguiente nivel!
Recursos Adicionales
Si quieres profundizar en el tema, te recomendamos los siguientes recursos:
POO Guia de Instalacion Python
Todas las
clases tienen la siguiente estructura:
Clase
Nombre clase:
#1 atributos de clase
#2 constructor
#2.1 atributos de instancia
# 3 Métodos
Algunos ejemplos de clases:
a) Ejemplo de clase de números reales
'''clase de numeros complejos en PYTHON'''
class complejo :
#atributos de clase: no hay
'''constructor de la clase'''
def __init__ ( self ,real,imaginario):
#atritubos de instancia
self . real = yo real
. imagen = imaginario
#metodos de la clase complejo
def abs ( self ):
print (( self . real * self . real) + ( self . imag * self . imag))
def suma ( self ,num2):
return complejo( self . real + num2 . real, self . imag + num2 . imag)
def mostrar ( auto ):
imprimir ( auto . real)
imprimir ( auto . imag)
b) Clase Animal
'''Clase Animal'''
class Animal :
#constructor
def __init__ ( self ):
print ( "Animal creado" )
#metodos
def quienSoy ( self ):
print ( "Animal" )
def comer ( self ):
print ( "estoy comiendo" )
#------------------------------
#clase padre Animal, Perro hereda
class Perro (Animal):
def __inti__ ( self ):
animales _ __ini__( self )
print ( "perro creado" )
#metodos
def quienSoy ( self ):
print ( "perro" )
def ladrar ( self ):
print ( "guau, guau, guau" )
#------------------------
def main ():
#creando objetos de la clase
d = Perro()
#usando sus métodos
d . quienSoy()
re . contendiente()
re . ladrar()
si __nombre__ == '__main__' :
main()
#------------------------
c) Clase Vehiculo
class Vehiculo:
#atributos de la clase
contador=0
def __init__(self,color):
#atributos de instancia
Vehiculo.contador += 1
serie=Vehiculo.contador
self.color=color
#instanciando la clase Vehiculo
auto1=Vehiculo("Azul")
auto2=Vehiculo("Verde")
d) Clase Vehiculo con encapsulamiento
class Vehiculo:
#atributos de la clase
contador=0
colores=("BLANCO","ROJO","VERDE")
def __init__(self,color):
#atributos de instancia
Vehiculo.contador += 1
serie=Vehiculo.contador
#encapsulamiento
self.set_color(color)
#para controlar qque se creen solo 3 colores
def set_color(self,color):
#convertiendo a mayuscula y quitando espacio
color.upper.strip()
if color in Vehiculo.colores:
self.color=color
else:
#si no especifica color, ponemos
#por defecto el primero de la dupla
self.color=Vehiculo.colores[0]
#instanciando la clase Vehiculo
auto1=Vehiculo("Azul")
auto2=Vehiculo("Verde")
Procedimiento. - Es una
operación que modifica el estado de uno, varios o todas las propiedades de un
objeto.
Función. - Devuelve un solo resultado
¿Cuáles son los pasos para resolver problemas de aplicación?
a) Análisis
b) Encontrar los parámetros de entrada y salida
c) Diseño del algoritmo y implementación
2
Manejo de números enteros
'''clase numero entero'''
class Nentero :
def __init__ ( self ,value):
self . n = valor
def getData ( self ):
devuelve self . n
def setData ( self ,numero):
self . n = numero
def mostrar ( self ):
print ( self . n)
def main():
n1 = Nentero( 5 )
print ( "el objeto es:" ,n1 . mostrar())
si __nombre__ == "__principal__" :
main()
No hay comentarios:
Publicar un comentario