Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[OT] Come usare l'ereditarietà in VB6

59 views
Skip to first unread message

TROLL

unread,
May 17, 2008, 11:16:44 AM5/17/08
to
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

Filippo Toso - Creative Park

unread,
May 17, 2008, 9:54:38 AM5/17/08
to
TROLL ha scritto:

> Spero che non diciate ulteriori cazzate a riguardo...
>
> http://msdn.microsoft.com/it-it/library/5x4yd9d5(VS.80).aspx

This page is specific to Microsoft Visual Studio 2005/.NET Framework 2.0

Filippo Toso - Creative Park

unread,
May 17, 2008, 10:15:04 AM5/17/08
to
TROLL ha scritto:

> Su questo libro è poi meglio specificato come usare l'ereditarietà in
> 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.

TROLL

unread,
May 18, 2008, 8:41:59 AM5/18/08
to
>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.

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 ;-)

Filippo Toso - Creative Park

unread,
May 18, 2008, 9:01:54 AM5/18/08
to
OLL ha scritto:

> > 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.
>
> Giustissimo.... Dal 5 !

Visual Basic .NET provides for TRUE implementation inheritance.

Secondo Microsoft, l'implementazione dell'ereditarieta' del Visual
Basic 5 e 6 non e' una vera ereditarieta' e per questo, sempre secondo
Microsoft, il Visual Basic 6.0 non un vero linguaggio OOP.

> 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

Potresti spiegare con precisione come ottenere l'ereditarieta'
dell'implementazione (e non delle sole interfacce) in Visual Basic 6.0
in modo da rientrare nella definizione di Microsoft di "true OOP
language"?

Nel capitolo 6, pagina 244 del libro che hai indicato c'e' scritto:

> Purtroppo Visual Basic (6.0 ndr) non supporta l'ereditarieta', per lo
> 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").

TROLL

unread,
May 18, 2008, 12:12:19 PM5/18/08
to
>>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.

Cerchiamo di essere precisi e di non tagliare una parte di quanto
riportato da MSDN. Cito integralmente:

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.

Cioè TRADUCENDO

L'entusiasmo in Visual Basic .NET risiede nell'ereditarietà. Visual
Basic 5 introduce il concetto di ereditarietà mediante interfacce,
permettendo di riutilizzare l'interfaccia di una classe, ma non la sua
implementazione.

ad anche ciò che hai tagliato:

Visual Basic .NET permette una genuina *IMPLEMENTAZIONE* di ereditarietà
in base a cui si può riutilizzare l'implementazione di una classe.

Ergo... Parliamo di una true implementation inheritance e non di
SEMPLICEMENTE di una true inheritance...

Quindi l'ereditarietà esiste eccome. D'altra parte MS si contraddirrebbe
dicendo prima che VB6 è OOP e poi dicendo che non lo è..


Proseguendo:

>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").

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.

Filippo Toso - Creative Park

unread,
May 18, 2008, 12:06:30 PM5/18/08
to
TROLL ha scritto:

> Cerchiamo di essere precisi e di non tagliare una parte di quanto
> riportato da MSDN.

Per l'appunto:

> 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.

"true implementation inheritance" => "vera ereditarieta' di
implementazione" rispetto alla ridotta "interface inheritance" offerta
da Visual Basic.

> Ergo... Parliamo di una true implementation inheritance e non di
> SEMPLICEMENTE di una true inheritance...

[mi quoto]


Potresti spiegare con precisione come ottenere l'ereditarieta'
dell'implementazione (e non delle sole interfacce) in Visual Basic 6.0
in modo da rientrare nella definizione di Microsoft di "true OOP
language"?

[/mi quoto]

> Quindi l'ereditarietà esiste eccome.

Visual Basic 5 ha introdotto l'ereditarieta' tramite interfacce, un
tipo di ereditarieta' che, per la Microsoft, non rende il linguaggio
veramente OOP.

> D'altra parte MS si contraddirrebbe dicendo prima che VB6 è OOP e poi
> dicendo che non lo è..

Infatti Microsoft non dice che Visual Basic 6 e' un linguaggio
veramente OOP, mentre Visual Basic .NET lo e'.

> Qui si apre una valutazione dell'efficacia dell'ereditarietà ma non
> si discute affatto che questa non vi sia.

Per te SIMULA non ha l'incapsulamente ma SIMULA 67 include
l'incapsulamento del costruttore e Visual Basic 6.0 ha l'ereditarieta'
pero' non permette ' dell'implementazione.

Se Visual Basic supporta (parzialmente) l'ereditarieta' allora devi
convenire che anche SIMULA supporta (parzialmente) incapsulazione.

Viceversa, se pretendi di affermare che SIMULA non supporta
l'incapsulazione (nemmeno parzialmente), allora non puoi nemmeno
affermare che SIMLA non supporti l'incapsulazione.

> VB6 è un linguaggio OOP

Forse per te, per la Microsoft no.

> Ricordiamo che nello stesso SIMULA (primo OOP) manca del tutto
> l'incapsulamento introdotto successivamente da SMALLTALK.

Vedi sopra.

> Grazie finalmente qualcuno che parla di questioni tecniche e non
> 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.

