{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "authorship_tag": "ABX9TyNuJKzb4G+wIMG+DYigbN4g", "include_colab_link": true }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "view-in-github", "colab_type": "text" }, "source": [ "\"Open" ] }, { "cell_type": "markdown", "source": [ "# Herencia. Ejemplos\n", "1. Se muestran varios ejemplos similares con Herencia. El último usa ```super``` \n", "2. La característica de estos ejemplos consiste en que para realizar ciertos cálculos se necesitarán un número diferente de datos. \n", "3. Por ejemplo, para calcular el área de un rectángulo se necesitan dos datos (base y altura) y por el contrario para calcular el área de un círculo basta con pedir un datos (radio), y se pide el número de datos que se necesitarán.\n", "\n", "\n", "\n" ], "metadata": { "id": "wzdgqZ45ZRdJ" } }, { "cell_type": "markdown", "source": [ "## Ejemplo: Cálculos matemáticos" ], "metadata": { "id": "u3RwxZg52AsJ" } }, { "cell_type": "code", "source": [ "class Calculadora:\n", " def __init__(self, numero):\n", " self.n = numero\n", " def ingresardato(self):\n", " self.datos = [int(input(f\"Ingresar dato {i+1}: \")) for i in range(self.n)]\n", "\n", "class Op_basicas(Calculadora):\n", " def __init__(self):\n", " Calculadora.__init__(self, 2)\n", " def sumar(self):\n", " a,b = self.datos\n", " return f\"La suma es: {a+b}\"\n", " def restar(self):\n", " a,b = self.datos\n", " return f\"La resta es: {a-b}\"\n", "\n", "class Raiz(Calculadora):\n", " def __init__(self):\n", " Calculadora.__init__(self, 1)\n", " def cuadrada(self):\n", " a, = self.datos\n", " return f\"La raiz cuadrada es: {a**.5}\"\n", "if __name__ == \"__main__\":\n", " print(\"Para las Operaciones Básicas se requieren 2 datos.\")\n", " ejemplo1 = Op_basicas()\n", " ejemplo1.ingresardato()\n", " print(ejemplo1.sumar())\n", " print(ejemplo1.restar())\n", " print()\n", "\n", " print(\"Para la Raiz Cuadrada se requiere 1 dato.\")\n", " ejemplo2 = Raiz()\n", " ejemplo2.ingresardato()\n", " print(ejemplo2.cuadrada())\n" ], "metadata": { "id": "CRIbEEha2H3N", "outputId": "8638a25f-f4cc-4a67-b923-7941430456ba", "colab": { "base_uri": "https://localhost:8080/" } }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Para las Operaciones Básicas se requieren 2 datos.\n", "Ingresar dato 1: 20\n", "Ingresar dato 2: 8\n", "La suma es: 28\n", "La resta es: 12\n", "\n", "Para la Raiz Cuadrada se requiere 1 dato.\n", "Ingresar dato 1: 144\n", "La raiz cuadrada es: 12.0\n" ] } ] }, { "cell_type": "markdown", "source": [ "## Ejemplo: Figura geométrica" ], "metadata": { "id": "MLyNhmmT0aFV" } }, { "cell_type": "code", "source": [ "import math\n", "\n", "class Figura:\n", " def __init__(self, numero):\n", " self.n = numero\n", "\n", " def ingresar_datos(self):\n", " self.datos = [float(input(f\"Ingresar dato {i + 1}: \")) for i in range(self.n)]\n", "\n", "\n", "class Rectangulo(Figura):\n", " def __init__(self):\n", " Figura.__init__(self, 2)\n", "\n", " def area(self):\n", " base, altura = self.datos\n", " return f\"El área del rectángulo es: {base * altura}\"\n", "\n", " def perimetro(self):\n", " base, altura = self.datos\n", " return f\"El perímetro del rectángulo es: {2 * (base + altura)}\"\n", "\n", "\n", "class Circulo(Figura):\n", " def __init__(self):\n", " Figura.__init__(self, 1)\n", "\n", " def area(self):\n", " radio, = self.datos # la coma es importante para desempaquetar el array\n", " return f\"El área del círculo es: {math.pi * radio**2}\"\n", "\n", " def perimetro(self):\n", " radio, = self.datos\n", " return f\"El perímetro del círculo es: {2 * math.pi * radio}\"\n", "\n", "\n", "if __name__ == \"__main__\":\n", " print(\"Para el Rectángulo se dipen 2 datos: base y altura.\")\n", " ejemplo1 = Rectangulo()\n", " ejemplo1.ingresar_datos()\n", " print(ejemplo1.area())\n", " print(ejemplo1.perimetro())\n", " print()\n", "\n", " print(\"Para el Círculo se pide 1 dato: el radio.\")\n", " ejemplo2 = Circulo()\n", " ejemplo2.ingresar_datos()\n", " print(ejemplo2.area())\n", " print(ejemplo2.perimetro())" ], "metadata": { "id": "OOV0Gh9UZY0P", "outputId": "f62599d6-9da0-4aee-ee8c-6f79d4bed192", "colab": { "base_uri": "https://localhost:8080/" } }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Para el Rectángulo se dipen 2 datos: base y altura.\n", "Ingresar dato 1: 2\n", "Ingresar dato 2: 3\n", "El área del rectángulo es: 6.0\n", "El perímetro del rectángulo es: 10.0\n", "\n", "Para el Círculo se pide 1 dato: el radio.\n", "Ingresar dato 1: 5\n", "El área del círculo es: 78.53981633974483\n", "El perímetro del círculo es: 31.41592653589793\n" ] } ] }, { "cell_type": "markdown", "source": [ "## Ejemplo: Conversor de unidades" ], "metadata": { "id": "LEPzfm4f0gce" } }, { "cell_type": "code", "source": [ "class Conversor:\n", " def __init__(self, numero):\n", " self.n = numero\n", "\n", " def ingresar_dato(self):\n", " self.datos = [float(input(f\"Ingresar dato {i + 1}: \")) for i in range(self.n)]\n", "\n", "\n", "class Temperatura(Conversor):\n", " def __init__(self):\n", " Conversor.__init__(self, 1)\n", "\n", " def celsius_a_fahrenheit(self):\n", " celsius, = self.datos\n", " return f\"La temperatura en Fahrenheit es: {celsius * 9/5 + 32}\"\n", "\n", " def fahrenheit_a_celsius(self):\n", " fahrenheit, = self.datos\n", " return f\"La temperatura en Celsius es: {(fahrenheit - 32) * 5/9}\"\n", "\n", "\n", "class Distancia(Conversor):\n", " def __init__(self):\n", " Conversor.__init__(self, 1)\n", "\n", " def km_a_millas(self):\n", " km, = self.datos\n", " return f\"La distancia en millas es: {km * 0.621371}\"\n", "\n", " def millas_a_km(self):\n", " millas, = self.datos\n", " return f\"La distancia en kilómetros es: {millas / 0.621371}\"\n", "\n", "\n", "if __name__ == \"__main__\":\n", " ejemplo1 = Temperatura()\n", " ejemplo1.ingresar_dato()\n", " print(ejemplo1.celsius_a_fahrenheit())\n", " print(ejemplo1.fahrenheit_a_celsius())\n", " print()\n", "\n", " ejemplo2 = Distancia()\n", " ejemplo2.ingresar_dato()\n", " print(ejemplo2.km_a_millas())\n", " print(ejemplo2.millas_a_km())\n" ], "metadata": { "id": "6gPQXr6SEdz_", "outputId": "c8a9619f-c134-474e-be3e-edabd9a6eb80", "colab": { "base_uri": "https://localhost:8080/" } }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Ingresar dato 1: 40\n", "La temperatura en Fahrenheit es: 104.0\n", "La temperatura en Celsius es: 4.444444444444445\n", "\n", "Ingresar dato 1: 10\n", "La distancia en millas es: 6.21371\n", "La distancia en kilómetros es: 16.093444978925632\n" ] } ] }, { "cell_type": "markdown", "source": [ "## Ejemplo: Vehículo\n", "En este caso se usa ```super```" ], "metadata": { "id": "kEtCgxvo0kua" } }, { "cell_type": "code", "source": [ "class Vehiculo:\n", " def __init__(self, numero):\n", " self.n = numero\n", "\n", " def ingresar_datos(self):\n", " self.datos = [input(f\"Ingresar dato {i + 1}: \") for i in range(self.n)]\n", "\n", "\n", "class Automovil(Vehiculo):\n", " def __init__(self):\n", " super().__init__(4)\n", "\n", " def mostrar_informacion(self):\n", " marca, modelo, color, num_puertas = self.datos\n", " return f\"Automóvil: Marca: {marca}, Modelo: {modelo}, Color: {color}, Número de puertas: {num_puertas}\"\n", "\n", "\n", "class Motocicleta(Vehiculo):\n", " def __init__(self):\n", " super().__init__(3)\n", "\n", " def mostrar_informacion(self):\n", " marca, modelo, tipo = self.datos\n", " return f\"Motocicleta: Marca: {marca}, Modelo: {modelo}, Tipo: {tipo}\"\n", "\n", "if __name__ == \"__main__\":\n", " print(\"Ingrese la información del automóvil (marca, modelo, color y número de puertas):\")\n", " ejemplo1 = Automovil()\n", " ejemplo1.ingresar_datos()\n", " print(ejemplo1.mostrar_informacion())\n", " print()\n", "\n", " print(\"Ingrese la información de la motocicleta (marca, modelo y tipo):\")\n", " ejemplo2 = Motocicleta()\n", " ejemplo2.ingresar_datos()\n", " print(ejemplo2.mostrar_informacion())\n" ], "metadata": { "id": "XtgXkKlLYrZ6", "outputId": "8afcebe4-fb37-469c-bf91-e70e1502ae8f", "colab": { "base_uri": "https://localhost:8080/" } }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Ingrese la información del automóvil (marca, modelo, color y número de puertas):\n", "Ingresar dato 1: Ford\n", "Ingresar dato 2: K\n", "Ingresar dato 3: rojo\n", "Ingresar dato 4: 3\n", "Automóvil: Marca: Ford, Modelo: K, Color: rojo, Número de puertas: 3\n", "\n", "Ingrese la información de la motocicleta (marca, modelo y tipo):\n", "Ingresar dato 1: Yamaha\n", "Ingresar dato 2: XSR700\n", "Ingresar dato 3: Sport\n", "Motocicleta: Marca: Yamaha, Modelo: XSR700, Tipo: Sport\n" ] } ] } ] }