Nel tuo piccolo esempio non fa differenza tra il primo e il secondo esempio. O va bene.
La differenza diventa importante con esempi del mondo reale, come quando vuoi avere più istanze di una classe. Ad esempio, considera un gioco. Se sei un gioco per giocatore singolo, il tuo primo esempio va bene. Crea la classe e fai riferimento ai valori direttamente nella classe.
Tuttavia, che cosa fai quando hai una partita multiplayer e variable1
rappresenta il punteggio del giocatore? Puoi creare una classe Player1
e una classe Player2
e il tuo primo esempio continua a funzionare. Ora cosa fai se oltre al punteggio hai 100 altri attributi? Hai due classi identiche che sono definite esattamente uguali? Cosa succede se vuoi supportare 100 giocatori? O 1000? Crei 1000 classi identiche, che differiscono solo dal nome della classe?
Questo è il motivo per cui le classi sono così potenti: si definisce la classe esattamente una volta, e quindi è possibile creare tutte le istanze di quella classe che si desidera. Sia che tu abbia un giocatore o 1000, devi solo definire la classe giocatore una volta, eppure ogni classe ha i propri dati 1
Quindi, per semplici esempi, perché passare alla difficoltà di creare istanze? Il motivo è che costruisce buone abitudini. Se prendi l'abitudine di creare classi e istanziarle, quando arriva il momento di fare un'applicazione più complessa non dovrai cambiare il tuo modo di lavorare.
Bottom line: per qualsiasi definizione non banale di un oggetto, il tuo codice sarà molto più facile da mantenere se hai una singola classe con più istanze.
1 se utilizziamo letteralmente il tuo codice di esempio, ogni giocatore condividerà lo stesso punteggio. Tuttavia, se crei classi con attributi di istanza piuttosto che attributi di classe, ogni giocatore otterrà il proprio punteggio.