Filippo Toso - Creative Park

unread,
May 18, 2008, 12:10:43 PM5/18/08
to
Filippo Toso - Creative Park ha scritto:

[errata corrige]


> Se Visual Basic supporta (parzialmente) l'ereditarieta' allora devi
> convenire che anche SIMULA supporta (parzialmente) incapsulazione.
>
> Viceversa, se pretendi di affermare che SIMULA non supporta

> l'incapsulazione, allora non puoi nemmeno affermare che Visual Basic
> non supporta l'ereditarieta' in quanto entrambi i supporti sono
> parziali.
[/errata corrige]

TROLL

unread,
May 18, 2008, 4:37:04 PM5/18/08
to
>Potresti spiegare con precisione come ottenere l'ereditarieta'
>dell'implementazione (e non delle sole interfacce) in Visual Basic 6.0
>in modo da rientrare nella definizione di Microsoft di "true OOP
>language"?

Non è necessario in quanto mi basta sapere che vi è ereditarietà.


>Visual Basic 5 ha introdotto l'ereditarieta' tramite interfacce, un
>tipo di ereditarieta' che, per la Microsoft, non rende il linguaggio
>veramente OOP.

Dove sta scritto ? Noi stiamo dicendo che non è ereditarietà di
implementazione ma bensì è ereditarietà di interfaccia.

>Infatti Microsoft non dice che Visual Basic 6 e' un linguaggio
>veramente OOP, mentre Visual Basic .NET lo e'.

Dove lo dice, puoi postare un link ?

Infatti come tu stesso dici:

>...Visual Basic 6.0 ha l'ereditarieta' pero' non permette quella
>dell'implementazione.

>Se Visual Basic supporta (parzialmente) l'ereditarieta' allora devi
>convenire che anche SIMULA supporta (parzialmente) incapsulazione.

>Viceversa, se pretendi di affermare che SIMULA non supporta
>l'incapsulazione (nemmeno parzialmente), allora non puoi nemmeno
>affermare che SIMLA non supporti l'incapsulazione.

Sintetizzo... Io dico secondo il terorema A è bello se per lui vale
B,C,D. Quindi dico: Dicono che A è bello ma per lui non vale B. E dico
ancora A è bello ma per lui vale in modo non moderno C.

Stiamo parlando di due insiemi disgiunti che solo tu metti in relazione
per deduzione associativa non corretta..

>> VB6 è un linguaggio OOP
>
>Forse per te, per la Microsoft no.

Non è che forse lo dici tu ? Dove lo dicono, il link ti prego ?

>Ti suggerisco di rileggere tutti i tuoi post prima di parlare di chi
>offende o attacca chi.

Non ne ho bisogno, so bene chi parla di aspetti tecnici (seppur con poca
esperienza e cultura tecnica) e chi porta la discussione sul
turpiloquio. Io consiglio a te di rileggerli.


>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,

*DA TE INTERPRETATE*

>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:

Ho imparato una parola nuova non sapevo che behaviuor significasse anche
IMPLEMENTAZIONE... Ma come una interfaccia non ha un comportamento su
dai (TAPIRO D'ORO) Sig... non faccia così...


>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'

quale ? La tua ? Ma hai letto bene i link che hai postato ??

>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... !

Filippo Toso - Creative Park

unread,
May 18, 2008, 5:25:56 PM5/18/08
to
TROLL ha scritto:

> > Potresti spiegare con precisione come ottenere l'ereditarieta'
> > dell'implementazione (e non delle sole interfacce) in Visual Basic
> > 6.0 in modo da rientrare nella definizione di Microsoft di "true OOP
> > language"?
>
> Non è necessario in quanto mi basta sapere che vi è ereditarietà.

Bene, alloro SIMULA e' OOP perche' implementa l'incapsulazione del
costruttore.

> > Visual Basic 5 ha introdotto l'ereditarieta' tramite interfacce, un
> > tipo di ereditarieta' che, per la Microsoft, non rende il linguaggio
> > veramente OOP.
>
> Dove sta scritto ?

Nella pagina dell'MSDN indicata in precedenza.

> Noi stiamo dicendo che non è ereditarietà di
> implementazione ma bensì è ereditarietà di interfaccia.

Che, secondo Microsoft NON permette di definire il Visual Basic 6.0
come "true OOP language". In caso contrario non avrebbe messo a
confronto VB 6.0 e VB.NET definendo quest'ultimo "true OOP language".

> > Infatti Microsoft non dice che Visual Basic 6 e' un linguaggio
> > veramente OOP, mentre Visual Basic .NET lo e'.
>
> Dove lo dice, puoi postare un link ?

L'ho gia' postato.

> Infatti come tu stesso dici:

[mi quoto]


Se Visual Basic supporta (parzialmente) l'ereditarieta' allora devi
convenire che anche SIMULA supporta (parzialmente) incapsulazione.

Viceversa, se pretendi di affermare che SIMULA non supporta

l'incapsulazione, allora non puoi nemmeno affermare che Visual Basic
non supporta l'ereditarieta' in quanto entrambi i supporti sono
parziali.

[/mi quoto]

> Sintetizzo... Io dico secondo il terorema A è bello se per lui vale
> B,C,D. Quindi dico: Dicono che A è bello ma per lui non vale B. E
> dico ancora A è bello ma per lui vale in modo non moderno C.
>
> Stiamo parlando di due insiemi disgiunti che solo tu metti in
> relazione per deduzione associativa non corretta..

Per te Visual Basic e' OOP perche' implementa l'ereditarieta' (anche
solo di interfaccia o per delega) ma SIMULA non e' OOP perche' non
supporta l'incapsulazione (anche se l'implementa per il costruttore).

