Newsgroup: it.comp.lang.delphi
Titolo: [OT] Come usare l'ereditarietà in VB6

Spero che non diciate ulteriori cazzate a riguardo... 
http://msdn.microsoft.com/it-it/library/5x4yd9d5(VS.80).aspx
Su questo libro è poi meglio specificato come usare l'ereditarietà in VB6
http://www.it-lang-vb.net/tablibri.asp?ID=354
propriamente nella parte I vedi indice:
- Parte I (Concetti di base) 
- Eventi, polimorfismo ed ereditarietà (eventi, polimorfismo, 
multicasting, ereditarietà, gerarchie e relazioni tra oggetti)
--- posted by geoForum on 
http://www.delphiedintorni.it

 
http://msdn.microsoft.com/it-it/library/5x4yd9d5(VS.80).aspx
This page is specific to Microsoft Visual Studio 2005/.NET Framework 2.0

 VB6
http://msdn.microsoft.com/en-us/library/aa289512(vs.71).aspx
OOP
For a programming language to be a true OOP language, the language must
meet the following criteria:
[cut]
Inheritance
The excitement of Visual Basic .NET lies in inheritance. Visual Basic 5
introduced the concept of interface inheritance, which allows you to
reuse the interface of a class, but not its implementation. Visual
Basic .NET provides for true implementation inheritance whereby you can
reuse the implementation of a class.

reuse the interface of a class, but not its implementation.
Giustissimo.... Dal 5 ! La sua implementazione viene in ogni caso 
ottenuta rendendolo OOP, come meglio specificato nel testo della collana 
Mondadori informatica.
http://www.it-lang-vb.net/tablibri.asp?ID=354
Grazie era la frase giusta...
Ciao ;-)


 meno non nella forma piu' matura detta eredita' d'implementazione
