Cosa sono gli oggetti in informatica?

Gli oggetti sono concetti astratti che rendono la programmazione molto più semplice.
Rappresentano sempre qualche "cosa": una macchina, una persona, una struttura dati, ecc. Ogni "cosa" ha le sue proprietà e le sue azioni. Se prendiamo un'auto come esempio, allora le sue proprietà potrebbero essere il colore, il modello, la dimensione e la velocità. Le sue azioni possono essere guidare, girare e suonare la radio. In informatica, le proprietà sono chiamate "attributi" di un oggetto, e le sue azioni sono chiamate "metodi".
Se avete qualche esperienza di programmazione, potreste essere confusi sul perché abbiamo bisogno di oggetti. Dopo tutto, gli esercizi di programmazione che avete fatto non usano oggetti, e siete comunque in grado di scrivere grandi programmi.
Normalmente, pensiamo ad un programma come ad un computer che esegue una sequenza di comandi, manipolando variabili fino ad ottenere i valori e gli output desiderati. Tuttavia, si scopre che quando scriviamo programmi che cercano di risolvere problemi del mondo reale, può essere molto più facile pensare ad un problema di programmazione in termini di "cose" che interagiscono tra loro -- dopo tutto, questo è ciò che accade nel mondo reale.

Per esempio, diciamo che qualcuno vi chiede di scrivere un programma per un cassiere robot. Questo robot fa due cose: scansiona gli articoli e prende i soldi. Similarly, the customer does two things: places items on the counter, and gives money.
I don't know what objects are, so I write a program that looks something like this:

  1. int total = 0; 
  2. for (i = 0; i< items.length; i++) { 
  3. total += items[i].price; 
  4. int customerMoney = 100; 
  5. int cashierMoney = 0; 
  6. customerMoney -= total; 
  7. cashierMoney += total; 

Good, but what if we created a variable that represents the cashier, and a variable that represents the customer?

  1. Customer john = new Customer(); 
  2. Cashier robo = new Cashier(); 
  3. robo.scanItems(); 
  4. john.giveMoney(); 
  5. robo.takeMoney(); 

Objects allow our code to be focused on things, rather than operations! We're still performing the same operations, but object-oriented programming makes code easier to write, read and understand.