Ciao, posso provare a darti una risposta relativamente alle domande "cos'è una classe e cos'è un oggetto", domande che mi sono posto anche io la prima volta che sono entrato in contatto con Java.
La programmazione OOP, e quindi anche Java, nasce dall'osservazione del mondo reale: tutti noi siamo circondati da oggetti, ognuno dei quali ha delle proprietà e delle capacità.
I concetti di base del mondo OOP, almeno all'inizio, sono quelli di
classe e
oggetto(altrimenti detto
istanza). Le definizioni di questi 2 concetti sono strettamente legate: una classe fattorizza tutte le caratteristiche che un insieme di oggetti possiede intrinsecamente, mentre un oggetto è un'istanza di tale classe.
Puoi pensare alle classi come a dei concetti "astratti" (non so se hai studiato Platone, ma le classi assomigliano a ciò che Platone definisce "idee"). Gli oggetti, invece, sono delle istanze fisiche con le quali puoi interagire.
Per fare un esempio con il mondo reale puoi pensare alle automobili: tutte le automobili possiedono determinate caratteristiche, come ad esempio la marca (una stringa), il modello (un'altra stringa), la cilindrata (un numero intero, se rappresentato in centrimetri cubi), il numero di porte (un altro intero), ecc..
In java questo si traduce nel seguente codice:
public class Automobile {
String marca;
String modello;
int cilindrata;
int numeroPorte;
//Il seguente pezzo di codice è un costruttore: definisce come fare per creare 1 oggetto
public Automobile(String m1, String m2, int c, int p) {
marca = m1;
modello = m2;
cilindrata = c;
numeroPorte = p;
}
}
Nel mondo reale ciò che puoi incontrare è un'istanza di automobile, ovvero un oggetto: ad esempio potrai trovare una "fiat punto", una "alfa romeo giulietta", una "wolksvagen golf" e così via. In java ognuna di queste "entità" è detta oggetto, e viene creata a partire dalla relativa classe.
Ad esempio:
Automobile fiatPunto = new Automobile("Fiat", "Punto", 1600, 5);
In sostanza tutti i programmi funzionano facendo interagire fra loro gli oggetti, mentre le classi fungono da "stampino" per creare gli oggetti.