diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase1.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase01.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase1.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase01.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase2.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase02.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase2.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase02.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase3.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase03.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase3.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase03.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase4.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase04.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase4.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase04.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase5.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase05.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase5.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase05.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase6.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase06.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase6.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase06.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase7.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase07.py similarity index 100% rename from python-ofensivo/00_ejercicios/04_ejemplo_clase7.py rename to python-ofensivo/00_ejercicios/04_ejemplo_clase07.py diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase08.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase08.py new file mode 100644 index 0000000..0a50881 --- /dev/null +++ b/python-ofensivo/00_ejercicios/04_ejemplo_clase08.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +""" +Clases con herencia y polimorfismo +""" + + +class Animal: + + def __init__(self, nombre): + + self.nombre = nombre + + + def hablar(self): + + # Definimos una salida de errror + raise NotImplementedError("La subclase debe implementar este método abstracto") + +class Gato(Animal): + + def hablar(self): + + return f"¡miau!" + +class Perro(Animal): + + def hablar(self): + + return f"¡guau!" + + +def hacer_hablar(objeto): + + print(f"{objeto.nombre} dice {objeto.hablar()}") + + +gato = Gato("Lucas") +perro = Perro("Firulais") +vaca = Animal("Lola") + +print(gato.hablar()) +print(perro.hablar()) +# print(vaca.hablar()) # Provocar error + +hacer_hablar(gato) +hacer_hablar(perro) + diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase09.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase09.py new file mode 100644 index 0000000..e02c771 --- /dev/null +++ b/python-ofensivo/00_ejercicios/04_ejemplo_clase09.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python3 +""" +Clases subclases y herencia +""" + + +class Automovil: + + def __init__(self, marca, modelo): + self.marca = marca + self.modelo = modelo + + def describir(self): + + return f"Marca: {self.marca}\nModelo: {self.modelo}\n" + + +class Coche(Automovil): + + def describir(self): + return f"[+] Coche:\n [+] Marca: {self.marca}\n [+] Modelo: {self.modelo}\n" + +class Moto(Automovil): + + def describir(self): + return f"[+] Moto:\n [+] Marca: {self.marca}\n [+] Modelo: {self.modelo}\n" + +def describir_vehiculo(vehiculo): # Polimorfismo + + print(vehiculo.describir()) + +coche = Coche("Mazda", "MX5") +moto = Moto("Honda", "CBR") + +describir_vehiculo(coche) +describir_vehiculo(moto) diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase10.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase10.py new file mode 100644 index 0000000..6fa1a20 --- /dev/null +++ b/python-ofensivo/00_ejercicios/04_ejemplo_clase10.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +""" +Clases subclases y herencia +""" + + +class Dispositivo: + + def __init__(self, modelo): + + self.modelo = modelo + + def escanear_vulnerabilidades(self): + + raise NotImplementedError("Este método debe ser definido para el resto de subclases existentes") + +class Ordenador(Dispositivo): + + def escanear_vulnerabilidades(self): + + return f"[+] Análisis de vulnerabilidades concluido: Actualización de sowfware necesaria, múltiples desactualizaciones de software detectadas" + +class Router(Dispositivo): + + def escanear_vulnerabilidades(self): + + return f"[+] Análisis de vulnerabilidades concluido: Múltiples puertos críticos abiertos, es recomendable cerrar estos puertos" + +class TelefonoMovil(Dispositivo): + + def escanear_vulnerabilidades(self): + + return f"[+] Análisis de vulnerabilidades concluido: Múltipleas aplicaciones detectadas con permisos excesivos" + + +def realizar_escaneo(dispositivo): + + print(dispositivo.escanear_vulnerabilidades()) + +pc = Ordenador("Dell XPS") +router = Router("TP-Link Archer C50") +movil = TelefonoMovil("Xiaomi Galaxy S21") + +realizar_escaneo(pc) +realizar_escaneo(router) +realizar_escaneo(movil) diff --git a/python-ofensivo/00_ejercicios/04_ejemplo_clase11.py b/python-ofensivo/00_ejercicios/04_ejemplo_clase11.py new file mode 100644 index 0000000..b7026c7 --- /dev/null +++ b/python-ofensivo/00_ejercicios/04_ejemplo_clase11.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +""" +Sobeescribir el constructor de una clase con super +""" + + +class A: + + def __init__(self, x): + self.x = x + + print(f"Valor de x: {self.x}") + +class B(A): + + def __init__(self, x, y): + self.y = y + # Forzar que se ejecute el constructor de A + super().__init__(x) + print(f"Valor de y: {self.y}") + +b = B(2, 10) +