Porti a supporto dell'affermazione "Visual Basic e' OOP" il fatto che
SIMULA viene definito un linguaggio OOP anche se SIMULA (per te) NON
supporta l'incapsulazione. Questa dovrebbe essere la "scusante" per
permettere a Visual Basic di essere OOP anche se implementa una
ereditarieta' non di implementazione (che fa venire meno gran parte
dell'utilita' dell'ereditarieta' stessa e va a cozzare con la
definizione di ereditarieta' data da Wikipedia).

O e' una, o e' l'altra. O VB non e' OOP come non lo e' SIMULA o VB e'
OOP cosi' come lo e' SIMULA. Devi scegliere.

> >> VB6 è un linguaggio OOP
> >
> > Forse per te, per la Microsoft no.
>
> Non è che forse lo dici tu ?

No, lo afferma la Microsoft nella pagina indicata. Altrimenti NON
affermerebbe che Visual Basic .NET e' un vero linguaggio di
programmazione OOP mettendolo a confronto con Visual Basic 6.0.

> Dove lo dicono, il link ti prego ?

L'ho gia' postato (2).

> Non ne ho bisogno, so bene chi parla di aspetti tecnici (seppur con
> poca esperienza e cultura tecnica) e chi porta la discussione sul
> turpiloquio. Io consiglio a te di rileggerli.

Probabilmente non ti rendi conto che rispondere con delle volgarita' a
qualcuno che ti parla in modo volgare non ti esime dalla colpa.

> > Secondo queste definizioni,
>
> *DA TE INTERPRETATE*

Bene, per favore, scrivi di seguito la tua interpretazione delle
seguenti definizioni:

Inheritance

‘Subclasses’ are more specialized versions of a class, which
inherit attributes and behaviors from their parent classes, and can
introduce their own.

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.

La mia "interpretazione" e':

Ereditarieta'
Le "sotto classi" sono versioni piu' specializzate di una classe, che
ereditano attributi e comportamenti dalle classi genitore e possono
introdurne di nuovi.

Nella programmazione orientata agli oggetti, l'ereditarieta e' un modo
per definire nuove classi (le cui istanze sono chiamate oggetti)
utilizzando classi che sono gia' state definite. Le nuove classi,
conosciute come classi derivate, subentrano (o ereditano) gli attrinuti
ed i comportamenti di classi preesistenti a cui ci si riferisce come
classi vase (o classi antenate). Questo e' progettato per aiutare il
riutilizzo di codice esistente senza o con piccole modifiche.

E, per favore, cerca di evitare in tutti i modi i concetti di
"riutilizzo di codice esistente senza o con piccole modifiche" e
"eredita' dei comportamenti", altrimenti la tua affermazione "Visual
Basic 6.0 e' OOP perche' implementa l'ereditarieta' di interfacce"
cadra' in un oblio senza fine (in mancanza di implementazione NON ci
puo' essere riutilizzo del codice senza o con minime modifiche).

