Avatar
Uziel Cocolan

@ushieru

Requerimientos:

  • Java o Python.

  • Bucles y condicionales.

  • Funciones.

¿Qué es la POO?

La programación orientada a objetos no es mas que la capacidad de transformar objetos (como los de la vida cotidiana) a código.

Ejemplo

Para definir una clase tenemos que tener en cuenta un par de cosas:

  • Nombre

  • Propiedades (Características o estados)

  • Métodos (¿Qué puede hacer?)

El nombre de nuestro objeto es: Televisor.

Sus propiedades son: volumen y canal.

Sus métodos son: cambiar de canal, obtener canal actual, subir volumen, bajar volumen y obtener volumen.

Una vez definido nuestro objeto Manos a la obra (Trabajaremos con Java 8 y Python 3.8 por la facilidad para hacer CLIs) 🚀🚀

Python

class Televisor: def __init__(self, volumen: int, canal: int): self.volumen = volumen self.canal = canal def subir_volumen(self): self.volumen += 1 def bajar_volumen(self): self.volumen -= 1 def obtener_volumen(self): return self.volumen def cambiar_canal(self, canal: int): self.canal = canal def obtener_canal(self) -> int: return self.canal

Java

package main; public class Television { private int volumen; private int canal; public Television(int volumen, int canal){ this.volumen = volumen; this.canal = canal; } public void subir_volumen(){ this.volumen++; } public void bajar_volumen(){ this.volumen--; } public int obtener_volumen(){ return this.canal; } public void cambiar_canal(int canal){ this.canal = canal; } public int obtener_canal(){ return this.canal; } }

En hora buena!

Acabamos de crear nuestro primer objeto! Podríamos ser rigurosos con validaciones o con métodos, pero esto es solo un primer vistazo. Ahora te invito a jugar con el programa de aquí abajo, cambia los valores, mejóralo tanto como quieras. Cuéntame tu experiencia o deja tus preguntas en comentarios. Suerte Devs! 👩‍💻👨‍💻

Python

class Televisor: MAX_VOLUMEN = 30 MAX_CANAL = 30 def __init__(self, volumen: int, canal: int): self.volumen = volumen self.canal = canal self.io = False def IO(self): self.io = not self.io def obtener_estado(self) -> str: if self.io: return 'Encendido' else: return 'Apagado' def subir_volumen(self): if not self.io: print('[Televisor Apagado]') return elif self.volumen == self.MAX_VOLUMEN: print('[Max volumen]') return self.volumen += 1 def bajar_volumen(self): if not self.io: print('[Televisor Apagado]') return elif self.volumen == 0: print('[Min volumen]') return self.volumen -= 1 def obtener_volumen(self): if not self.io: print('[Televisor Apagado]') return return self.volumen def cambiar_canal(self, canal: int): if not self.io: print('[Televisor Apagado]') return elif canal > self.MAX_CANAL: print('[Max Canal]', self.MAX_CANAL) return elif canal < 1: print('[Min Canal]', 1) return self.canal = canal def obtener_canal(self) -> int: if not self.io: print('[Televisor Apagado]') return return self.canal if __name__ == "__main__": print('5 para apagar o encender. Usa las teclas 8 y 2 para volumen. 4 y 6 para cambiar de canal. 7 ir a canal.') print('Salir: ctrl + c') televisor = Televisor(0, 1) while True: key = input() if key == '5': televisor.IO() print(televisor.obtener_estado()) elif key == '7': try: canal = int(input()) televisor.cambiar_canal(canal) print('Canal:', televisor.obtener_canal()) except: print('Canal no valido') elif key == '8': televisor.subir_volumen() print('Volumen:', televisor.obtener_volumen()) elif key == '2': televisor.bajar_volumen() print('Volumen:', televisor.obtener_volumen()) elif key == '4': televisor.cambiar_canal(televisor.obtener_canal() - 1) print('Canal:', televisor.obtener_canal()) elif key == '6': televisor.cambiar_canal(televisor.obtener_canal() + 1) print('Canal:', televisor.obtener_canal()) print('------------------------------------------------------')

Java

package main; import java.util.Scanner; /** * * @author USHIERU */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Television televisor = new Television(0, 1); System.out.println("5 para apagar o encender. Usa las teclas 8 y 2 para volumen. 4 y 6 para cambiar de canal. 7 ir a canal."); while (true) { String comando = scanner.next(); switch (comando) { case "5": televisor.IO(); System.out.println(televisor.obtenerEstado()); break; case "7": try { int canal = scanner.nextInt(); televisor.cambiarCanal(canal); System.out.println("Canal: " + televisor.obtenerCanal()); } catch (Exception e) { System.out.println("Valor invalido"); } break; case "8": televisor.subirVolumen(); System.out.println("Volumen: " + televisor.obtenerVolumen()); break; case "2": televisor.bajarVolumen(); System.out.println("Volument: " + televisor.obtenerVolumen()); break; case "4": televisor.cambiarCanal(televisor.obtenerCanal() - 1); System.out.println("Canal: " + televisor.obtenerCanal()); break; case "6": televisor.cambiarCanal(televisor.obtenerCanal() + 1); System.out.println("Canal: " + televisor.obtenerCanal()); break; } System.out.println("------------------------------------------------------"); } } } class Television { private int volumen; private int canal; private boolean io; private final int MAX_VOLUMEN = 50; private final int MAX_CANAL = 30; public Television(int volumen, int canal) { this.volumen = volumen; this.canal = canal; this.io = false; } public void IO() { this.io = !this.io; } public String obtenerEstado() { if (this.io) { return "Encendido"; } else { return "Apagado"; } } public void subirVolumen() { if (!this.io) { System.out.println("[Televisor Apagado]"); return; } else if (this.volumen == this.MAX_VOLUMEN) { System.out.println("[Max Volumen]"); return; } this.volumen++; } public void bajarVolumen() { if (!this.io) { System.out.println("[Televisor Apagado]"); return; } else if (this.volumen == 0) { System.out.println("[Min Volumen]"); return; } this.volumen--; } public int obtenerVolumen() { if (!this.io) { System.out.println("[Televisor Apagado]"); return 0; } return this.volumen; } public void cambiarCanal(int canal) { if (!this.io) { System.out.println("[Televisor Apagado]"); return; } else if (canal > this.MAX_CANAL) { System.out.println("[Max Canal " + this.MAX_CANAL + "]"); return; } this.canal = canal; } public int obtenerCanal() { if (!this.io) { System.out.println("[Televisor Apagado]"); return 0; } return this.canal; } }

¡Uziel te ha regalado $ 90 USD 🎉!

Si actualizas a premium con el siguiente enlace obtendrás un descuento para ti y ayudarás a Alejandro a seguir estudiando en EDteam.

ed.team/premium?cupon=REF-211513

Estos son los beneficios que tú y Uziel recibirán si compras con su enlace de referidos 🙌

BeneficiosMensualSemestralAnual
Descuento (Tú)$ 3 USD$ 45 USD$ 90 USD
Semanas gratis (Uziel)1612

Al comprar con el enlace de referidos aceptas los términos y condiciones

Amigos

¿Cómo obtengo mi enlace de referidos?

Si eres estudiante premium ya tienes el enlace en tu perfil de usuario. Si aún no eres premium recibirás tu enlace de referidos como recompensa cada vez que completes un curso gratuito.

Más información
Publicaciones
Certificados
Me gusta
Referidos