L'ereditarieta' "suggerita" da Balena e' la cosidetta "ereditarieta'
per delega" che ha molto poco a che fare con la vera ereditarieta'
visto che richiede la re-implementazione di tutti i metodi delle classi
genitore nelle classi figlie.
In una gerarchia di classi anche semplice, modificare una classe base
anche solo minimamente porta a dover intervenire su tutta la gerarchia,
rendendo questa pseudo ereditarieta' totalmente fallimentare nel suo
scopo primario ("l'ereditarieta' riduce il codice all'interno della
classe stessa e quindi semplfica il lavoro del creatore della classe").

classe stessa e quindi semplfica il lavoro del creatore della classe").
Qui si apre una valutazione dell'efficacia dell'ereditarietà ma non si 
discute affatto che questa non vi sia. Infatti se ne parla.
Anche lo stesso Balena si contraddirrebbe (in base alla tua 
interpretazione) intitolando nella PARTE 1 del libro
Classi e oggetti (introduzione all'OOP, moduli di classe)
In definitiva come già detto all'inizio, anzi grazie per i chiarimenti, 
VB6 è un linguaggio OOP seppur non sia un OOP moderno. Ricordiamo che 
nello stesso SIMULA (primo OOP) manca del tutto l'incapsulamento 
introdotto successivamente da SMALLTALK.
Grazie finalmente qualcuno che parla di questioni tecniche e non offende 
o attacca la persona.


 offende o attacca la persona.
Ti suggerisco di rileggere tutti i tuoi post prima di parlare di chi
offende o attacca chi.
Per concludere:
http://en.wikipedia.org/wiki/Object_oriented
A survey by Deborah J. Armstrong [1] of nearly 40 years of computing
literature identified a number of ‘quarks’, or fundamental concepts,
found in the strong majority of definitions of OOP.
[cut]
Inheritance 
    ‘Subclasses’ are more specialized versions of a class, which
inherit attributes and behaviors from their parent classes, and can
introduce their own.
Ed ancora:
http://en.wikipedia.org/wiki/Inheritance_%28computer_science%29
In object-oriented programming, inheritance is a way to form new
classes (instances of which are called objects) using classes that have
already been defined. The new classes, known as derived classes, take
over (or inherit) attributes and behavior of the pre-existing classes,
which are referred to as base classes (or ancestor classes). It is
intended to help reuse existing code with little or no modification.
Secondo queste definizioni, ereditarieta' per delega ed ereditarieta'
per interfacce NON sono sufficienti per definire un linguaggio OOP
perche' manca l'ereditarieta' del comportamento (behavior) ossia
dell'implementazione e la possibilita' di riutilizzo del codice con
minime o nessuna modifica:
- new classes inherit behavior of the pre-existing classes
- help reuse existing code with little or no modification.
In pratica Visual Basic 6.0 NON puo' essere definito un linguaggio OOP
perche' il tipo di ereditarieta' che offre nativamente (per
interfaccia) e quello che si puo' realizzare (per delega) non sono
conformi alla definizione di ereditarieta' che sta alla base della
maggior parte delle definizioni di OOP: eredita' di comportamento e
riutilizzo del codice dalle classe basi con minima o nessuna modifica.

 parziali.
[/errata corrige]

che sta alla base della maggior parte delle definizioni di OOP: 
Maggior parte giusto... La maggior parte dei pini è verde scuro.. Giusto 
mi hai proprio convinto...
......
Credo che tu non sia laureato... !


 Credo che tu non sia laureato... !
P.S.
In futuro quando posti dei link, controlla almeno che non facciano
riferimento a Visual Basic .NET perche' non fai altro che rafforzare
l'impressione di essere quello che non legge bene i link che posta.

che rispetti la definizione di ereditarieta' di Wikipedia.
OK... allora ho capito perchè stai sbagliando, hai preso una strada 
relativa alla definizione dei moderni OOP i quali comprendono 
generalmente altre peculiarità che sono tipicamente "operation 
overloading, parameterized constructors and class-level attributes and 
operations".
Inoltre guarda che *behaviour* come lo intendi tu è sbagliato, una 
intefaccia ha eccome dei comportamenti, ci mancherebbe altro...
The main difference between the two inheritances is that interface 
inheritance should specify only a contract of desired behavior. 
Leggi qui, magari capisci perchè molti sbagliano dicendo che VB6 non è 
OOP... 
http://www.thescarms.com/vbasic/ObjectOriented.aspx


Ti prego infine di soffermarti su questo concetto:
VB6 allows the interface, the Product class, to implement the actual 
behavior. Stereo keeps an instance of Product (containment) then asks 
that reference to do some work for it (delegation). This type of 
interface inheritance is not a true interface because it allows you to 
add code to Stereo to provide the actual behavior.
is not a true interface because it allows you to add code to Stereo to 
provide the actual behavior.
Proprio qui si definisce il fatto che VB è OOP.
ciao ;-)


 Proprio qui si definisce il fatto che VB è OOP.
Si, certo, tranne per il piccolo fatto che Microsoft non ritiene che
l'ereditarieta' tramite delega renda un linguaggio veramente OOP. E se
lo dice l'autore del linguaggio il concetto dovrebbe essere chiaro per
chiunque.
[mi quoto]
Sto ancora aspettando (e non sono l'unico) un codice Visual Basic 6.0
che rispetti la definizione di ereditarieta' di Wikipedia.
Ovviamente il fatto che siano passati vari giorni dal tuo primo post e
che tu non abbia ancora postato una prova conclusiva come questa
potrebbe far pensare che un codice del genere non esista.
[mi quoto]
Data la tua vasta esperienza in Visual Basic 6.0 mi chiedo come mai tu
stia postando continuamente link a pagine di terzi (a volte
sconosciuti) a sostengo delle tua affermazioni mentre non hai ancora
postato una sola riga di tuo codice.
Inoltre vorrei conoscere la tua opinione sul fatto che Wikipedia (che
tu stesso ritieni fonte affidabile visto che l'hai citata varie volte)
ritiene Visual Basic component-oriented, event-driven ed object-based
ma non object oriented?
P.S.
Per favore, circa di rispondere esaurientemente almeno ad alcne delle
domande che ti vengono poste, altrimenti potresti dare l'impressione di
uno che non desideri fare informazione corretta ma solo disinformazione
e flame per ottenere ragione.

 offende o attacca chi. [...]
Filippo, è un "troll" e quindi si comporta come tale. :-)
Lascialo semplicemente perdere, e "PLONKA" la discussione.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

third-generation event driven programming language)?
Continuo a sottolineare e risottolineare che ti stai riferendo a una 
moderna concezione di OOP. Lo stesso Simula che è un OOP di prima 
concezione non ha l'INCAPSULAMENTO. 
Chi ha concepito VB6 lo ha fatto tenendo in considerazione 
un'impostazione orientata agli oggetti. Parallelamente sono uscite 
moderne concezioni e precisamente nal capitolo 2 di questo libro: 
Bertrand Meyer's Object-Oriented Software Construction si esponeva il 
fatto che un linguaggio OO per essere pienamente OO (a FULL OOP) doveva 
avere determinate caratteristiche.
Ma si parla di FULL, TRUE OOP etc. in base alla definizione moderna. Ciò 
non toglie che VB dove è presente una ereditarietà di interfaccia e 
Simula dove non è presente l'incapsulamente siano OOP. Come detto e 
ridetto... Non sono OOP full ma sono OOP.
L'esempio del common rail è calzante. Un motore per essere veramente 
diesel deve essere common rail. Ecco la definizione moderna. Una vecchia 
auto diesel non è un vero diesel ma di fatto lo è.
Poi definizioni di object-based etc. sono tutte ridefinizioni per 
sottoclassificare negli OO linguaggi in cui determinate caratteristiche 
sono meno in luce o mancanti. Il teoremetto che c'è in giro che un OOP 
deve essere IPI sono 
VB6 è OOP eccome ma non rientra nei moderni OOP anche se erano già 
uscite concezioni moderne che poi vengono considerate con .NET
Alla stessa stregua una macchina non full optional non sarebbe una 
macchina, un uomo senza un braccio non sarebbe un uomo.
Quindi è inutile che snoccioliamo questioni sull'ereditarietà (cha tra 
l'altro c'è eccome) qui il fatto è che stiamo consideranto un linguaggio 
OOP a tutti gli effetti seppur non da un punto di vista moderno.
Infatti la religion flame che è stata scatenata contro MS è proprio 
questa dicendo ma voi non avete fatto un vero OO, perchè il vero OO è 
common rail.
Se vuoi cascare nella guerra dei marchi fai pure di fatto VB è orientato 
agli oggetti e non è un semplice linguaggio procedurale, c'è il 
polimorfismo, l'incapsulamento e l'ereditarietà. Sono concetti che al 
tempo del pascal non c'erano che considerano la programmazione orientata 
agli oggetti le classi e quant'altro.
Quindi VB6 è OOP al di là delle campagne pubblicitarie di altre case 
produttrici. La sentenza è emessa, non ci sono presupposti per i quali 
VB6 non sia un OOP seppur si discuta di FULL, TRUE, Object-based e 
quant'altro. Gli oggetti ci sono e possono essere implementati. Stop
Il tribunale in data 19 maggio 2008 delibera.
Eccolo per le tue domande nella lista degli OOP su wikipedia
http://en.wikipedia.org/wiki/Categorical_list_of_programming_languages


