Newsgroup: it.scienza.informatica
Titolo: orientato/basato sugli oggetti

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

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

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

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 

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

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

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

 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

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

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
[}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{}-{]