> Ho imparato una parola nuova non sapevo che behaviuor significasse
> anche IMPLEMENTAZIONE... Ma come una interfaccia non ha un
> comportamento su dai (TAPIRO D'ORO) Sig... non faccia così...

Una classe puo' avere un comportamente, un'interfaccia no per il
semplice fatto che NON disponendo di una implementazione NON si puo'
"comportare" in alcun modo, NON puo' rispondere ad alcun messaggio ne
inviare alcun messaggio.

Se sei convinto del contrario, ti prego posta un codice Visual Basic
6.0 contenete un'interfaccia che mostri un comportamento senza dover
essere implementata da una classe.

> > 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'
>
> quale ? La tua ? Ma hai letto bene i link che hai postato ??

Io si, e tu?

Potresti postare un codice Visual Basic 6.0 dove implementi una
gerarchia di classi che rispecchi la definizione di ereditarieta' di
Wikipedia (compreso il riutilizzo del codice senza o con poche
modifiche)?

> Maggior parte giusto... La maggior parte dei pini è verde scuro..
> Giusto mi hai proprio convinto...

Lungi da me tentare di convincerti.

Giusto per citare ancora un po' Wikipedia:

[quote http://en.wikipedia.org/wiki/Object_based]
In general, object-based indicates that something such as a theory,
language, or model is based on the concept of object.

In computer science, the term object-based has two different,
incompatible senses:

1. A somehow limited version of object-oriented programming where one
or more of the following restrictions applies:

* there is no implicit inheritance
* there is no polymorphism
* only a very reduced subset of the available values are objects
(typically the GUI components)

2. Prototype-based systems (i.e., those based on "prototype" objects
which are not instances of any class)

Visual Basic is an example of a language that is object-based in the
first sense of the term, JavaScript in the second.
[quote]

Comunque, anche tu mi avevi quasi convinto quando hai postato una
pagina che parla di Visual Basic .NET mentre cercavi di spacciarla per
Visual Basic 6.0.

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.

> 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.

TROLL

unread,
May 18, 2008, 7:30:47 PM5/18/08
to
>Sto ancora aspettando (e non sono l'unico) un codice Visual Basic 6.0
>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

TROLL

unread,
May 18, 2008, 7:36:40 PM5/18/08
to
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 ;-)

Filippo Toso - Creative Park

unread,
May 19, 2008, 3:13:01 AM5/19/08
to
TROLL ha scritto:

> > Sto ancora aspettando (e non sono l'unico) un codice Visual Basic
> > 6.0 che rispetti la definizione di ereditarieta' di Wikipedia.
>
> OK... allora ho capito perchè stai sbagliando,

Potresti rispondere anche alle altre domande, per favore?

> hai preso una strada relativa alla definizione dei moderni OOP

Con questo stai affermando che Visual Basic 6.0 NON e' un linguaggio di
programmazione "moderno"?

Nel 1995 Delpi 1 implementava il paradigma OOP "moderno". 3 anni dopo
il Visual Basic 6.0 viene rilasciato e non implementava ancora un
paradigma OOP "moderno". Non e' che semplicemente non e' OOP e basta?

Anche in questa pagina viene affermato lo stesso:

http://en.wikipedia.org/wiki/Comparison_of_programming_languages

- Object Pascal (Delphi) imperative, object-oriented, generic
- Visual Basic component-oriented, event-driven

Come ti spieghi che Wikipedia non lo definisca "object-oriented" sia
nella pagina indicata che in http://en.wikipedia.org/wiki/Object_based
e in http://en.wikipedia.org/wiki/Visual_Basic (Visual Basic (VB) is a
third-generation event driven programming language)?

E non e' perche' Wikipedia sia parca nel dare definizioni visto che
dell'Object Pasca da questa definizione:

> Object Pascal is an object oriented derivative of Pascal mostly known
> as the primary programming language of Borland Delphi.

Mi piacerebbe avere una risposta almeno a questa domanda.

> 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.

La mia "interpretazione":

> La differenza principale tra le due ereditarieta' e' che
> l'ereditarieta tramite interfacce dovrebbe specificare solo il
> contratto del comportamento desiderato.

Potresti dare la tua interpretazione di "contratto"?

La mia interpretazione e' che le interfacce definiscano il "modo" in
cui le classi si presentano (ossia l'interfaccia pubblica delle classi
che le implementeranno), non il loro comportamento. Se fosse come
affermi tu la frase sarebbe:

> interface inheritance should specify only a desired behavior.

Invece si parla di contratto ossia dei nomi e della definizione dei
metodi esposti dall'interfaccia, non del comportamento implementato
dalla classe.

> Leggi qui, magari capisci perchè molti sbagliano dicendo che VB6 non
> è OOP...
>
> http://www.thescarms.com/vbasic/ObjectOriented.aspx

Come ho gia' scritto in precedenza, senza essere stato contraddetto, il
tipo di ereditarieta' descritto nella pagina indicato, cosi' come
quello suggerito da Balena, e' ereditarieta' per delega, un tipo di
ereditarieta' che va contro la definizione di ereditariteta' definita
da Wikipedia e "richiesta" da Microsoft per dichiarare un linguaggio di
programmazione veramente OOP:

- new classes inherit behavior of the pre-existing classes

- help reuse existing code with little or no modification.

Implementando l'ereditarieta' per delega si deve creare un oggetto
privato o protetto e reindirizzare tutte le chiamate a quell'oggetto.

Se l'interfaccia dell'oggetto cambia, dovranno essere riscritte tutte
le classi figlie.

Li classi figlie diventeranno sempre piu' grando all'aumentare della
discendenza.

Ovviamente tutti questi requisiti si scontrano con "help reuse existing
code with little or no modification" e, sopratutto, rendono veramente
difficile per le nuove classi ereditarie il behavior (comportamento)
delle classi esistenti.

> 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.

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.

Marco Breveglieri

unread,
May 19, 2008, 4:55:11 AM5/19/08
to
Filippo Toso - Creative Park ha scritto:
> Ti suggerisco di rileggere tutti i tuoi post prima di parlare di chi
> 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)

TROLL

unread,
May 19, 2008, 10:48:31 AM5/19/08
to
>Come ti spieghi che Wikipedia non lo definisca "object-oriented" sia
>nella pagina indicata che in http://en.wikipedia.org/wiki/Object_based
>e in http://en.wikipedia.org/wiki/Visual_Basic (Visual Basic (VB) is a
>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

TROLL

unread,
May 19, 2008, 11:23:21 AM5/19/08
to
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

Filippo Toso - Creative Park

unread,
May 19, 2008, 10:12:12 AM5/19/08
to
TROLL ha scritto:

> > Come ti spieghi che Wikipedia non lo definisca "object-oriented" sia
> > nella pagina indicata che in
> > http://en.wikipedia.org/wiki/Object_based e in
> > http://en.wikipedia.org/wiki/Visual_Basic (Visual Basic (VB) is a
> > 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.

Per cui Visual Basic 6.0 rilasciato nel 1998 e' OOP tanto quanto SIMULA
rilasciato nel 1967 (31 anni di differenza).

Non ti sembra che nel 1998 un linguaggio per definirsi veramente OOP
dovrebbe implementare quelli che tu chiami "concezione moderna" di OOP?

Resta il fatto che nessuna delle fonti che ho indicato parli di
object-oriented per quanto riguarda il Visual Basic 6.0. Lo stesso vale
per le fonti da te citate (quando riguardavano Visual Basic 6.0).

> Chi ha concepito VB6 lo ha fatto tenendo in considerazione
> un'impostazione orientata agli oggetti.

Ed infatti la Microsoft sul proprio sito scrive che Visual Basic 6.0
non e' un vero linguaggio OOP.

> 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.

Parli del libro la cui prima edizione (1988) e' stata pubblicata 10
anni prima del rilascio di Visual Basci 6.0 (1998)?

Uno potrebbe persino pensare che tanto "moderne" queste concezioni non
fossero, almeno non rispetto ad un linguaggio che sarebbe stato
rilasciato 10 anni piu' tardi.

> Ma si parla di FULL, TRUE OOP etc. in base alla definizione moderna.

Per cui concordi con l'affermazione di Microsoft che Visual Basic 6.0
non e' un vero linguaggio di programmazione OOP.

> Ciņ non toglie che VB dove č presente una ereditarietą di interfaccia
> e Simula dove non č presente l'incapsulamente siano OOP.

Mettere a confronto due linguaggi di programmazione rilasciati a
distanza di 31 anni e' un po' infantile, non credi?

> Come detto e ridetto... Non sono OOP full ma sono OOP.

Si, certo, non FULL, giusto qualche cosa in meno, quel qualche cosa che
fa definire Visual Basic 6.0 "component-oriented, event-driven,
object-based" ma non "object-oriented".

> L'esempio del common rail č calzante.

Non mi sembra ortodosso cercare di dimostrare che Visual Basic 6.0 sia
un linguaggio di programmazione OOP basando le proprie affermazioni sul
rapporto tra diesel e common rail.

> VB6 č OOP eccome ma non rientra nei moderni OOP anche se erano gią

> uscite concezioni moderne che poi vengono considerate con .NET

Ma come "eccome", se hai appena scritto che non e' FULL, al massimo
puoi dire che e' un OOP ridotto, non certo che e' "OOP eccome".

> 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.

Per quale motivo ti tiri indietro sull'ereditarieta'?

Sono giorni che continui a postare link sull'ereditarieta' di Visual
Basic 6.0 sperando che nessuno si accorga che non parlano di cio' per
cui li presenti.

Forse, e dico forse, non e' che ti sei reso conto che non e' non esiste
un modo per implementare l'ereditarieta' di implementazione come
definita da Wikipedia in Visual Basic 6.0 e per questo inizi a prendere
le distanza?

Lo stesso dubbio e' alimentato dall'assenza di una sola riga di codice
in ognuno dei post a cui ho risposto.

Come scritto in precedenza, se fossi stato in grado di portare a
supporto delle tue affermazioni del codice funzionante, lo avresti
fatto immediatamente visto che si trattava di una prova inconfutabile
ed incontrovertibile. Ma si sa, se non si puo', non si puo' ...

> 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.

Beh, Microsoft lo scrive anche sul proprio sito, ed ha sviluppato
Visual Basic .NET proprio per offire un linguaggio veramente OOP agli
sviluppatori Visual Basic. Probabilmente, e dico probabilmente, tanto
guerra di religione non era se la Microsoft stessa ha poi introdotto un
linguaggio veramente OOP in sostituizione a Visual Basic 6.0

> Se vuoi cascare nella guerra dei marchi fai pure di fatto VB č
> orientato agli oggetti

Visual Basic 6.0 e' "component-oriented, event-driven, object-based" ma
non "object-oriented".

> e non č un semplice linguaggio procedurale,

Non mi sembra di averlo mai scritto questo.

> c'č il polimorfismo, l'incapsulamento e l'ereditarietą.

L'ereditarietą solo di interfaccia e per delega, non di implementazione
(anche dopo tutti i tuoi fallimentari sforzi per dimostrarne la
fattibilita').

> Sono concetti che al tempo del pascal non c'erano

L'Object Pascal e' stato introdotto da Borland nel 1986 (12 anni prima
di Visual Basic 6.0) ed offriva gia' delle funzionalita' object-based.
Delphi 1.0 rilasciato nel 1995 (3 anni prima di Visual Basic 6.0) era
object-oriented secondo il tuo "moderno" concetto OOP.

> Quindi VB6 č OOP al di lą delle campagne pubblicitarie di altre case
> produttrici.

E della Microsoft stessa?

> La sentenza č emessa,

Si, certo.

> non ci sono presupposti per i quali VB6 non sia un OOP

Hai ragione, nessun presupposto, solo dati di fatto.

> seppur si discuta di FULL, TRUE, Object-based e quant'altro.

Ah, allora Visual Basic 6.0 e' object-based ...

> Gli oggetti ci sono e possono essere implementati.

Non mi sembra che nessuno qui abbia scritto qualche cosa in contrario.

> Stop
>
> Il tribunale in data 19 maggio 2008 delibera.

Mi spiace, hai perso in Appello e Cassazione.

> 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.

TROLL

unread,
May 19, 2008, 1:26:42 PM5/19/08
to
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.

TROLL

unread,
May 19, 2008, 1:36:42 PM5/19/08
to
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

Filippo Toso - Creative Park

unread,
May 19, 2008, 1:13:23 PM5/19/08
to
TROLL ha scritto:

> Ti prego di essere open mind per un momento:

Tutte le affermazioni che ho fatto sono state ampiamente suffragate da
riferimenti e citazioni. Non ho bisogno di essere "open mind" per un
momento (qualunque cosa tu intenda). Sono certo di quanto affermo
perche' porto a sostengo delle mie idee definizioni ed citazioni di
fonti autorevoli.

> Nessuno nega affatto che vi sia un forte dibattito nel mondo del
> software sul fatto se VB6 sia un FULL OO.

Non c'e' nessun forte dibattito. Microsoft scrive che Visual Basic 6.0
non e' un vero linguaggio OOP ed e' anche per questo ha sviluppato
Visual Basic .NET.

> 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:

Personalmente faccio riferimento al produttore.

> 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.

Visual Basic e' object-based: a somehow limited version of


object-oriented programming where one or more of the following
restrictions applies:

* there is no implicit inheritance
* there is no polymorphism
* only a very reduced subset of the available values are objects
(typically the GUI components)

Ossia NON e' un linguaggio OOP, esattamente come dice Microsoft.

> 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.

Fino a questo momento nessuna delle fonti che ho citato riporta le
diciture "full-object-based" o "true-object-based". Potresti citare
delle fonti attendibili che parlino di "full-object-based" o
"true-object-based"?

> Ecco perchè molti non capiscono perchè VB6 è considerato OO !!!!

Microsoft non lo considera un vero linguaggio OOP.

> Non si vuole dire invece che VB6 sia un FULL-OO.

E' strano vedertelo scrivere visto che sono giorni che invadi il
newsgroup con messaggi che assomigliano piu' alle allucinazioni di un
invasato piuttosto che alle affermazioni di uno che vuole fare
informazione corretta.

> 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.

http://en.wikipedia.org/wiki/Object-based_language

Object-based languages need not support inheritance or subtyping, but
those that do are also said to be object-oriented. Object-based
languages that do not support inheritance or subtyping are usually not
considered to be true object-oriented languages.

An example of a language that is object-based but not object-oriented
is Visual Basic (VB). VB supports both objects and classes, but not
inheritance, so it does not qualify as object-oriented.

> IT DOES NOT QUALIFY AS OBJECT-ORIENTED. <

Inoltre sembrerebbe che la definizione object-based sia stata creata
quasi appositamente per Visual Basic 6 (nella maggior parte delle fonti
non sembrano venire elencati altri esempi di linguaggi object-based
facenti parte della prima categoria).

> Giusto dire che VB6 non sia un FULL/TRUE OO ma di fatto è un semplice
> OO con caratteristiche mancanti

E questo non lo qualifica come object-oriented.

Riprendendo un tuo esempio, un braccio senza un uomo puo' ancora
considerarsi un uomo?

Programmare ad oggetti senza ereditarieta' di implementazione porta a
creare delle gerarchie di oggetti piatte o a duplicare il codice in
modo direttamente proporzionale alla profondita' della gerarchia.

> e per tale motivo definito modernamente Object-based cioè facente
> parte della famiglie degli OO.

Per cui sei daccordo che Visual Basic e' object-based a causa delle sue
limitazioni e questo non lo qualifica per rientrare tra i linguaggi
object-oriented.

Se la tua interpretazione di Object-based differisce da quella fornita,
sei pregato di esporla. Ovviamente deve essere in linea con quella di
Wikipedia visto che la ritieni una fonte autorevole.

> 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.

Per chi e' difficile? Su Wikipedia ci riescono benissimo:

http://en.wikipedia.org/wiki/Comparison_of_programming_languages

- Visual Basic component-oriented, event-driven

> 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.

Visual Basic 6.0 e' stato rilasciato nel 1998. 10 anni pensi che siano
sufficienti per giungere ad una connotazione corretta e ben delineata?

> La stessa definizione di object-based assume due significati
> discordanti:
> http://en.wikipedia.org/wiki/Object-based

Non se si parla di Visual Basic, visto che e' citato esplicitamente
come facente parte della prima categoria:

In computer science, the term object-based has two different,
incompatible senses:

1. A somehow limited version of object-oriented programming where one
or more of the following restrictions applies:
* there is no implicit inheritance
* there is no polymorphism
* only a very reduced subset of the available values are
objects (typically the GUI components)
2. Prototype-based systems (i.e., those based on "prototype" objects
which are not instances of any class)

Visual Basic is an example of a language that is object-based in the
first sense of the term, JavaScript in the second.

> 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.

Ancora una volta dimostri la tua difficolta' a comprendere (o leggere)
le tue stesse fonti. In quella pagina NON si parla di Java ma di
Javascript. Errori talmente grossolani non dovrebbero essere fatti da
chi ha come obiettivo fare informazione corretta.



> 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).

Ho capito finalmente come tu abbia cambiato posizione mano a mano che
ogni tua affermazione cadeva sotto la scure di una attenta e precisa
analisi basata su fonti attendibili.

Nei tuoi vari tentativi sei passato dall'affermare:

- Che e' possibile implementare l'ereditarieta' di implementazione in
VB6 (affermazione tuttora non comprovata).

- Che VB6 e' OOP secondo una definizione non moderna e che tale
definizione e' descritta in un libro pubblicato 10 anni prima del
rilascio di VB6 (una definizione non tanto moderna dopo tutto).

- Che VB6 puo' ritenersi OOP anche se non implementa l'ereditarieta' di
implementazione perche' SIMULA viene ritenuto OOP anche senza
implementare l'incapsulazione (in verita' implementata per il
costruttore). Supportare le proprie affermazioni mettendo a confronto
due linguaggi separati da oltre 30 anni dimostra un vera "open mind"
non c'e' che dire.

