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

orientato/basato sugli oggetti

255 views
Skip to first unread message

sergio

unread,
Dec 18, 2001, 3:05:46 PM12/18/01
to
Che differenza c'è tra programmazione orientata agli oggetti e basata sugli
oggetti? Grazie, Andrea

Yuri il privilegiato

unread,
Dec 19, 2001, 10:51:45 AM12/19/01
to
Salve

cito:"Che differenza c'è tra programmazione orientata agli oggetti e basata sugli
oggetti? Grazie, Andrea"

che io sappia nessuna, la prima dizione e' la traduziione di Object
Oriented Programming, la seconda mi pare piu' "indigena" ma la semantica
mi pare identica ( e pure la pragmatica).
Cheers
Yuri

WEbdOM

unread,
Dec 19, 2001, 6:00:28 PM12/19/01
to
In data Wed, 19 Dec 2001 15:51:45 +0000 (UTC),
ro...@alphalinguistica.sns.it (Yuri il privilegiato) ha
sentenziato:


>
>che io sappia nessuna, la prima dizione e' la traduziione di Object
>Oriented Programming, la seconda mi pare piu' "indigena" ma la semantica
>mi pare identica ( e pure la pragmatica).

Scusami Yuri, ma c'e' un'enorme differenza:)
C è un linguaggio basato agli oggetti. C++ è orientato agli
oggetti.
In pratica, un linguaggio OO implementa l'information
hiding, il polimorfismo e l'ereditarietà, mentre un
linguaggio basato agli oggetti riesce a manipolare oggetti
(appunto) come le struct di C, ma non le puoi incapsulare e
non godono delle proprietà di cui sopra.
Nei linguaggi OO, l'information hiding e l'ereditarietà si
implementano con le classi (in Java e C++, ma forse ci sono
altri tipi di implementazione in altri linguaggi OO), mentre
il polimorfismo con l'overloading dei metodi (e
l'overriding).
come al solito, bastonatemi se ho detto baggianate!:)
Saluti.
--
WEbdOM webmaster di
Metronic.It mobile phone philosophy
www.gadgetpoint.it serigrafia on line

Yuri il privilegiato

unread,
Dec 20, 2001, 2:49:12 AM12/20/01
to
salve
cito:"C è un linguaggio basato agli oggetti. C++ è orientato agli

oggetti.
In pratica, un linguaggio OO implementa l'information
hiding, il polimorfismo e l'ereditarietà, mentre un
linguaggio basato agli oggetti riesce a manipolare oggetti
(appunto) come le struct di C, ma non le puoi incapsulare e
non godono delle proprietà di cui sopra.
Nei linguaggi OO, l'information hiding e l'ereditarietà si
implementano con le classi (in Java e C++, ma forse ci sono
altri tipi di implementazione in altri linguaggi OO), mentre
il polimorfismo con l'overloading dei metodi (e
l'overriding).
come al solito, bastonatemi se ho detto baggianate!:)"


Le struct NON sono oggetti proprio perche' NON godono delle
caratteristiche degli oggetti. Le struct sono un tipo e la
differenza fra tipi ed oggetti e' la base di tutto...
(a parte che il topic era basato SUGLI oggetti vs. orientato agli
oggetti). Il C E' un linguaggio neanche fortemente tipizzato e
l'esistenza di legami fra C e C++ discende da ragioni "politiche"
piu' che informatiche.
Cheers
Yuri

Giorgio Vecchiocattivi

unread,
Dec 20, 2001, 5:27:32 AM12/20/01
to
WEbdOM wrote:

> In data Wed, 19 Dec 2001 15:51:45 +0000 (UTC),
> ro...@alphalinguistica.sns.it (Yuri il privilegiato) ha
> sentenziato:

>>che io sappia nessuna, la prima dizione e' la traduziione di Object
>>Oriented Programming, la seconda mi pare piu' "indigena" ma la semantica
>>mi pare identica ( e pure la pragmatica).
>>
> Scusami Yuri, ma c'e' un'enorme differenza:)
> C è un linguaggio basato agli oggetti. C++ è orientato agli
> oggetti.

