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