Oltre a quanto detto sopra vorrei farti i miei complimenti come vero 
Professionista quale sei.
Hai snocciolato una questione tecnica affondando il dito sui veri 
aspetti che riguardano la diversità di vedute.
Credo che se gran parte del mondo del lavoro fosse frequantato da questo 
tipo di persone le cose andrebbero molto meglio.
Grazie quindi per le informazioni portate su questo NG.
Io rimango del mio parere come metà del web che afferma che VB6 è OOP.
Ciao e grazie
Il TRoll


 Eccolo per le tue domande nella lista degli OOP su wikipedia
Si, certo, peccato che c'erano molte domande a cui ti e' stato chiesto
di rispondere e nessuna di queste trova risposta nella pagina indicata.

Ti prego di essere open mind per un momento:
Nessuno nega affatto che vi sia un forte dibattito nel mondo del 
software sul fatto se VB6 sia un FULL OO.
Alcuni pensano che non sia un true/full OO, alcuni pensano che sia un 
linguaggio object-based, altri addirittura che sia una via di mezzo:
Una cosa c'è da dire e cioè che per object-base e *TU* hai detto che VB6 
lo è si, intende un particolare linguaggio object-oriented con alcune 
caratteristiche mancanti.
Tanto è vero che si parla poi di full-object-based o di true-object-
based language per indicare che è un linguaggio OO a tutto tondo.
Ecco perchè molti non capiscono perchè VB6 è considerato OO !!!!
Non si vuole dire invece che VB6 sia un FULL-OO.
La definizione di object-based infatti è nata molto dopo che si parlava 
di linguaggi OO proprio per puntare il dito sul fatto che alcuni 
linguaggi OO non erano pienamente orientati agli oggetti.
Giusto dire che VB6 non sia un FULL/TRUE OO ma di fatto è un semplice OO 
con caratteristiche mancanti e per tale motivo definito modernamente 
Object-based cioè facente parte della famiglie degli OO.