Il C e` "basato agli (su gli) oggetti"?????
Nel senso che produce i file .o ? giusto quello.
Quando hanno scritto il C di oggetti non se ne parlava
minimamente.

Riprendo la definizione di Yuri. Le due definizioni
'definiscono' la stessa cosa. "Basato" e` soltanto
un po` impreciso.

> In pratica, un linguaggio OO implementa l'information
> hiding, il polimorfismo e l'ereditarietà, mentre un
> linguaggio basato agli oggetti riesce a manipolare oggetti
> (appunto) come le struct di C, ma non le puoi incapsulare e
> non godono delle proprietà di cui sopra.


Le struct non sono oggetti. Sono struct o "record" o in italiano
"ennuple" o "registrazioni". Non ci sono i metodi per esempio.

Allora anche il pascal e` un linguaggio basato sugli oggetti
(ovviamente il pascal standard tipo turbo pascal 1.0 o stanford pascal)
ci sono i record.
In questa definizione praticamente ci rientrano quasi tutti i linguaggi
(il basic e il fortran in effetti no).

Che poi *tutte* le funzionalita` OO si possano implementare
(non troppo agevolmente) anche in C e` un'altro discorso. Ossia
esiste un C++ -> C translator, ma questo non fa del C un linguaggio
OO.

Cmq. I termini vanno e vengono, non mi stupirei che effetivamente
ci fosse scritto su qualche libro o te lo avesse detto qualche professore.
(C'e'?)


> Nei linguaggi OO, l'information hiding e l'ereditarietà si
> implementano con le classi (in Java e C++, ma forse ci sono
> altri tipi di implementazione in altri linguaggi OO), mentre
> il polimorfismo con l'overloading dei metodi (e
> l'overriding).
> come al solito, bastonatemi se ho detto baggianate!:)

No, niente bastoni al massimo un buffetto.

> Saluti.
>

WEbdOM

unread,
Dec 20, 2001, 9:16:30 AM12/20/01
to
In data Thu, 20 Dec 2001 11:27:32 +0100, Giorgio
Vecchiocattivi <vecc...@imc.pi.cnr.it> ha sentenziato:


>
>Allora anche il pascal e` un linguaggio basato sugli oggetti
>(ovviamente il pascal standard tipo turbo pascal 1.0 o stanford pascal)
>ci sono i record.
>In questa definizione praticamente ci rientrano quasi tutti i linguaggi
>(il basic e il fortran in effetti no).

Appunto, io sapevo cosě:)


>
>Cmq. I termini vanno e vengono, non mi stupirei che effetivamente
>ci fosse scritto su qualche libro o te lo avesse detto qualche professore.
>(C'e'?)

Effettivamente, so di averlo letto da qualche parte quando
iniziai a studiare l'OOA/OOP (e se non ricordo male, il mio
prof di Informatica2 parlň di qlc al riguardo). Se mi
permettete, faccio una consultatina dei manuali, qualche
ricerca in rete e non, e vi faccio sapere.


>
>
>No, niente bastoni al massimo un buffetto.

Beh, quelli sono sempre ben accetti quando si viene
corretti:))

Giorgio Vecchiocattivi

unread,
Dec 20, 2001, 12:16:20 PM12/20/01
to
WEbdOM wrote:

> In data Thu, 20 Dec 2001 11:27:32 +0100, Giorgio
> Vecchiocattivi <vecc...@imc.pi.cnr.it> ha sentenziato:
>
>
>
>>Allora anche il pascal e` un linguaggio basato sugli oggetti
>>(ovviamente il pascal standard tipo turbo pascal 1.0 o stanford pascal)
>>ci sono i record.
>>In questa definizione praticamente ci rientrano quasi tutti i linguaggi
>>(il basic e il fortran in effetti no).
>>
> Appunto, io sapevo cosě:)
>
>>Cmq. I termini vanno e vengono, non mi stupirei che effetivamente
>>ci fosse scritto su qualche libro o te lo avesse detto qualche professore.
>>(C'e'?)
>>
> Effettivamente, so di averlo letto da qualche parte quando
> iniziai a studiare l'OOA/OOP (e se non ricordo male, il mio
> prof di Informatica2 parlň di qlc al riguardo). Se mi
> permettete, faccio una consultatina dei manuali, qualche
> ricerca in rete e non, e vi faccio sapere.


Uhm... rilegendo dele slide del buon Cardelli (pace all'anima sua
che adesso sta alla Microsoft pare )

Object-Based e` usato per differenziarsi da Class-Based
Entrambi i tipi di linguaggi sono Object-Oriented.

Se vi interessa i lavori di Cardelli si possono trovare a
http://www.luca.demon.co.uk/

La differenza cmq non e` quella che hai detto tu ma molto piu` sottile.
Ora devo dirti che di semantica dei linguaggi a oggetti ne ho fatta
molto poca (diciamo nulla), so le basi, solite cose polimorfismo ereditarieta`
ecc.... ma della tassonomia diciamo nulla :-)

