Mensajes: 1,115
Temas: 121
Gracias Recibidas: 398 en 268 posts
Gracias Dadas: 431
Registro en: Jul 2020
No sé nada de Python. Sorry.
No podemos regresar
Mensajes: 384
Temas: 7
Gracias Recibidas: 102 en 80 posts
Gracias Dadas: 102
Registro en: May 2020
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:1 usuarios dice Gracias! a jguardon por este post
• guizans
Mensajes: 257
Temas: 17
Gracias Recibidas: 37 en 35 posts
Gracias Dadas: 56
Registro en: Jul 2020
(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
Mensajes: 1,115
Temas: 121
Gracias Recibidas: 398 en 268 posts
Gracias Dadas: 431
Registro en: Jul 2020
(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
Mensajes: 257
Temas: 17
Gracias Recibidas: 37 en 35 posts
Gracias Dadas: 56
Registro en: Jul 2020
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
Mensajes: 1,115
Temas: 121
Gracias Recibidas: 398 en 268 posts
Gracias Dadas: 431
Registro en: Jul 2020
17-02-2022, 11:32
(Última modificación: 17-02-2022, 11:36 por
Shordi.)
No podemos regresar