Last active
July 25, 2023 07:31
-
-
Save CarMoreno/a9658c551bb8d15f4579b25bc90e4cd0 to your computer and use it in GitHub Desktop.
Python | Programación Orientada a Objetos, ejemplos del articulo: https://carmoreno.com.co/python/2020/03/03/programacion-orientada-objetos-python-POO-herencia-composicion-clase-objeto-encapsulacion/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PalancaCambio: | |
# Suponemos que el carro arranca en Neutro (cambio 0 para nosotros) | |
cambio_actual = 0 | |
def __init__(self, numero_cambios = 4, color='Negro', peso='50gr'): | |
self.numero_cambios = numero_cambios | |
self.color = color | |
self.peso = peso | |
def subir_cambio(self): | |
self.cambio_actual = self.cambio_actual + 1 | |
if (self.cambio_actual == self.numero_cambios): | |
print("No puedo subir mas cambios") | |
print(f"Palanca de cambio sube el cambio a {self.cambio_actual}") | |
def bajar_cambio(self): | |
self.cambio_actual = self.cambio_actual - 1 | |
if (self.cambio_actual == 0): | |
print("No puedo bajar mas cambios") | |
print(f"Palanca de cambio baja el cambio a {self.cambio_actual}") | |
def __str__(self): | |
return f"Palanca de Cambio de {self.numero_cambios} velocidades" | |
class Vehiculo: | |
def __init__(self, marca, color, placa, modelo): | |
self.marca = marca | |
self.color = color | |
self.placa = placa | |
self.modelo = modelo | |
self.palanca_cambio = PalancaCambio() | |
def acelerar(self): | |
print(f"Soy {self.marca}, estoy acelerando!!") | |
def frenar(self): | |
print(f"Soy {self.marca}, estoy frenando!!") | |
def voltear(self, direccion): | |
print(f"Soy {self.marca}, estoy volteando a la {direccion}") | |
def __str__(self): | |
"""Este método nos servirá para ver una representación en cadena del objeto""" | |
return self.marca | |
class Carro (Vehiculo): | |
numero_llantas = 4 | |
def tocar_claxon(self): | |
print(f"Soy {self.marca}, y estoy tocando el claxon!!") | |
class Motocicleta (Vehiculo): | |
numero_llantas = 2 | |
def encender_con_patada(self): | |
print(f"Soy {self.marca} y estoy encendiendo con patada!!") | |
class Avion (Vehiculo): | |
numero_llantas = 32 | |
def sacar_llantas(self): | |
print(f"Soy {self.marca} y estoy sacando las llantas!!") | |
def aterrizar(self): | |
print(f"Soy {self.marca} y estoy aterrizando!!") | |
# Creamos el objeto carro, Mazda 6. | |
obj_mazda = Carro('Mazda 6', 'Rojo', 'RED126', '2020') | |
print(obj_mazda) | |
# Establecemos a 8 el numero de cambios para este carro | |
# y el peso de la palanca de cambios en 25gr | |
obj_mazda.palanca_cambio.numero_cambios = 8 | |
obj_mazda.palanca_cambio.peso = '25gr' | |
print(obj_mazda.palanca_cambio) | |
# Subimos un cambio | |
obj_mazda.palanca_cambio.subir_cambio() | |
# ------------------------------------------------------------------------ | |
# Creamos el objeto Motocicleta, Honda CB 500 | |
obj_honda = Motocicleta('Honda CB 500', 'Negro', 'XDR321', '2018') | |
print(obj_honda) | |
#Establecemos a 6 el numero de cambios para esta moto | |
obj_honda.palanca_cambio.numero_cambios = 6 | |
print(obj_honda.palanca_cambio) | |
# Subimos un cambio | |
obj_honda.palanca_cambio.subir_cambio() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class PalancaCambio: | |
# Suponemos que el carro arranca en Neutro (cambio 0 para nosotros) | |
__cambio_actual = 0 | |
def __init__(self, numero_cambios = 4, color='Negro', peso='50gr'): | |
# Los atributos son ahora privados | |
self.__numero_cambios = numero_cambios | |
self.__color = color | |
self.__peso = peso | |
# Getters y Setters | |
def get_numero_cambios(self): | |
return self.__numero_cambios | |
def set_numero_cambios(self, numero_cambios): | |
self.__numero_cambios = numero_cambios | |
def get_color(self): | |
return self.__color | |
def set_color(self, color): | |
self.__color = color | |
def get_peso(self): | |
return self.__peso | |
def set_peso(self, peso): | |
self.__peso = peso | |
# Fin Getters y Setters | |
def subir_cambio(self): | |
self.__cambio_actual = self.__cambio_actual + 1 | |
if (self.__cambio_actual == self.__numero_cambios): | |
print("No puedo subir mas cambios") | |
print(f"Palanca de cambio sube el cambio a {self.__cambio_actual}") | |
def bajar_cambio(self): | |
self.__cambio_actual = self.__cambio_actual - 1 | |
if (self.__cambio_actual == 0): | |
print("No puedo bajar mas cambios") | |
print(f"Palanca de cambio baja el cambio a {self.__cambio_actual}") | |
def __str__(self): | |
return f"Palanca de Cambio de {self.__numero_cambios} velocidades" | |
class Vehiculo: | |
def __init__(self, marca, color, placa, modelo): | |
self._marca = marca | |
self._color = color | |
self._placa = placa | |
self._modelo = modelo | |
self._palanca_cambio = PalancaCambio() | |
def _acelerar(self): | |
print(f"Soy {self._marca}, estoy acelerando!!") | |
def _frenar(self): | |
print(f"Soy {self._marca}, estoy frenando!!") | |
def _voltear(self, direccion): | |
print(f"Soy {self._marca}, estoy volteando a la {direccion}") | |
def __str__(self): | |
"""Este método nos servirá para ver una representación en cadena del objeto""" | |
return self._marca | |
class Carro (Vehiculo): | |
__numero_llantas = 4 | |
def set_numero_llantas(self, numero_llantas): | |
self.__numero_llantas = numero_llantas | |
def get_numero_llantas(self): | |
return self.__numero_llantas | |
def tocar_claxon(self): | |
print(f"Soy {self._marca}, y estoy tocando el claxon!!") | |
class Motocicleta (Vehiculo): | |
__numero_llantas = 2 | |
def set_numero_llantas(self, numero_llantas): | |
self.__numero_llantas = numero_llantas | |
def get_numero_llantas(self): | |
return self.__numero_llantas | |
def encender_con_patada(self): | |
print(f"Soy {self._marca} y estoy encendiendo con patada!!") | |
class Avion (Vehiculo): | |
__numero_llantas = 32 | |
def set_numero_llantas(self, numero_llantas): | |
self.__numero_llantas = numero_llantas | |
def get_numero_llantas(self): | |
return self.__numero_llantas | |
def sacar_llantas(self): | |
print(f"Soy {self._marca} y estoy sacando las llantas!!") | |
def aterrizar(self): | |
print(f"Soy {self._marca} y estoy aterrizando!!") | |
# Creamos el objeto carro, Mazda 6. | |
obj_mazda = Carro('Mazda 6', 'Rojo', 'RED126', '2020') | |
print(obj_mazda) | |
# Establecemos a 8 el numero de cambios para este carro | |
# y el peso de la palanca de cambios en 25gr | |
obj_mazda._palanca_cambio.set_numero_cambios(8) | |
obj_mazda._palanca_cambio.set_peso('25gr') | |
print(obj_mazda._palanca_cambio) | |
# Subimos un cambio | |
obj_mazda._palanca_cambio.subir_cambio() | |
# ------------------------------------------------------------------------ | |
# Creamos el objeto Motocicleta, Honda CB 500 | |
obj_honda = Motocicleta('Honda CB 500', 'Negro', 'XDR321', '2018') | |
print(obj_honda) | |
#Establecemos a 6 el numero de cambios para esta moto | |
obj_honda._palanca_cambio.set_numero_cambios(6) | |
print(obj_honda._palanca_cambio) | |
# Subimos un cambio | |
obj_honda._palanca_cambio.subir_cambio() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Vehiculo: | |
def __init__(self, marca, color, placa, modelo): | |
self._marca = marca | |
self._color = color | |
self._placa = placa | |
self._modelo = modelo | |
def _acelerar(self): | |
print(f"Soy {self._marca}, estoy acelerando!!") | |
def _frenar(self): | |
print(f"Soy {self._marca}, estoy frenando!!") | |
def _voltear(self, direccion): | |
print(f"Soy {self._marca}, estoy volteando a la {direccion}") | |
def __str__(self): | |
"""Este método nos servirá para ver una representación en cadena del objeto""" | |
return self._marca | |
class Carro (Vehiculo): | |
__numero_llantas = 4 | |
def tocar_claxon(self): | |
print(f"Soy {self._marca}, y estoy tocando el claxon!!") | |
class Motocicleta (Vehiculo): | |
__numero_llantas = 2 | |
def encender_con_patada(self): | |
print(f"Soy {self._marca} y estoy encendiendo con patada!!") | |
class Avion (Vehiculo): | |
__numero_llantas = 32 | |
def sacar_llantas(self): | |
print(f"Soy {self._marca} y estoy sacando las llantas!!") | |
def aterrizar(self): | |
print(f"Soy {self._marca} y estoy aterrizando!!") | |
obj_mazda = Carro('Mazda 6', 'Rojo', 'RED126', '2020') | |
obj_renault = Carro('Renault Logan', 'Negro', 'FRE009', '2021') | |
obj_audi = Carro('Audi Q3', 'Blanco', 'DPK312', '2016') | |
obj_honda = Motocicleta('Honda CB 500', 'Negro', 'XDR321', '2018') | |
obj_yamaha = Motocicleta('Yamaha R10', 'Azul', 'GTR576', '2016') | |
obj_suzuky = Motocicleta('Suzuky VStrom 650', 'Gris', 'RET841', '2020') | |
obj_jet = Avion('Jet Privado', 'Blanco', 'G-DER4', '2014') | |
# El Mazda 6, va a voltear a la izquierda | |
obj_mazda._voltear('izquierda') | |
# El Audi Q3, va a voltear a la derecha | |
obj_audi._voltear('derecha') | |
# El Renault Logan va a acelerar | |
obj_renault._acelerar() | |
# --------------------------------------------------------------- | |
# La Honda va a encender con patada. | |
obj_honda.encender_con_patada() | |
# La Honda, va a voltear a la izquierda | |
obj_honda._voltear('izquierda') | |
# La Yamaha, va a voltear a la derecha | |
obj_yamaha._voltear('derecha') | |
# La Suzuky va a frenar | |
obj_suzuky._frenar() | |
# ---------------------------------------------- | |
# El Jet acelera | |
obj_jet._acelerar() | |
# El Jet voltea a la derecha | |
obj_jet._voltear('derecha') | |
# El Jet saca las llantas | |
obj_jet.sacar_llantas() | |
# Y aterriza. | |
obj_jet.aterrizar() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Vehiculo: | |
def __init__(self, marca, color, placa, modelo): | |
self.marca = marca | |
self.color = color | |
self.placa = placa | |
self.modelo = modelo | |
def acelerar(self): | |
print(f"Soy {self.marca}, estoy acelerando!!") | |
def frenar(self): | |
print(f"Soy {self.marca}, estoy frenando!!") | |
def voltear(self, direccion): | |
print(f"Soy {self.marca}, estoy volteando a la {direccion}") | |
def __str__(self): | |
"""Este método nos servirá para ver una representación en cadena del objeto""" | |
return self.marca | |
class Carro (Vehiculo): | |
numero_llantas = 4 | |
def tocar_claxon(self): | |
print(f"Soy {self.marca}, y estoy tocando el claxon!!") | |
class Motocicleta (Vehiculo): | |
numero_llantas = 2 | |
def encender_con_patada(self): | |
print(f"Soy {self.marca} y estoy encendiendo con patada!!") | |
class Avion (Vehiculo): | |
numero_llantas = 32 | |
def sacar_llantas(self): | |
print(f"Soy {self.marca} y estoy sacando las llantas!!") | |
def aterrizar(self): | |
print(f"Soy {self.marca} y estoy aterrizando!!") | |
obj_mazda = Carro('Mazda 6', 'Rojo', 'RED126', '2020') | |
obj_renault = Carro('Renault Logan', 'Negro', 'FRE009', '2021') | |
obj_audi = Carro('Audi Q3', 'Blanco', 'DPK312', '2016') | |
obj_honda = Motocicleta('Honda CB 500', 'Negro', 'XDR321', '2018') | |
obj_yamaha = Motocicleta('Yamaha R10', 'Azul', 'GTR576', '2016') | |
obj_suzuky = Motocicleta('Suzuky VStrom 650', 'Gris', 'RET841', '2020') | |
obj_jet = Avion('Jet Privado', 'Blanco', 'G-DER4', '2014') | |
# El Mazda 6, va a voltear a la izquierda | |
obj_mazda.voltear('izquierda') | |
# El Audi Q3, va a voltear a la derecha | |
obj_audi.voltear('derecha') | |
# El Renault Logan va a acelerar | |
obj_renault.acelerar() | |
# --------------------------------------------------------------- | |
# La Honda va a encender con patada. | |
obj_honda.encender_con_patada() | |
# La Honda, va a voltear a la izquierda | |
obj_honda.voltear('izquierda') | |
# La Yamaha, va a voltear a la derecha | |
obj_yamaha.voltear('derecha') | |
# La Suzuky va a frenar | |
obj_suzuky.frenar() | |
# ---------------------------------------------- | |
# El Jet acelera | |
obj_jet.acelerar() | |
# El Jet voltea a la derecha | |
obj_jet.voltear('derecha') | |
# El Jet saca las llantas | |
obj_jet.sacar_llantas() | |
# Y aterriza. | |
obj_jet.aterrizar() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Carro: | |
def __init__(self, marca, color, placa, modelo): | |
# Propiedades | |
self.numero_llantas = 4 | |
self.marca = marca | |
self.color = color | |
self.placa = placa | |
self.modelo = modelo | |
def acelerar(self): | |
print(f"Soy {self.marca}, estoy acelerando!!") | |
def frenar(self): | |
print(f"Soy {self.marca}, estoy frenando!!") | |
def voltear(self, direccion): | |
print(f"Soy {self.marca}, estoy volteando a la {direccion}") | |
def __str__(self): | |
"""Este método nos servirá para ver una representación en cadena del objeto""" | |
return self.marca | |
obj_mazda = Carro('Mazda 6', 'Rojo', 'RED126', '2020') | |
obj_renault = Carro('Renault Logan', 'Negro', 'FRE009', '2021') | |
obj_audi = Carro('Audi Q3', 'Blanco', 'DPK312', '2016') | |
# Miramos por consola cada objeto | |
print(obj_mazda) | |
print(obj_renault) | |
print(obj_audi) | |
# El Mazda 6, va a voltear a la izquierda | |
obj_mazda.voltear('izquierda') | |
# El Audi Q3, va a voltear a la derecha | |
obj_audi.voltear('derecha') | |
# El Renault Logan va a acelerar | |
obj_renault.acelerar() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment