Oppure

Loading
21/04/16 5:35
Mattia99
Ciao a tutti, ho da poco iniziato a studiare Java e adesso sto cominciando a vedere come funzionano le classe e gli oggetti.
Ho visto che le classi in java si comportano un po come le struct in c..(anche perche ai vari campi delle classi si accede con il punto, proprio come con le struct)
È un giusto paragone quello che faccio o sono due cose completamente diverse?
aaa
21/04/16 6:16
TheDarkJuster
Le classi in Java sono una implementazione del paradigma oop, il corrispondente delle classi un c++.

Non è corretto accostare le classi del java alle struct del c perché le struct non hanno l'ereditarietà, principio fondante del costrutto classe inteso come costrutto della oop.

Inoltre java ha le strutture e se vuoi puoi dire che le strutture del c corrispondono a quelle di java.
aaa
21/04/16 6:51
"anche perche ai vari campi delle classi si accede con il punto, proprio come con le struct"

Questo fatto è irrilevante, soltanto una questione sintattica ... i due linguaggi non possono essere paragonati.

Fai un paragone tra Java e C++ se proprio vuoi ...
21/04/16 7:04
Template
Aggiungo un altro dettaglio: lo standard C non definisce le keywords "private" e "public", fondamentali per definire l'accessibilità ai membri ed ai metodi per le classi; da ciò, puoi facilmente dedurre che le struct in C non prevedano nativamente simili controlli sul loro contenuto.

Inoltre, già che ci siamo: le struct non possono contenere metodi, le classi si.


Comunque, al di là di queste due differenze e delle altre che ti hanno fatto notare, condivido quanto scritto da Nessuno:

Postato originariamente da nessuno:
i due linguaggi non possono essere paragonati.

Fai un paragone tra Java e C++ se proprio vuoi ...


E ti raccomando, prima di iniziare con Java e l'OOP, di studiare a dovere il C, che male non può farti ;)
Ultima modifica effettuata da Template 21/04/16 7:04
aaa
21/04/16 12:54
HeDo
Postato originariamente da Template:

Inoltre, già che ci siamo: le struct non possono contenere metodi, le classi si.


Giusto per fare il bastian contrario

stackoverflow.com/questions/17052443/…
aaa
21/04/16 12:59
Template
Postato originariamente da HeDo:
Giusto per fare il bastian contrario

stackoverflow.com/questions/17052443/…


Ma in effetti, quello lì dentro è un puntatore, non una funzione :rotfl:
aaa
21/04/16 16:10
lumo
Il motivo della somiglianza tra strutture del C e classi del Java è che James Gosling creò Java basandosi su C++.
C++ a sua volta era una rivisitazione del C in chiave OOP (oggi è un mostro multitesta).
Come ti dicono gli altri la somiglianza si ferma al fatto di avere i fields, dopodiché l'approcio al problem solving con gli oggetti è diverso.

Tuttavia secondo me il paragone non è così satanico, volendola vedere in un certo modo la programmazione ad oggetti è una delle tante estensioni ovvie del paradigma procedurale e strutturato: una volta che si hanno funzioni che accettano sempre un puntatore ad una struttura dati fissa viene l'idea di creare i metodi, l'ereditarietà serve a evitare di duplicare, l'incapsulazione per forzare visibilita.

Poi ci sarebbe il discorso che "Smalltalk aveva un'idea diversa di OO blabla" ma non mi ci addentro.
aaa