- Che VB6 e' come un vecchio motore disel rispetto a linguaggi
veramente OOP come SmallTalk (sviluppato 20 anni prima).

- Che VB6 non e' OOP, e' Object Based (e qui' c'e' l'inversione di
tendenza) secondo una definizione molto personale di Object Based.

> 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.

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".

TROLL

unread,
May 19, 2008, 3:55:14 PM5/19/08
to
>Non c'e' nessun forte dibattito.

Il dibattito esiste eccome.

http://www.visualbasicbooks.com/progVB6samplepg1.html

>Microsoft scrive che Visual Basic 6.0 non e' un vero linguaggio OOP ed
>e' anche per questo ha sviluppato Visual Basic .NET.

MS dice che VB6 è un OOP ma non un TRUE OOP secondo la definizione
moderna poichè l'ereditarietà viene specificata in modo diverso, vedi
infatti le considerazioni che riguardano OOP in VB6.

http://msdn.microsoft.com/en-us/library/aa239699.aspx

>Per cui sei daccordo che Visual Basic e' object-based a causa delle sue
>limitazioni e questo non lo qualifica per rientrare tra i linguaggi
>object-oriented.

Come già detto cioè fa parte della famiglia degli OO.

citando appunto Wiki:

>1. A somehow limited version of object-oriented programming where one
>or more of the following restrictions applies:

