Programación OO. Un ejemplo con a scensores (ejem, calculadoras).
Marcos Sánchez Provencio
rapto en arrakis.es
Mar Nov 30 20:53:49 CET 2004
Hala, hecho. Fíjate que la gracia está en arrancar varias calculadoras,
porque así cada una tiene sus numeritos, memorias... [faltan el resto de
los operadores, lo de la memoria, control de errores, entorno gráfico,
servicios web, comentarios, control de versiones, pasarlo a Java para
que lo compre el jefe...]
class calculadora:
def __init__(self):
self.pantalla='0'
self.memoria=0
self.numCompleto=True
self.operadorPendiente=None
def nuevoDigito(self,dig):
if self.numCompleto:
self.interno=int(self.pantalla)
self.pantalla=dig
self.numCompleto=False
else:
self.pantalla+=dig
def teclaMas(self):
self.calcula()
self.operadorPendiente='+'
def teclaIgual(self):
self.calcula()
self.operadorPendiente=None
def calcula(self):
self.numCompleto=True
if not self.operadorPendiente:
self.pantalla='%s' % int(self.pantalla)
elif self.operadorPendiente=='+':
self.pantalla='%s' % (int(self.pantalla)+self.interno)
if __name__=='__main__':
cal=calculadora()
cal2=calculadora()
print cal.pantalla, cal2.pantalla
cal.nuevoDigito('1')
cal.nuevoDigito('1')
print cal.pantalla, cal2.pantalla
cal.teclaMas()
cal2.nuevoDigito('7')
print cal.pantalla, cal2.pantalla
cal.nuevoDigito('1')
print cal.pantalla, cal2.pantalla
cal.teclaIgual()
cal2.nuevoDigito('7')
print cal.pantalla, cal2.pantalla
El mar, 30-11-2004 a las 20:42 +0100, Marcos Sánchez Provencio escribió:
> Pues en tu ejemplo de la calculadora, lo que meterías en el __init__
> sería el estado inicial de la calculadora. Si pensamos en una
> calculadora de las de toda la vida, el estado es:
> * El número que sale en la pantalla.
> * El número guardado en la memoria.
> * Si estoy en el proceso de teclear un número o esperando un número
> nuevo.
>
> El estado de la calculadora acabaría en los atributos de cada instancia
> (si hay varias calculadoras, cada una mostrará un número). Si sólo hay
> una calculadora, no está clara la ventaja de todo esto.
>
> [me has picado, estoy escribiendo una calculadora]
>
> El mar, 30-11-2004 a las 10:52 -0800, Victor Peinado escribió:
> > Gracias por tu respuesta, muy ilustrativa.
> >
> > Tengo clara las ventajas de la POO y ya te digo que entiendo cómo
> > funciona. Lo que me cuesta es pensar en términos de OO cuando tengo
> > que enfrentarme a un problema. Imagino que es cuestión de
> > entrenamiento, así que me prongo como deberes personales para estas
> > Navidades meterme caña con este tema.
> >
> > Saludos.
> >
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es