DEV Community

Cover image for Programacion Orientada a Objetos (POO)
Ushieru Kokoran
Ushieru Kokoran

Posted on

Programacion Orientada a Objetos (POO)

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("[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;
    }
}
Enter fullscreen mode Exit fullscreen mode

Discussion (0)