Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

POO: Hacer con más, lo que se puede hacer con menos...
#11

No sé nada de Python. Sorry.

No podemos regresar
    ¡Gracias!
#12

En Python las clases heredadas, en el constructor siempre se inicializa primero la clase padre y de esa forma ya está construida la clase hija con todos los métodos y propiedades heredados más los que nosotros añadimos a la nueva. Incluso se pueden añadir parámetros nuevos al constructor, igual que en gambas cuando usamos el método _new().

O sea que __init__ en Python y _new() en gambas viene a ser lo mismo, pero no necesitamos indicar ahí nada más que los parámetros porque ya hemos indicado en "Inherits cPadre" de dónde queremos heredar.

En gambas sencillamente ese proceso es automático desde que pones la palabra Inherits al principio de tu nueva clase heredada.

Por cierto, en este ejemplo Julio explica muy bien cómo acceder a los métodos (o eventos y propiedades) tanto de la clase padre como de la clase hija:

https://sologambas.blogspot.com/2015/01/...o.html?m=1

Como suele decir Grandamakulo, perdonad mi farragosidad explicando esto después de haber llenado un contenedor de escombros provenientes del patio de mi casa. Cosas de las parientas....

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
[-] Los siguientes 1 usuarios dice gracias a jguardon por este post:
  • guizans
    ¡Gracias!
#13

(28-01-2022, 18:22)AlfredoSC escribió:  He buscado en la web, las ventajas y desventajas de la POO, pero las explicaciones son tan ambiguas como la propia POO. No obstante saltan a la vista las desventajas, y la mas importante: Es mas lenta la ejecución de un proyecto o programa elaborado con POO.

Un POO es lineal tambien, solo que no se ve esa parte del codigo (en azul) porque esta dentro del runtime de Gambas. Son bucles infinitos que tienen mas o menos esta forma:

Private Quitiing as Boolean = False
Sub Form1_Loop()
Do  ' Inicio del bucle infinito
     ' El sistema operativo nos avisa de un click
     If SignalMouseDown then Trigger From.MouseDown   ' nuestro codigo en Public Sub Form1_MouseDown()

     ' El sistema operativo nos avisa del cierre de una ventana
     If SignalFrom1Close then Trigger From.Close              ' nuestro codigo en Public Sub Form1_Close()

Loop Until Quitting = true
End


Public Sub Form1_MouseDown()

     Debug "Aprete un boton del mouse"

End


Public Sub Form1_Close()

     Quitting = True


End

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
    ¡Gracias!
#14

(16-02-2022, 16:07)tercoide escribió:  
(28-01-2022, 18:22)AlfredoSC escribió:  He buscado en la web, las ventajas y desventajas de la POO, pero las explicaciones son tan ambiguas como la propia POO. No obstante saltan a la vista las desventajas, y la mas importante: Es mas lenta la ejecución de un proyecto o programa elaborado con POO.

Un POO es lineal tambien, solo que no se ve esa parte del codigo (en azul) porque esta dentro del runtime de Gambas. Son bucles infinitos que tienen mas o menos esta forma:

Private Quitiing as Boolean = False
Sub Form1_Loop()
Do  ' Inicio del bucle infinito
     ' El sistema operativo nos avisa de un click
     If SignalMouseDown then Trigger From.MouseDown   ' nuestro codigo en Public Sub Form1_MouseDown()

     ' El sistema operativo nos avisa del cierre de una ventana
     If SignalFrom1Close then Trigger From.Close              ' nuestro codigo en Public Sub Form1_Close()

Loop Until Quitting = true
End


Public Sub Form1_MouseDown()

     Debug "Aprete un boton del mouse"

End


Public Sub Form1_Close()

     Quitting = True


End

Este código que citas no es POO, Es lo que hay debajo de lo que se llamaba "Programación Orientada a Eventos", en contraprosición a la "Programación Orientada a Procesos" primitiva. Apareció (al menos en mi experiencia) de la mano del W95 y fue una de las reconversiones que más me costó hacer. Yo ya no era quien controlaba el programa, como ocurría en MS-DOS y el viejo y querido Clipper5, ahora todo dependía de los "Eventos" disparados por el usuario ¡Oh My God!.

Aclarar que, tras pasar por el compilador, todo es "programación lineal", la famosa ristra de unos y de ceros que entienden las máquinas. La programación Lineal (con sus GOTOs, GOSUBs, etiquetas y números de línea), la Estructurada (con sus procedures y funciones) o la POO (con sus clases, objetos y herencias), son sólo maneras de "reorganizar al humano modo" esa lista de órdenes para que nos sea más fácil a los pobres humanitos de a pie aplicar a la ristra aquello de "divide y vencerás".

Saludos

No podemos regresar
    ¡Gracias!
#15

Por supuesto que no fue mi intención desarrollar el tema en profundidad, ni siquiera se lo suficiente. Pero en mis principios use la programacion lineal, que yo he arrancado con MS DOS también, incluso he hecho algún hack en assembler (*) !!!!!!

Pero quería contarle al OP que en algún momento de la vida de su programa, se vuelve lineal por mas POO que sea. En cuanto dejas de inicializar todo, y esperas alguna acción del user como Click o KeyPress o una modificacion de tus ventanas, entras a un bucle infinito. Invisible en Gambas, pero si te pones a hacer cosas en C , lo tienen que codificar.

(*) Mi gran amigo el Pollo y yo eramos bastante frikis allá por los 80s. Una vez le hice un programa en assembler que hackeaba el teclado de manera que al presionar "p" se escribía "Pollo gay". Demoro unos días en darse cuenta que el residente se cargaba en el AUTOEXEC.BAT bajo un nombre engañoso del estilo MSDOSINFO.SYS o algo por el estilo.

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
    ¡Gracias!
#16

Cita:entras a un bucle infinito. Invisible en Gambas,
Hasta cierto punto invisible. No es "controlable por el usuario" (hasta cierto punto también) pero sí observable. Se llama el "Bucle de Eventos" y puede ser "manejado" con las instrucciones WAIT y SLEEP. El perfilador de Gambas ofrece mucha información basada en sus ejecuciones.
 
Cita:) Mi gran amigo el Pollo y yo eramos bastante frikis allá por los 80s. Una vez le hice un programa en assembler que hackeaba el teclado de manera que al presionar "p" se escribía "Pollo gay". Demoro unos días en darse cuenta que el residente se cargaba en el AUTOEXEC.BAT bajo un nombre engañoso del estilo MSDOSINFO.SYS o algo por el estilo.
Big Grin Big Grin Big Grin Big Grin
Me recuerda una broma que le hicimos a un colega de cambiar el nombre de su editor de textos y colocar en la carpeta ms-dos un bat que escribía un amenazador mensaje de que tenía el "Virus Cyclon Gay II" instalado y que si continuaba se iba a convertir en gay. Cuando lo vimos apagar la CPU a toda prisa casi nos da un infarto de tanto reír.

No podemos regresar
    ¡Gracias!


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)