Newsgroup: it.comp.lang.c++
Titolo: esiste Object (dal Java) in C++ ?

Sono passato al C++ avendo gią un po' di esperienza di
programmazione con Java. Mi ero abituato ad usare il tipo Object
per astrarre i dati quando implementavo liste,alberi,grafi ...
Esiste qualcosa di analogo in C++ ?
Lo stesso vale per le comode interfacce presenti nelle distribuzioni
della jvm (per esempio Comparable ...)
P.S. se la risposta č si, dove trovo documentazione a riguardo?
-- 
Grazie in anticipo per le eventuali risposte. :)

Esiste qualcosa di analogo in C++ ?
no, non esiste un tipo di base per il C++, pero' puoi usare in
compenso un puntatore void *
antonio

Sono passato al C++ avendo gią un po' di esperienza di


 della jvm (per esempio Comparable ...)
Anche questa e' una "stampella" che Java fornisce per compensare almeno
in parte l'assenza dei template. In C++ qualunque tipo sul quale sono
definiti gli opportuni operatori e' implicitamente "Comparable".
Non te la prendere, ma mi pare che il tuo messaggio sia un indizio di
come Java sia un *pessimo* linguaggio per imparare a programmare, in
quanto porta a dare per scontate e universali alcune sue peculiarita'.
Ciao,
Nicola

derivanti da una singola super-classe.
Non mi è chiara questa tua frase, perché non ha senso? Anche Python
supporta l'ereditarietà multipla eppure è stato introdotto object e,
nelle prossime versioni, tutte le classi saranno derivate da object.
-- 
Marco Barisione (ICQ 84277092)


Una classe base universale Object puo' servire due scopi: come strumento
di generalizzazione, ovvero la possibilita' di trattare almeno ad un
certo livello tutti gli oggetti come uniformi, e come "aggancio" per
funzionalita' che devono essere disponibili per tutte le classi.
Nel caso di un linguaggio tipizzato staticamente l'approccio alla
programmazione generica basato sull'ereditarieta' e' decisamente
inferiore di quello basato sui template. In piu' l'introduzione di
funzionalita' disponibili per tutte le classi contravviene uno dei
principi fondamentali del C++: non paghi cio' che non usi.
La presenza dell'ereditarieta' multipla poi complica ulteriormente le
cose: la classe Object e' ereditata in modo normale o virtuale? A
seconda delle funzionalita' che le sono collegate puo' essere
preferibile l'una o l'altra scelta.
Ciao,
Nicola

 Esiste qualcosa di analogo in C++ ?
Esiste una cosa in C++, in Java e in tutti gli altri
linguaggi, italiano compreso:
si chiama 
"leggere le risposte prima di rifare la stessa domanda"
-- 
Gerolamo

Credo che il java sia un ottimo linguaggio per imparare a programmare
a oggetti.
E non lo credo solo io visto che attualmente in molte università i
corsi di fondamenti di informatica sono svolti utilizzando il java.
E con ottimi risultati (almeno per quanto riguarda la mia esperienza
di studente di ingegneria informatica).
Ti permette di comprendere bene i *concetti* dell'oop senza le
complicazioni del C++.
Una volta imparate le basi, si può poi andare avanti con linguaggi +
complessi e senza sentirsi "spaesati" ma solo aprendo gli occhi su
nuove problematiche.
Ereditarietà multipla, aritmetica dei puntatori, funzioni friend,
overloading degli operatori ecc.... sono funzionalità importantissime
e potenti, ma a chi deve imparare i concetti *base* dell'oop, beh,
servono ben poco.
I *concetti* appresi col java servono in qualsiasi altro linguaggio
orientato agli oggetti. 
E penso proprio che prima di imparare un linguaggio sia meglio capire
i concetti universali e *poi* continuare.
E questo vale sia per chi inizia col java che col C++.
Non vorrei che uno si gasasse perchè "gira" per la memoria con un
puntatore++ e poi non avesse capito polimorfismo, incapsulazione ed
ereditarietà! :-)
Tutto questo lungo discorso solo per dire che si, java nasconde un
mucchio di cose, ma dire che un linguaggio universalmente noto per le
sue "doti" educative sia pessimo per imparare....beh, secondo me è un
po troppo! :-)
saluti

complicazioni del C++.
Sì ma anche con troppe limitazioni e altre complicazioni (ad esempio
l'eccessivo uso di cast).


 nelle prossime versioni, tutte le classi saranno derivate da object.
beh, in python il discorso e` ben diverso che non in C++: se escludiamo 
il discorso delle new-style classes una classe base in python non e` 
altro che un elemento di una lista e in pratica l'unica cosa 
"interessante" di una classe base e` il suo namespace, che viene 
implicitamente usato quando non troviamo un attributo nella classe 
derivata.
In C++ il discorso e` ben diverso: la presenza o meno di una classe base 
modifica in modo sostanziale due cose:
1) il layout in memoria degli oggetti
2) la semantica di alcune operazioni
Come gia` faceva notare Nicola l'ipotetica ereditarieta` da Object 
dovrebbe essere virtuale o normale?
Senza contare poi un altro aspetto, forse ancora piu` importante del 
primo: in Java Object esiste soprattutto per fornire una interfaccia 
comune a tutti gli oggetti: ovviamente in python un discorso del genere 
ha ben poco senso (e infatti object non espone alcun metodo se non 
quelli che lavorano a stretto contatto con l'interprete) come del resto 
in C++ che risolve questo problema con i template.
ciao Anto
-- 
"Computer science is not about computers any more than astronomy
is about telescopes." -- EW Dijkstra

 po troppo! :-)
Universalmente noto per le sue doti educative? Stai parlando di Scheme?
Ciao,
Nicola