Vediamo: credo che la differenza sia tutto sommato
quella tra la creazione degli oggetti dai prototipi (in object-based)
e quella della creazione dalle Classi (in class-based)

Solo che i Prototipi sono anch'essi Oggetti... (quindi non
c'entrano nulla i prototipi del C++)

Quindi direi che il Java, C++ e Modula sono Class-Based.

Dell'altro dipo mi pare che si cita il linguaggio 'Self' che

(a parte non averlo mai sentito prima :-) ) direi non ha
avuto molta diffusione...

cmq. il link e` questo
http://research.microsoft.com/Users/luca/Slides/PLDI96Tutorial.A4.pdf

Non prendo niente per oro colato, questa e` l'idea di Cardelli (che essendo
Pisano di origine ha la mia simpatia !) ...

Sono molto interessato a altre opinioni (in generale su queste cose
ognuno dice la sua :-) )


>>No, niente bastoni al massimo un buffetto.
>>
> Beh, quelli sono sempre ben accetti quando si viene
> corretti:))

Mi tocca un buffetto anche a me per aver detto che erano la
stessa cosa :-)

Giorgio

WEbdOM

unread,
Dec 20, 2001, 5:25:15 PM12/20/01
to
In data Thu, 20 Dec 2001 18:16:20 +0100, Giorgio
Vecchiocattivi <vecc...@imc.pi.cnr.it> ha sentenziato:


>La differenza cmq non e` quella che hai detto tu ma molto piu` sottile.
>

>Vediamo: credo che la differenza sia tutto sommato
>quella tra la creazione degli oggetti dai prototipi (in object-based)
>e quella della creazione dalle Classi (in class-based)
>
>Solo che i Prototipi sono anch'essi Oggetti... (quindi non
>c'entrano nulla i prototipi del C++)
>
>Quindi direi che il Java, C++ e Modula sono Class-Based.
>
>Dell'altro dipo mi pare che si cita il linguaggio 'Self' che
>
>(a parte non averlo mai sentito prima :-) ) direi non ha
>avuto molta diffusione...

Wegner [151, 152, 153] classify object based programming
languages into three categories: object based languages,
class based languages, and object oriented languages.

Qua si dice ancora un'altra cosa. Cioè i linguaggi orientati
agli oggetti sono particolari linguaggi basati agli oggetti.
Poi ci sono i linguaggi basati agli oggetti (ancora) e
quelli basati sulle classi.

Inoltre, all'url
http://developer.netscape.com/docs/manuals/js/core/jsguide15/obj2.html#1008342

Class-based object-oriented languages, such as Java and C++,
are founded on the concept of two distinct entities: classes
and instances.

A class defines all of the properties (considering methods
and fields in Java, or members in C++, to be properties)
that characterize a certain set of objects. A class is an
abstract thing, rather than any particular member of the set
of objects it describes. For example, the Employee class
could represent the set of all employees.

An instance, on the other hand, is the instantiation of a
class; that is, one of its members. For example, Victoria
could be an instance of the Employee class, representing a
particular individual as an employee. An instance has
exactly the properties of its parent class (no more, no
less).

A prototype-based language, such as JavaScript, does not
make this distinction: it simply has objects. A
prototype-based language has the notion of a prototypical
object, an object used as a template from which to get the
initial properties for a new object. Any object can specify
its own properties, either when you create it or at run
time. In addition, any object can be associated as the
prototype for another object, allowing the second object to
share the first object's properties.

Più avanti nella pagina, c'e' una tabella che riassume le
principali differenze fra linguaggi basati agli oggetti e
linguaggi basati sulle classi (non è compatibile con la
definizione data più sopra).

Beh....rifletto un momento, anzi ci penso domani. Sto
impazzendo per finire un lavoro in questi giorni e a
quest'ora non ho più voglia di pensare:P (specie se domani
mi devo svegliare alle 7 per andare all'uni!! ).

Saluti!

WEbdOM

unread,
Dec 20, 2001, 5:28:29 PM12/20/01
to
In data Thu, 20 Dec 2001 18:16:20 +0100, Giorgio
Vecchiocattivi <vecc...@imc.pi.cnr.it> ha sentenziato:

