{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Clase 5: Programación Orientada a Objetos\n", "\n", "**MDS7202: Laboratorio de Programación Científica para Ciencia de Datos**\n", "\n", "## Objetivos de la Clase\n", "\n", "El objetivo de esta clase es comprender los fundamentos de la programación orientada a objetos (POO).\n", "En particular, veremos:\n", "\n", "- Programación orientada a objetos: Clases, atributos y métodos.\n", "- Principios básicos de POO:\n", " - Abstraccion y Encapsulación.\n", " - Herencia.\n", " - Anulación de Métodos.\n", " - Métodos Mágicos.\n", "- Manejo de Excepciones.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Paradigmas de Programación \n", "\n", "Una forma usual de clasificar lenguajes de programación es por medio de su **paradigma principal**.\n", "\n", "> Según la RAE, un paradigma es un *ejemplo* o una *teoría o conjunto de teorías cuyo núcleo central se acepta sin cuestionar y que suministra la base y modelo para resolver problemas y avanzar en el conocimiento. *.\n", "\n", "Se puede interpretar a un paradigma de programación, como un conjunto de patrones o un modelo base o estilo sobre los cuales se resuelven problemas computacionales y que tienen directa relación con la sintaxis del lenguaje.\n", "\n", "Los paradigmas de programación principales son:\n", "\n", "* Imperativo\n", " - Orientado a objetos\n", "* Declarativo\n", " - Funcional\n", " - Optimización matemática\n", "\n", "Pero existen muchos mas.\n", "\n", "En esta sección, estudiaremos las características de Python, que permiten implementar técnicas del paradigma orientado a objetos. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> **Pregunta ❓**: Python es un lenguaje de programación multi-paradigma. ¿Qué paradigmas de programación soporta Python? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "> **Ejercicio ✏️**: Busca información, define con tus propias palabras y da ejemplos los paradigmas de programación _imperativa_, _declarativa_, _funcional_ y _orientada a objetos_." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Programación Orientada a Objetos\n", "\n", "El paradigma de **programación orientado a objetos** (POO / OOP) permite estructurar programas, de manera tal que es posible **asociar acciones (métodos) y propiedades (atributos) a entidades llamadas objetos**. Las relaciones entre objetos encargados de procesar tareas de diversa índole permiten estructurar ordenadamente el programa y obtener de manera mas sencilla los resultados buscados. \n", "\n", "\n", "Por ejemplo, un *objeto* puede representar a un auto. En este caso, sus *atributos* serán la cantidad de bencina en el estanque, velocidad actual, velocidad máxima y mucho otros más. Por otro lado, sus comportamientos/*métodos* serán cargar bencina, acelerar, frenar, etc... e incluso podrá tener relaciones entre objetos \"persona\" al ejecutar un método conducir.\n", "\n", "\n", "\n", "![Ejemplo clase auto](./resources/clase_auto.png)\n", "