Guía Exhaustiva de Programación Orientada a Objetos, Diccionarios y Archivos en Python
Módulo III: Programación Orientada a Objetos (POO) en Python
- La Programación Orientada a Objetos (POO) se define como un paradigma de programación que permite el desarrollo de aplicaciones mediante el uso de objetos que representan elementos del mundo real.
- A diferencia de la programación tradicional, la cual organiza el software a través de funciones y procedimientos, la POO se estructura en torno a clases y objetos.
- Este enfoque tiene como fin facilitar la creación de programas más organizados, que permitan la reutilización de código y que resulten fáciles de mantener.
Los Cuatro Pilares de la POO
La Programación Orientada a Objetos se sustenta sobre cuatro fundamentos principales:
- Clases y Objetos.
- Herencia.
- Abstracción.
- Polimorfismo.
- Python destaca por ser un lenguaje que permite la implementación de estos pilares de manera sencilla y eficiente.
Ventajas de la POO
- Fomenta la reutilización de fragmentos de código.
- Simplifica las tareas de mantenimiento de las aplicaciones.
- Optimiza la organización estructural del programa.
- Reduce significativamente la duplicación de código.
- Es ideal para la gestión y trabajo en proyectos de gran envergadura.
- Ofrece una forma de representar situaciones reales mediante objetos de software.
3.3.1 Clases y Objetos
¿Qué es una Clase?
- Se define como una plantilla, modelo o plano que establece las características y comportamientos que poseerán los objetos creados a partir de ella.
- Metáfora: Se puede imaginar como el plano de una casa; el plano contiene la información necesaria para la construcción, pero no es la casa física en sí.
Componentes de una Clase
- Atributos: Representan las características o propiedades intrínsecas de un objeto. Ejemplos citados:
- Nombre.
- Edad.
- Color.
- Precio.
- Marca.
- Métodos: Son las acciones o funciones que el objeto es capaz de realizar. Ejemplos citados:
Encender()Apagar()Calcular()MostrarDatos()
Sintaxis y Constructor
- Sintaxis Básica: Se emplea la palabra reservada
class. Ejemplo:class Estudiante: pass. - El Constructor (init): Es un método especial que se autoejecuta al crear un objeto. Su función primordial es inicializar los atributos.
- Sintaxis del Constructor:
class Estudiante:def __init__(self, nombre, edad):self.nombre = nombreself.edad = edad
¿Qué es un Objeto?
- Un objeto es una instancia concreta de una clase. Siguiendo la analogía: si la clase es el molde, el objeto es el producto final.
- Ejemplo de instanciación:
- Código:
est1 = Estudiante("Carlos", 20) - Al ejecutar
print(est1.nombre), el resultado esCarlos.
- Código:
Relación Clase-Objeto (Ejemplos)
- Clase:
Vehículo-> Objeto:Toyota Corolla. - Clase:
Estudiante-> Objeto:Ana. - Clase:
Libro-> Objeto:Matemática Básica. - Clase:
Computadora-> Objeto:Laptop Dell.
Métodos en la Clase
- Son funciones definidas dentro del cuerpo de la clase.
- Ejemplo:
class Persona:def saludar(self):print("Hola, bienvenido")
- Uso:
p1 = Persona(), seguido dep1.saludar().
3.3.2 Herencia
Definición de Herencia
- Es el mecanismo que permite generar nuevas clases partiendo de clases ya existentes. La nueva clase adquiere automáticamente los atributos y métodos de la clase original, lo que promueve la reutilización y evita redundancias.
Tipos de Clase en Herencia
- Clase Padre: Es la clase base que suministra los métodos y atributos originales.
- Clase Hija: Es la clase nueva que hereda las propiedades de la clase padre.
Ejemplo Completo de Herencia
class Persona:def saludar(self): print("Hola")
class Estudiante(Persona):pass
- Resultado: Si se crea
e1 = Estudiante()y se llama ae1.saludar(), la salida seráHola.
Ventajas de la Herencia
- Reutilización exhaustiva de código previo.
- Reducción del tiempo dedicado al desarrollo.
- Estructura y organización superior.
- Facilidad en el mantenimiento correctivo y evolutivo.
3.3.3 Abstracción
Concepto de Abstracción
- Consiste en exponer solamente la información y funcionalidades relevantes para el usuario, ocultando los procesos y detalles internos complejos. El fin es simplificar la interacción con el sistema.
Ejemplos de Abstracción
- Vida Real (Cajero Automático): El usuario solo interactúa con la interfaz (insertar tarjeta, digitar clave, elegir opción) sin necesidad de comprender el funcionamiento interno del sistema bancario.
- Programación: En una clase
CuentaBancaria, el usuario ejecutacuenta.depositar()sin preocuparse por la lógica de base de datos o validaciones internas.
Beneficios
- Mitiga la complejidad del software.
- Hace que el sistema sea más intuitivo.
- Incrementa la seguridad al proteger detalles sensibles.
- Oculta implementaciones innecesarias para el uso externo.
3.3.4 Polimorfismo
Definición de Polimorfismo
- El término proviene del griego y significa "múltiples formas".
- En POO, permite que distintos objetos respondan de manera diversa a la invocación de un mismo método.
Ejemplo Práctico
- Clase Perro:
def sonido(self): print("Guau"). - Clase Gato:
def sonido(self): print("Miau"). - Implementación: Al iterar una lista con ambos objetos
animales = [Perro(), Gato()]y llamar aanimal.sonido(), cada uno emite su sonido característico (GuauyMiaurespectivamente).
Ventajas
- Aporta flexibilidad extrema a la lógica de programación.
- Permite extender las aplicaciones de forma sencilla.
- Minimiza la repetición de estructuras condicionales.
- Optimiza la reutilización de nombres de métodos.
3.4 Diccionarios
Definición y Estructura
- Un diccionario es una estructura de datos diseñada para almacenar información en pares de Clave (Key) y Valor (Value). La clave actúa como un índice rápido para recuperar su valor asociado.
- Ejemplo:
estudiante = {"nombre": "Ana", "edad": 20, "carrera": "Ingeniería de Sistemas"}.
Características
- Se delimitan mediante llaves
{}. - Cada elemento es un par Clave-Valor.
- Las claves son obligatoriamente únicas dentro de un mismo diccionario.
- Pueden contener diversos tipos de datos simultáneamente.
- Son estructuras mutables (se pueden editar tras su creación).
Operaciones Básicas
- Creación:
persona = {"nombre": "Carlos", "edad": 25, "ciudad": "Panamá"}. - Diccionario Vacío:
datos = {}. - Agregar Elementos:
persona["telefono"] = "6000-0000". - Consultas: Se accede mediante
diccionario["clave"]. Ejemplo:persona["nombre"]devuelveCarlos. - Método get(): Permite una recuperación segura; si la clave no existe, devuelve
Noneen lugar de un error.
Recorrido de Diccionarios
- Claves:
for clave in persona: print(clave). - Valores:
for valor in persona.values(): print(valor). - Clave y Valor:
for clave, valor in persona.items(): print(clave, valor).
Métodos de Manipulación
keys(): Lista todas las claves.values(): Lista todos los valores.items(): Lista los pares clave-valor.update(): Modifica valores de claves existentes. Ejemplo:persona.update({"edad": 30}).pop(): Elimina una clave específica y su valor.clear(): Vacía el diccionario por completo.len(): Informa la cantidad total de elementos.
3.5 Archivos
Definición e Importancia
- Un archivo es un conjunto de datos residentes en un dispositivo de almacenamiento de forma permanente.
- Permiten que la información persista una vez que el programa finaliza, evitando la pérdida de datos guardados en variables volátiles.
- Ventajas: Persistencia, intercambio de datos y recuperación posterior de información; esenciales para bases de datos.
Tipos de Archivos
- Archivos de Texto: Contenido legible por humanos (Ej:
.txt,.csv). - Archivos Binarios: Formatos internos para la computadora (Ej: imágenes, videos, aplicaciones).
Manejo de Archivos en Python (open)
- La función central es
open("nombre_archivo", "modo"). - Modos de Apertura:
r: Lectura (Read).w: Escritura (Write) - sobrescribe el contenido.a: Agregar (Append) - añade al final.x: Crear (Create) - falla si el archivo ya existe.
Operaciones de Lectura y Escritura
- Lectura completa:
archivo.read(). - Lectura línea por línea:
for linea in archivo: print(linea). - Escritura:
archivo.write("Texto"). - Cierre: Es fundamental usar
archivo.close()para liberar recursos. - Ejemplo de escritura:
archivo = open("notas.txt", "w")archivo.write("Juan - 85\n")archivo.close()
Actividades y Evaluación
Actividad de Mapa Mental (POO)
- Conceptos obligatorios: POO, Clases, Objetos, Métodos, Atributos, Herencia, Abstracción, Polimorfismo.
- Requisitos: Colores, conectores, ejemplos breves y entrega en PDF.
- Penalizaciones:
- Entrega mañana (viernes): puntos.
- Entrega después del viernes de junio: puntos.
Actividad de Diccionarios y Archivos
- Parte I (Diccionarios): Explicar definiciones de clave, valor, métodos (
keys,values,items,update,pop) y proveer un ejemplo propio. - Parte II (Archivos): Responder sobre importancia, tipos, función
open, modos (r,w,a) y diferencia entreread/writey la necesidad declose. - Parte III (Análisis): Analizar un código que abre
datos.txten modow, escribe el nombre de un estudiante y cierra el archivo.
Criterios de Evaluación Generale (Escala de puntos)
- Comprensión de conceptos: Hasta puntos.
- Identificación de elementos: puntos.
- Organización y estructura: puntos.
- Ejemplos y aplicaciones: puntos.
- Creatividad, presentación y ortografía: puntos adicionales ( cada uno).