Oggetto vs Istanza
La programmazione orientata agli oggetti (OOP) è uno dei paradigmi di programmazione più popolari. In OOP, l'obiettivo è pensare al problema da risolvere in termini di elementi del mondo reale e rappresentare il problema in termini di oggetti e del loro comportamento. Molti linguaggi di programmazione che supportano aspetti chiave di OOP (chiamati linguaggi OOP) hanno la classe come strumento di programmazione principale. Sono chiamati basati sulla classe. Le classi sono una rappresentazione astratta di oggetti del mondo reale. Le classi hanno proprietà chiamate attributi. Gli attributi sono implementati come variabili globali e di istanza. I metodi nelle classi rappresentano o definiscono il comportamento di queste classi. I metodi e gli attributi delle classi sono chiamati membri della classe. In termini molto semplici, una classe è un progetto o un modello per uno specifico oggetto della vita reale. Quindi, un oggetto è il blocco di memoria utilizzato per memorizzare le informazioni necessarie secondo questo progetto. L'istanza è un blocco di memoria che fa riferimento a un oggetto.
Cos'è un oggetto?
Gli oggetti sono i risultati dell'istanziazione di una classe. L'istanziazione è il processo di prendere il progetto e definire ogni attributo e comportamento in modo che l'oggetto risultante rappresenti effettivamente un oggetto della vita reale. L'oggetto è un blocco di memoria dedicato e continuo allocato per memorizzare informazioni come variabili, metodi o funzioni, ecc. L'oggetto viene creato con l'uso di new operator, nel linguaggio di programmazione Java. Ad esempio, se esiste una classe chiamata Car, è possibile utilizzare quanto segue per creare un oggetto della classe Car.
auto nuova();
Qui, un oggetto Car viene creato dal nuovo operatore e viene restituito un riferimento all'oggetto. L'operatore new insieme al costruttore della classe Car viene utilizzato per creare il nuovo oggetto. La durata dell'oggetto inizia dalla chiamata al suo costruttore fino al momento in cui viene distrutto. Una volta che un oggetto non viene segnalato, verrà rimosso/distrutto dal Garbage Collector.
Cos'è un'istanza?
L'istanza è un blocco di memoria, che contiene il riferimento a un oggetto. In altre parole, Instance manterrà l'indirizzo del blocco di memoria iniziale in cui è archiviato l'oggetto. In re altà, il nome dell'istanza può essere utilizzato per accedere all'inizio dell'area di memoria degli oggetti. Gli offset dalla memoria iniziale vengono calcolati dal motore di runtime in modo da poter andare dove sono archiviati i singoli dati o riferimenti al metodo. Il seguente codice Java snipped può essere utilizzato per creare un'istanza di un oggetto Car.
Car myCar=new Car();
Come accennato in precedenza, il nuovo operatore crea l'oggetto Car e restituisce il riferimento ad esso. Questo riferimento è memorizzato nella variabile Car type myCar. Quindi, myCar è l'istanza dell'oggetto Car creato.
Qual è la differenza tra un oggetto e un'istanza?
L'oggetto è un blocco di memoria contiguo che memorizza le informazioni effettive che distinguono questo oggetto da altri oggetti, mentre un'istanza è un riferimento a un oggetto. È un blocco di memoria, che punta all'indirizzo iniziale in cui è archiviato l'oggetto. Due istanze possono riferirsi allo stesso oggetto. Le durate di vita di un oggetto e di un'istanza non sono correlate. Pertanto un'istanza potrebbe essere nulla. Una volta rimosse tutte le istanze che puntano a un oggetto, l'oggetto verrà distrutto.