Traducendo: una in qualche modo limitata versione di OO dove una o più
delle seguenti restrizioni appaiono.

Cioè una limitata *VERSIONE DI OO* cioè una OO limitata cioè una OO con
dei limiti cioè una OO !

>Nei tuoi vari tentativi sei passato dall'affermare:
>- Che e' possibile implementare l'ereditarieta' di implementazione in
>VB6 (affermazione tuttora non comprovata).

Mai detto questo ho detto che è possibile determinare dei comportamenti
nell'ereditarietà di interfaccia anche scrivendo codice. Numerosi
tentativi di farti capire, continuando a urlare la stessa cosa !!

>- Che VB6 e' OOP secondo una definizione non moderna e che tale
>definizione e' descritta in un libro pubblicato 10 anni prima del
>rilascio di VB6 (una definizione non tanto moderna dopo tutto).

Vedi che non consideri molti aspetti ? La definizione di OO citata è
stata ripresa in tempi ultimi per considerare differenze tra diversi
tipi di OO. Non a caso per portare risposte al dibattito in corso.

>- Che VB6 puo' ritenersi OOP anche se non implementa l'ereditarieta' di
>implementazione perche' SIMULA viene ritenuto OOP anche senza
>implementare l'incapsulazione (in verita' implementata per il
>costruttore). Supportare le proprie affermazioni mettendo a confronto
>due linguaggi separati da oltre 30 anni dimostra un vera "open mind"
>non c'e' che dire.

