Skip to content

Commit 2168fd2

Browse files
authored
Merge pull request mouredev#3286 from Hyromy/main
#8 - Python
2 parents c4c4ee6 + 941ac32 commit 2168fd2

File tree

2 files changed

+244
-0
lines changed

2 files changed

+244
-0
lines changed

Roadmap/08 - CLASES/python/Hyromy.py

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
# definicion de la clase "Car"
2+
class Car:
3+
4+
# constructor de la clase
5+
def __init__(self, color, marca, modelo): # self hace referencia a si mismo
6+
7+
# declaracion e inicializacion de atributos
8+
self.color = color
9+
self.marca = marca
10+
self.modelo = modelo
11+
12+
def imprimir(self): # metodo "imprimir"
13+
print(f"Soy un {self.marca} modelo {self.modelo} de color {self.color}")
14+
15+
# crear instancias de "Car" (crear objetos "Car")
16+
coche_1 = Car("blanco", "HotWheels", "Terreneitor")
17+
coche_2 = Car("azul", "Transformer", "willy")
18+
19+
# ejecutar el metodo "imprimir" en ambos objetos
20+
coche_1.imprimir()
21+
coche_2.imprimir()
22+
23+
# modificar coche_1
24+
coche_1.color = "naranja"
25+
coche_1.modelo = None
26+
27+
# comprobar cambios
28+
coche_1.imprimir()
29+
30+
31+
32+
"""
33+
---- DIFICULTAD EXTRA ----
34+
"""
35+
36+
class Pila:
37+
def __init__(self, *items):
38+
self.content = []
39+
40+
for item in items:
41+
self.content.append(item)
42+
43+
def show(self):
44+
pila = "|"
45+
46+
for value in self.content:
47+
pila += f"{value}|"
48+
49+
print(pila)
50+
51+
def add(self, item):
52+
self.content.insert(0, item)
53+
54+
def pop(self):
55+
if len(self.content) == 0:
56+
print("No hay elementos por remover")
57+
else:
58+
self.content.pop(0)
59+
60+
def len(self) -> int:
61+
return len(self.content)
62+
63+
class Cola:
64+
def __init__(self, *items):
65+
self.content = []
66+
67+
for item in items:
68+
self.content.append(item)
69+
70+
def show(self):
71+
cola = "-"
72+
73+
for value in self.content:
74+
cola += f"{value}-"
75+
76+
print(cola)
77+
78+
def add(self, item):
79+
self.content.append(item)
80+
81+
def pop(self):
82+
if len(self.content) == 0:
83+
print("No hay elementos por remover")
84+
else:
85+
self.content.pop(0)
86+
87+
def len(self) -> int:
88+
return len(self.content)
89+
90+
pila = Pila("A")
91+
for i in range(5, 10):
92+
pila.add(i)
93+
pila.show()
94+
95+
pila.pop()
96+
pila.pop()
97+
pila.show()
98+
99+
100+
101+
cola = Cola("B")
102+
for i in range(5, 10):
103+
cola.add(i)
104+
cola.show()
105+
106+
cola.pop()
107+
cola.pop()
108+
cola.show()
109+
110+
print(cola.len())
111+
cola.pop()
112+
print(cola.len())
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# clase padre
2+
class Animal:
3+
4+
# contructor de la clase padre
5+
def __init__(self, nombre, tamaño):
6+
self.nombre = nombre
7+
self.tamaño = tamaño
8+
9+
# metodos comunes
10+
11+
def mostrar(self):
12+
print(f"Soy un {self.nombre} {self.tamaño}")
13+
14+
def comer(self):
15+
print(f"{self.nombre} está comiendo")
16+
17+
# clase perro que hereda de animal
18+
class Perro(Animal):
19+
20+
# constructor para la clase perro (similar al constructor de la clase padre)
21+
def __init__(self, nombre, tamaño, raza):
22+
super().__init__(nombre, tamaño) # super hace referencia al padre o a la super clase
23+
self.raza = raza # atributo de la clase perro
24+
25+
# metodos propios
26+
27+
def sonido(self):
28+
print("Guau!")
29+
30+
def mostrar_raza(self):
31+
print(f"Soy un {self.raza}")
32+
33+
# clase gato que hereda de animal (diferente a perro)
34+
class Gato(Animal):
35+
36+
# constructor para la clase gato (similar al constructor de la clase padre )
37+
def __init__(self, nombre, tamaño, pelaje):
38+
super().__init__(nombre, tamaño) # heredando las mismas propiedades de animal
39+
self.pelaje = pelaje # atributo propio de la clase gato
40+
41+
def sonido(self):
42+
print("Miau")
43+
44+
def tocar_pelaje(self):
45+
print(f"{self.nombre} tiene un pelaje {self.pelaje}")
46+
47+
# instanciar objetos de cada clase
48+
freddy = Animal("oso", "grande")
49+
firulais = Perro("Firulais", "mediano", "Shiba Inu")
50+
michi = Gato("micchi", "pequeño", "suave")
51+
52+
# metodo mostrar
53+
freddy.mostrar()
54+
firulais.mostrar()
55+
michi.mostrar()
56+
57+
# metodo comer
58+
freddy.comer()
59+
firulais.comer()
60+
michi.comer()
61+
62+
# metodo sonido
63+
#freddy.sonido() # Animal no puede porque no esta definido el metodo sonido
64+
firulais.sonido() # Perro.sonido() => Guau
65+
michi.sonido() # Gato.sonido() => Miau
66+
67+
# metodo mostrar_raza
68+
firulais.mostrar_raza() # Animal y Gato no poseen dicho metodo
69+
70+
# metetodo tocar_pelaje
71+
michi.tocar_pelaje() # Animal y Perro no poseen dicho metodo
72+
73+
"""
74+
---- DIFICULTAD EXTRA ----
75+
"""
76+
77+
from abc import ABC, abstractmethod
78+
79+
class Empleado(ABC): # clase abstracta
80+
def __init__(self, nombre, edad, matricula):
81+
self.nombre = nombre
82+
self.edad = edad
83+
self.matricula = matricula
84+
85+
# metodo comun
86+
def presentarse(self):
87+
print(f"Me llamo {self.nombre}, tengo {self.edad}. Mi matricula es {self.matricula}")
88+
89+
# metodo abstracto
90+
@abstractmethod
91+
def trabajar(self):
92+
pass
93+
94+
95+
class Programador(Empleado):
96+
def __init__(self, nombre, edad, matricula, lenguaje):
97+
super().__init__(nombre, edad, matricula)
98+
self.lenguaje = lenguaje
99+
100+
def trabajar(self):
101+
print(f"{self.nombre} esta trabajando en {self.lenguaje}")
102+
103+
class Gerente(Empleado):
104+
def __init__(self, nombre, edad, matricula):
105+
super().__init__(nombre, edad, matricula)
106+
self.programadores = []
107+
108+
def trabajar(self):
109+
if len(self.empleados_matricula) > 0:
110+
print(f"El gerente {self.nombre} esta trabajando con los programadores: {self.programadores}")
111+
else:
112+
print(f"El gerente {self.nombre} no tiene empleados a cargo")
113+
114+
def agregar_programador(self, programador):
115+
self.programadores.append(programador)
116+
117+
def quitar_programador(self, index = -1):
118+
if len(self.programadores) > 0:
119+
self.programadores.pop(index)
120+
else:
121+
print("No hay programadores por remover")
122+
123+
class Gerente_P(Empleado):
124+
def __init__(self, nombre, edad, matricula, proyecto):
125+
super().__init__(nombre, edad, matricula)
126+
self.proyecto = proyecto
127+
128+
def trabajar(self):
129+
print(f"El gerente {self.nombre} está trabajando en el proyecto {self.proyecto}")
130+
131+
def dormir(self):
132+
print(f"{self.nombre} se durmió xd")

0 commit comments

Comments
 (0)