Un'ultima cosa ora che ci penso. La definizione di Wagner e
quella data dagli sviluppatori della netscape non è
contraddittoria. Infatti si fa la differenza fra Java
(linguaggio basato agli oggetti ma class based) e Javascript
(linguaggio basato agli oggetti ma Prototype based) .

Riprende un poco quello che hai scritto tu nel post ma non è
la stessa cosa.

Bah, come mai ero convinto che il C fosse object
based!?!?hehehehe

Giorgio Vecchiocattivi

unread,
Dec 21, 2001, 9:22:32 AM12/21/01
to
WEbdOM wrote:

> In data Thu, 20 Dec 2001 18:16:20 +0100, Giorgio
> Vecchiocattivi <vecc...@imc.pi.cnr.it> ha sentenziato:
>
> Un'ultima cosa ora che ci penso. La definizione di Wagner e
> quella data dagli sviluppatori della netscape non è
> contraddittoria. Infatti si fa la differenza fra Java
> (linguaggio basato agli oggetti ma class based) e Javascript
> (linguaggio basato agli oggetti ma Prototype based) .
>
> Riprende un poco quello che hai scritto tu nel post ma non è
> la stessa cosa.
>
> Bah, come mai ero convinto che il C fosse object
> based!?!?hehehehe
>

Ovviamente... Facendo una permutazione delle
definizioni la solfa non cambia...
e` normale.

Inoltre, Cardelli lavora alla microsoft
quell'altra e' la definzione usata dalla netscape
Come puo` essere che siano compatibili???

Vabbe` ... cmq ho imparato una cosa in piu`...

Ciao
Giorgio

Giuseppe Guarnieri

unread,
Dec 21, 2001, 10:17:42 AM12/21/01
to
In article <ukNT7.330672$sq5.16...@news.infostrada.it>, sergio wrote:
>Che differenza c'č tra programmazione orientata agli oggetti e basata sugli
>oggetti? Grazie, Andrea

Non sono sicurissimo, ma dovrebbe essere
la differenza, ad esempio, tra JAVA e
JavaScript...

La programmazione orientata agli oggetti pone
la sua attenzione sui dati, contrariamente alla
programmazione procedurale che si focalizza sulle
procedure che risolvono il problema.

A grandi linee, i dati sono visti come oggetti,
dotati ciascuno delle proprie caratteristiche
peculiari, dette attributi, e di operazioni
possibili, detti metodi.

Pensiamo all'oggetto "persona": ogni persona
avra' i suoi attributi (colore_degli_occhi,
altezza...) e potrŕ fare delle cose (metodo
"parla", metodo "presentati", metodo "mangia")

Gli oggetti comunicano e collaborano tra loro
scambiandosi messaggi. Un programma e' quindi
descritto non da un diagramma di flusso che
mostra come le varie funzionalita' si richiamino
vicendevolmente, ma da una collezione di oggetti
che collaborano.

La programmazione Object-Oriented *deve* inoltre
supportare alcuni paradigmi, tra i quali
l'incapsulamento, l'ereditarieta' ed il
polimorfismo.

La programmazione Object-Based, invece, non aderisce
pienamente a questo modello, non supportando alcuni
dei paradigmi precedenti (ad esempio l'ereditarieta',
come in Visual Basic 6) o comunque variando in qualche
modo.

;-)

SunGray

unread,
Dec 20, 2001, 1:17:44 PM12/20/01
to
In data : Tue, 18 Dec 2001 20:05:46 GMT
Il viaggiatore : "sergio" <andrew_...@itol.it>
Nello spazio di pensiero chiamato : it.scienza.informatica
Ha scritto questo messaggio :

>Che differenza c'è tra programmazione orientata agli oggetti e basata sugli
>oggetti? Grazie, Andrea

La definizione formale e' stata data da Peter Wegner :

Object-Based = Deve essere supportata dal linguaggio la nozione di
oggetto, come un'entita' capace di incapsulare i dati e rispondere ad
eventi, qundi history sensitive. Deve poter fornire un'interfaccia
verso il mondo esterno, la quale identifica quale sia il suo
comportamento. (Visual basic 6 e' Object-Based)

Object-Oriented : Un linguaggio Object-Based, con in piu'
ereditarieta', polimorfismo ecc...

Per la trattazione completa vedere di Wegner "The Object-Oriented
Classification "

[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]
SunGray aka Gabriele Lana
www.sungray.com

contact me @ : sun...@tiscalinet.it
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]

0 new messages