# ############################################################################
# ** Proyecto : Clase Componente, Led Semaforo, RGB, Torreta
# ** Herramienta : https://www.wokwi.com
# ** : Thonny aplicacion de escritorio descargar en www.thonny.org
# ** Compilador : wokwi Simulador online
# ** Version : 1.0
# ** Fecha/Hora : 08-11-2024, 5:55 am,
# **
# ** Descripción del programa :
# ** Programa prende y apaga un tarreta, led, Semaforo, led RGB,
# ** la clase base es componentes donde los pines son los argumentos
# ** de que inicializan el constructor, se utiliza programación Orientada a Objetos
# ** (POO) - Polimorfismo
# **
# **
# ** Versión : 1
# ** Revisión : A
# ** Release : 0
# ** Bugs & Fixes :
# ** Date : 08/11/2024
# **
# ** By : Jorge Anzaldo
# ** contact : [email protected]
# ** twitter x : @janzaldob
#############################################################################
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# : Bibliotecas / Modulos | :
# ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
from machine import Pin
import time
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# | Definición y Desarrollo de CLASES |
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class Componentes:
def __init__(self, *pin): #pin = (4,15,13,12,14,27,26,25)
self._n = len(pin) #posicion 0,1 ,2, 3 ,4, 5, 6, 7
self._pin = []
self._led = []
for i in range(self._n ):
self._pin.append(pin[i]) #_pin = [4,15,]
self.configurar()
print(f'El objeto {self} fue CONSTRUIDO ')
def configurar(self):
for i in range(self._n ):
self._led.append(Pin(self._pin[i],Pin.OUT)) # _led = [Pin(4,Pin.OUT),Pin(15,Pin.OUT)]
def prender(self):
pass
def apagar(self):
pass
def __del__(self):
print(f'El objeto {self} fue DESSTRUIDO ')
class Led(Componentes):
def prender(self):
for i in range(self._n ):
self._led[i].value(1)
time.sleep(0.5)
class Semaforo(Componentes):
def rojo(self):
self._led[0].value(1)
time.sleep(1)
def amarillo(self):
self._led[1].value(1)
time.sleep(1)
def verde(self):
self._led[2].value(1)
time.sleep(1)
def prender(self):
self.rojo()
self.amarillo()
self.verde()
class Torreta(Componentes):
def prender (self):
for i in range(self._n):
self._led[i].value(1)
time.sleep(0.1)
class RGB(Componentes):
def rojo(self):
self._led[0].value(1)
self._led[1].value(0)
self._led[2].value(0)
time.sleep(1)
def verde(self):
self._led[0].value(0)
self._led[1].value(1)
self._led[2].value(0)
time.sleep(1)
def azul(self):
self._led[0].value(0)
self._led[1].value(0)
self._led[2].value(1)
time.sleep(1)
def prender(self):
self.rojo()
self.verde()
self.azul()
# +-------------------------------------------------------------------------------
# | V A R I A B L E S G L O B A L E S U O B J E T O S |
# +-------------------------------------------------------------------------------
led = Led(22)
semaforo = Semaforo(21,19,18)
torreta = Torreta(4,15,13,12,14,27,26,25)
rgb = RGB(5,17,16)
# ===============================================================================
# || ||
# || P R O G R A M A / F U N C I O N P R I N C I P A L ||
# || ||
# ===============================================================================
if __name__ == '__main__':
while True:
led.prender()
semaforo.prender()
torreta.prender()
rgb.prender()
'''
# ********************************************************************************
#
# R E F E R E N C I A S / C O M E N T A R I O S
#
Polimorfismo
El polimorfismo es un concepto fundamental en la programación orientada a objetos (POO)
que permite que diferentes clases implementen métodos con el mismo nombre, pero con comportamientos
distintos. En otras palabras, el mismo método puede actuar de diferentes maneras según el
objeto que lo invoque.
Tipos de Polimorfismo
Polimorfismo de Tiempo de Ejecución (o Dinámico):
Se refiere a la capacidad de llamar a métodos que pueden ser implementados por diferentes clases,
y el método que se ejecuta se determina en tiempo de ejecución. Esto se logra principalmente a través
de la herencia y la sobrescritura de métodos.
Polimorfismo de Tiempo de Compilación (o Estático):
Se refiere a la sobrecarga de métodos, donde dos o más métodos pueden tener el mismo nombre pero
diferentes parámetros. Este tipo es menos común en Python, ya que el lenguaje no admite la
sobrecarga de métodos de la misma manera que otros lenguajes como Java.
# *********************************************************************************
'''