Acostumbrado desde hace muchos años a la programación lineal, me veo "obligado" [aunque con cierta curiosidad], a desentrañar el por qué la POO es mas "conveniente".
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.
Será cierto? De todos modos, me gustaría mirar un diagrama de Clases, Constructores, métodos y propiedades en donde se observe que "hay ganancia" en la Programación Orientada a Objetos....
Saludos..
Es mejor saber un poco de todo, que todo de muy poco. Lo primero, garantiza la supervivencia humana.
Responder
Los siguientes 1 usuarios dice gracias a AlfredoSC por este post:1 usuarios dice Gracias! a AlfredoSC por este post • Shordi
En gambas estás usando POO en el momento en que utilizas cualquier control y casi cualquier componente. La inmensa ventaja es la reutilización y modificación del código que ya está hecho... sin siquiera llegar a verlo. Respecto a las velocidades alegadas y demás, pues no tengo claro si eso es así "en condiciones de laboratorio" pero en "la vida real" y hablando de aplicaciones gráficas no creo que puedas apreciar diferencias de ningún tipo. Cuesta hacer el cambio de chip, al menos a mí me costó, pero una vez lo asimilas estás encantado con ella.
Como muestra un botón:
Ayer necesité un control que se comportase como un FileChooser pero que permitiese mostrar o dejar de mostrar el árbol de directorios a voluntad del usuario y sin perder las "cositas" que lleva FileChooser (menús contextuales, breadcrumbs, etc.).
Una pequeña investigación en la clase y su estructura y en diez minutos lo tenía desarrollado y mi Gambas exendido en un control nuevo que heredando de FileChooser y con una propiedad añadida para ese comportamiento, en un derroche de imaginación y creatividad llamé ChooserFiles.
Eso con funciones me habría costado semanas. Adjunto el ejemplo de la imagen.
Saludos
No podemos regresar
Responder
Los siguientes 2 usuarios dicen gracias a Shordi por este post:2 usuarios dicen Gracias! a Shordi por este post • AlfredoSC, Grandamakulo
Cita:me gustaría mirar un diagrama de Clases, Constructores, métodos y propiedades en donde se observe que "hay ganancia" en la Programación Orientada a Objetos....
El otro dia, hice un ejemplo de un programa que hace lo mismo usando el paradigma procedimental y el POO:
Para ver "ganancia", puedes ver por ejemplo lo simple que es realizar "hacer y deshacer" .
Tambien en mi curso online gratuito de gambas3, puedes ver un montón de ejemplos de programación orientada a objetos y patrones de diseño:
Ya que hablamos de POO me surge una duda. Pongamos que creo la clase B que hereda de la clase A. En la clase B hago un constructor, pero en la clase A tiene también un constructor, que pongamos recibe parámetros. ¿Como hago para llamar al constructor de la clase A desde la clase B?
Se puede acceder a las propiedades y métodos específicos del ancestro usando la palabra Super. Pero es verdad que acceder al constructor del padre, no tiene mucho sentido, puesto que al crear el objeto heredado estás llamando al constructor del objeto hijo que ya es parte del padre, no se si me explico bien.
Saludos
Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
Si, se que lo he escrito no tiene sentido. Estaba pensando en lo que hace Python con, por ejemplo, con Gtk3.
Python
import gi
gi.require_version("Gtk","3.0")
from gi.repositoryimport Gtk
class LabelWindow(Gtk.Window):
def__init__(self):
super().__init__(title="Label Example")
Como se puede ver, la clase LabelWindow hereda de Gtk.Window y en el constructor se ve como llama al constructor de la clase padre. Se que Python no es Gambas y hace las cosas de otra manera, y por eso mi comentario, me he confundido de lenguaje
El tema es que al "construir" la clase hijo ya se ha "construido" la clase padre previamente. Por eso no tiene sentido "reconstruir" la clase padre. Aquí lo correcto es establecer la propiedad que se desea en la propia clase hijo y dar los valores y comportamientos que se deseen en él.
Tienes razón Shordi, lo veo claro, y parece coherente añadir propiedades para por ejemplo en el caso de querer añadir un texto a la etiqueta. Pero también es verdad es si en Python se hace así algún motivo habrá, se me escapa el por qué.