Aggiungo a quanto detto sopra (e che spero finalmente ti riporti sulla 
vera definizione data di VB6 motivo di malintesi e incomprensioni) che è 
difficile dare delle definizioni ben precise classificando i linguaggi 
di programmazione. In quanto queste sono definizioni che tendono ad 
assumere connotati ben precisi dopo molto tempo quando le mode e le 
metodologie di programmazioni appaiono ben delineate.
La stessa definizione di object-based assume due significati discordanti:
http://en.wikipedia.org/wiki/Object-based
In particolare nel primo caso si intende una programmazione object-
oriented con una delle seguenti restrizioni.
Mentre Java viene inteso "object-based" in base alla possibilità di 
avere dei prototipi.
Spero finalmente che tu abbia capito il diverso punto di vista che non è 
solo il mio ma quello di tantissime persone, MS compresa (FULL/TRUE).
Credo che siate caduti in errore considerando con termine TRUE vero come 
se MS dicesse di aver venduto un linguaggio OO truffando la gente, il 
che parrebbe davvero assurdo.
Ciao


 gente, il che parrebbe davvero assurdo.
Nessuno e' caduto in errore (o forse tu?). 
Microsoft afferma che Visual Basic 6.0 NON e' un linguaggio veramente
OOP mentre Visual  Basic .NET lo e'. E la principale differenza sta
proprio nella mancanza di ereditarieta' dell'implementazione, uno dei
principi cardine della programmazione OOP.
E, visto che ti piace tanto citare dei libri, e' interessante vedere
come la stessa Microsoft in Advanced Microsoft Visual Basic 6.0 (2nd
Edition) proponga una visione piuttosto confusa di VB6 come linguaggio
object oriented. In almeno un capitolo da anche ragione a chi afferma
che "Visual Basic is not properly object oriented".

che "Visual Basic is not properly object oriented".
E questo spiega che tu non hai capito un *CAZZO* di quello che dice 
MS !!!


 MS !!!
Finalmente, non aspettavo altro che una bella volgarita', tanto per non
smentirti, quando ti trovi di fronte all'inevitabile non sai far altro
che rifugiarti dietro al turpiloquio.

 che rifugiarti dietro al turpiloquio.
Sei stato un grande a demolirlo post dopo post con una pazienza 
invidiabile. Però adesso, ti prego, lascialo perdere, altrimenti chissà 
quanti altri fake trollanti ci toccherà sopportare.
-- 
Jax


Caro Jax leggi qui:
http://www.insteptech.com/home/whoweare.htm
"Deborah Kurata -- an early advocate of object-oriented programming with 
VB. 
sei proprio un bel volpino


che rifugiarti dietro al turpiloquio.
E tu dietro una marea di *CAZZATE* francamente mi hai stancato... Du 
palle con sta storia... Se sei ottuso non è colpa mia !
Ti posto un link:
http://www.psiconline.it/great.html


Come postato da Paolo Serafini
"Deborah Kurata -- an early advocate of object-oriented programming with 
VB. Those VB programmers who were lucky/smart enough to follow her 
advice are going to find the move to Microsoft .NET a lot easier than VB 
programmers who only have experience with procedural programming." ...
Deborah Kurata è una tra i primi sostenitori della programmazione 
orientata agli oggetti con VB. I programmatori VB che furono abbastanza 
fortunati/intelligenti da seguire il suo consiglio hanno trovato una 
maggior facilità a passare a Microsoft .NET rispetto a quelli che 
avevano avuto unicamente esperienza con la programmazione procedurale.
http://www.insteptech.com/home/whoweare.htm
poi anche il suo libro (il quarto della pagina):
http://www.insteptech.com/home/books.htm
Ti prego quindi di astenerti dallo sparare ulteriori *IMPRECISIONI* per 
essere buoni che riguardano questo argomento parlando di tutt'altro 
rispetto a ciò che ci interessa sapere!