Ma cosa c'entra ? Il mio tris nonno aveva una nonna e io ho una nonna.

>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".

E questo spiega che tu non hai capito un *CAZZO* di quello che dice
MS !!!

Filippo Toso - Creative Park

unread,
May 19, 2008, 3:22:11 PM5/19/08
to
TROLL ha scritto:

> > Non c'e' nessun forte dibattito.
>
> Il dibattito esiste eccome.
>
> http://www.visualbasicbooks.com/progVB6samplepg1.html

Una pagina del 1999. Il dibattito e' (tempo presente) veramente forte,


non c'e' che dire.

> MS dice che VB6 è un OOP ma non un TRUE OOP secondo la definizione
> moderna

Una definizione "moderna" presente in un libro pubblicato 10 anni prima
che Visual Basic 6.0 fosse rilasciato.

> poichè l'ereditarietà viene specificata in modo diverso, vedi
> infatti le considerazioni che riguardano OOP in VB6.
>
> http://msdn.microsoft.com/en-us/library/aa239699.aspx

Ed ecco un ulteriore esempio di incapacita' di comprensione delle
fonti. Cito la pagina da te indicata:

Inherit Base Functionality

Inheritance, a key principle of OOP, allows you to define an object's
base functionality, then use that functionality for specific subtypes
of the object.
[cut]
You can't do this one now, but it's in Microsoft VB.NET, so you will be
able to do it soon. For now, you might consider where inheritance makes
sense in your application to prepare for this feature.

