Pagina 1 di 1

[VB] Simulare l'ereditarietà nelle classi

MessaggioInviato: lun mag 29, 2006 10:12 am
da DilanDog
Ho sempre sentito parlare della mancanza dell'ereditarietà nelle classi in VB6 ma avendole sempre usate marginalmente non mi sono mai scontrato con questo limite. Ora invece, essendomi addentrato un po' di più nello studio della programmazione ad oggetti e ritrovandomi alle prese con il restauro di una vecchia applicazione VB in cui erano state utilizzate marginalmente alcune classi, il non poter ereditare proprietà e metodi di una seconda classe derivata diventa effettivamente un grosso limite [cry+]

In sostanza vorrei una classe X che facesse da collezione di classi y al posto dell'attuale semplice collection, per poterne intercettare i metodi Add, Remove ecc.
Non c'è proprio modo di simulare questa cosa tramite VB? Devo replicare nella classe madre tutte le intestazioni dei metodi e delle propertà di quella figlia e farglieli richiamare? [cry]

Re: [VB] Simulare l'ereditarietà nelle classi

MessaggioInviato: mar mag 30, 2006 4:44 pm
da Silver Black
DilanDog ha scritto:Non c'è proprio modo di simulare questa cosa tramite VB? Devo replicare nella classe madre tutte le intestazioni dei metodi e delle propertà di quella figlia e farglieli richiamare? [cry]


E' possibile tramite l'ereditarietà per delega, l'unica possibile per VB. Ma è una vera schifezza...

Comunque se proprio ti serve, eccoti un esempio di codice:
http://www.freevbcode.com/ShowCode.asp?ID=2970

E un articolo che ne parla (criticandola, in bene e in male), che ti sarà utile a comprenderne il funzionamento:
http://users.skynet.be/wvdd2/General_techniques/Inheritance/inheritance.html

Ecco un altro articolo che la spiega, riassumendo in soldoni:
http://www.lhotka.net/Articles.aspx?id=5f76a91c-5a75-49e1-9379-6d2807653b68

Nota che sempre di workaround si tratta, non è nè eleganza nè OOP. In altre parole: l'ereditarietà per delega di VB è un accrocchio, una pezza.
E adesso, non ho che da augurarti buon lavoro! [:-D]

Re: [VB] Simulare l'ereditarietà nelle classi

MessaggioInviato: gio giu 01, 2006 10:03 am
da DilanDog
Silver Black ha scritto:E' possibile tramite l'ereditarietà per delega, l'unica possibile per VB. Ma è una vera schifezza...
....
Nota che sempre di workaround si tratta, non è nè eleganza nè OOP. In altre parole: l'ereditarietà per delega di VB è un accrocchio, una pezza.


In questi due giorni mi sono informato anch'io ed in poche ore ho scoperto tutto, o quasi, di quello che c'era da sapere sugli accrocchi per la gestione dell'ereditarietà del VB. Come sempre e come per tante altre cose la parola d'ordine in VB è "accrocchio", ovvero il fine giustifica i mezzi. In questo caso non potevo fare altrimenti perché l'applicazione era già scritta, dovevo metterci le mani e mi sono ritrovato una serie di classi utilizzate come fossero dei semplici moduli, con tutte le variabili pubbliche e praticamente senza nessun tipo di incapsulazione...insomma, un gran casino da recuperare in qualche modo [cry]

Diciamo che anche questo sguardo più approfondito alla gestione delle classi in VB sottolinea quello che non perdo e quello che, spero, troverò utilizzando Delphi....sempre che tra un accrocchio e l'altro riesca a trovatre il tempo per imparare ad usarlo [:-D]


Silver Black ha scritto:E adesso, non ho che da augurarti buon lavoro! [:-D]


Grazie, troppo gentile [cry+] [sedia]