Programacion Orientada a Objetos (POO)

Posted on



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
Enter fullscreen mode

Exit fullscreen mode

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;
    }
}
Enter fullscreen mode

Exit fullscreen mode



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('------------------------------------------------------')
Enter fullscreen mode

Exit fullscreen mode

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

Leave a Reply

Your email address will not be published. Required fields are marked *