Ossia l'ereditarieta' (di implementazione) e' un principio chiave
dell'OOP ma per il momento (con Visual Basic 6.0) non puoi utilizzarla.
Lo potrai utilizzare presto con VB.NET. Come dire, le tue stesse fonti
ti contraddicono.

Non e' che "l'ereditarietà viene specificata in modo diverso",
l'ereditarieta' per implementazione, ossia l'ereditarieta' necessaria
ad un linguaggio OOP (principio chiave) NON e' implementata in Visual
Basic 6 ne puo' essere implementata utilizzando altri metodi.

> > Per cui sei daccordo che Visual Basic e' object-based a causa delle
> > sue limitazioni e questo non lo qualifica per rientrare tra i
> > linguaggi object-oriented.
>
> Come già detto cioè fa parte della famiglia degli OO.

VB supports both objects and classes, but not inheritance, so it does
not qualify as object-oriented.

> citando appunto Wiki:


>
> > 1. A somehow limited version of object-oriented programming where
> > one or more of the following restrictions applies:
>
> Traducendo: una in qualche modo limitata versione di OO dove una o
> più delle seguenti restrizioni appaiono.
>
> Cioè una limitata *VERSIONE DI OO* cioè una OO limitata cioè una OO
> con dei limiti cioè una OO !

Si, certo, non fa una piega (o forse si?).

Seguendo il tuo ragionamento, ecco una bella ricorsione:

- Un linguaggio OOP con Inheritance, Encapsulation, Polymorphism.

- Togliamo l'ereditarieta'. E' una versione di linguaggio OO limitata,


cioè una OO con dei limiti cioè una OO!

- Togliamo l'incapsulazione. Ora abbiamo una versione di linguaggio OO
ancora piu' limitata, pur sempre una versione di linguaggio OO, cioè


una OO con dei limiti cioè una OO!

- Togliamo il polimorfismo. Ora abbiamo una versione di linguaggio OO
estremamente limitata, pur sempre una versione di linguaggio OO, cioè


una OO con dei limiti cioè una OO!

Come dice Microsoft, l'ereditarieta' (di implementazione) e' un
principio chiave dell'OOP, e' assente in Visual Basic 6.0 e per questo


"Visual Basic is not properly object oriented".

Se esistono dei principi chiave che definiscono l'apparteneza di una
entita' ad un insieme, la rimozione di uno di questi principi non puo'
far altro che estraniare tale entita' dall'insieme a cui apparteneva
(per mancanza dei requisiti).

> Mai detto questo ho detto che è possibile determinare dei
> comportamenti nell'ereditarietà di interfaccia anche scrivendo
> codice.

Eh? Pensavi di poter utilizzare l'ereditarieta' di interfacce senza
scrivere codice?

> Numerosi tentativi di farti capire, continuando a urlare la
> stessa cosa !!

Intendi dire per farmi capire che in Visual Basic 6.0 non e' possibile
implementare l'ereditarieta' di implementazione come descritto in modo
cosi' esaustivo da Microsoft nella pagina che hai gentilmente indicato?

> Vedi che non consideri molti aspetti ?

Potresti citarne molti?

> La definizione di OO citata è stata ripresa in tempi ultimi per
> considerare differenze tra diversi tipi di OO.

Parli di quella data da Bertrand Meyer's nel 1988 nel suo libro
Object-Oriented Software Construction?

> > - Che VB6 puo' ritenersi OOP anche se non implementa
> > l'ereditarieta' di implementazione perche' SIMULA viene ritenuto
> > OOP anche senza implementare l'incapsulazione (in verita'
> > implementata per il costruttore). Supportare le proprie
> > affermazioni mettendo a confronto due linguaggi separati da oltre
> > 30 anni dimostra un vera "open mind" non c'e' che dire.
>
> Ma cosa c'entra ? Il mio tris nonno aveva una nonna e io ho una nonna.

Non sono io ad aver scritto:

> E' noto che il Simula h il primo linguaggio ad oggetti
> eppure manca in esso l'incapsulamento !
> Quindi sulla base della vostra definizione il Simula non sarebbe un
> linguaggio OO...

Rimando ai precedenti post in cui ho espresso chiaramente i problemi
della tua argomentazione SIMULA/Visual Basic.

> > 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".
>

> E questo spiega che tu non hai capito un CAZZO di quello che dice
> 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.

Jax

unread,
May 19, 2008, 4:02:26 PM5/19/08
to
Filippo Toso - Creative Park ha scritto:
> 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.

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

TROLLINO

unread,
May 19, 2008, 5:59:11 PM5/19/08
to

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

TROLLINO

unread,
May 19, 2008, 6:01:54 PM5/19/08
to
>> E questo spiega che tu non hai capito un CAZZO di quello che dice
>> 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.

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

TROLLINO

unread,
May 19, 2008, 6:56:58 PM5/19/08
to
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!

0 new messages