Categorie
Javascript Programmazione

{JS} Oggetti, istanze, prototipi ed ereditarietà

Gli oggetti

Ogni cosa in JavaScript è o un valore primitivo o un oggetto.
Un oggetto è un costrutto, qualcosa di statico che ha determinate caratteristiche e tratti, come proprietà e metodi.

Global Object

Tutti gli oggetti in Javascript sono basati sull’oggetto globale “Object” e da esso ereditano proprietà e metodi che vengono condivise tra loro.

Le più utilizzate

Proprietà
costructorrestituisce in stringa il costruttore (es. “String”)
prototyperestituisce il prototipo dell’oggetto ed aggiunge proprietà/metodi all’oggetto prototipo ed a tutte le sue istanze
Metodi
toString() restituisce una versione in stringa dell’oggetto
valueOf()restituisce il corrispondente valore del tipo di dato primitivo

Oggetti personalizzati

Gli oggetti sono entità dotate di unicità e dinamicità che associano nomi di proprietà a valori.
In Javascript abbiamo la possibilità di creare oggetti personalizzati attraverso la “notazione letterale” o mediante “new Object” (costruttore di oggetti). Gli oggetti da noi creati erediteranno proprietà e metodi dell’oggetto globale “Global Object”, in quanto loro prototipo.

var oggetto = {
nome : "Luca",
cognome: "Rossi"
};

Oggetti predefiniti

JavaScript ha diversi generi di oggetti predefiniti, come:

ObjectOggetto globale
FunctionFirst Class Object
ArrayOggetto per gli array
DateOggetto per le date
MathOggetto per la manipolazione matematica dei valori
NumberOggetto per i numeri
RegExpOggetto per le espressioni regolari
StringOggetto per le stringhe

Gli oggetti predefiniti non sono altro che costruttori di particolari oggetti specializzati nel effettuare determinate azioni, mediante i loro metodi e possono contengono determinate proprietà.
Gli oggetti predefiniti sono sempre discendenti di Object, loro prototipo

Istanza di un oggetto

Il concetto di istanza è un argomento molto dibattuto ed è uno dei principi di astrazione della programmazione orientata agli oggetti.

Un istanza è la copia creata, con valori univoci, partendo da un riferimento, più semplicemente un costruttore.

function frutta(valore1, valore2, valore3) {
this.tipologia=valore1;
this.provenienza=valore2;
this.certificazioni=valore3;
}

Nel momento in cui invochiamo la funzione “costruttrice” tramite new creeremo un nuovo oggetto:

var pomodori = new frutta("Bacca", "Italiana", "BIO"); 
var meloni = new frutta("Frutta", "Italiana", "BIO");

pomodori e meloni sono istanze della funzione-costruttrice (Object-Constructor) “frutta”.

Prototipi

JavaScript è dunque un linguaggio “ad oggetti” basato sul concetto di prototipo.

Un costruttore, come “new Object”, è un’astrazione che definisce le caratteristiche che avranno gli oggetti creati da essa.

Quindi, in linea generale, un prototipo è quella funzione che funge da costruttore.

function frutta(valore1, valore2, valore3) {
this.tipologia=valore1;
this.provenienza=valore2;
this.certificazioni=valore3;
}

Ereditarietà

Il meccanismo su cui si basa l’erediterietà prototipale (prototypal inheritance) di JavaScript è abbastanza semplice: se una proprietà o metodo, non si trova in un oggetto, viene ricercata nel suo prototipo.

Questo spiega il motivo per cui tutti gli oggetti hanno delle proprietà e dei metodi, come toString(), condivisi, che di fatto sono ereditati, grazie al meccanismo di ereditarietà, dal proprio oggetto prototipo, l’oggetto globale “Object”.

Le Classi

La specifica linguistica ECMAScript 2015 (ES6), ha introdotto le classi nel linguaggio JavaScript.
Le classi in JavaScript in realtà non offrono funzionalità aggiuntive e sono spesso descritte come “syntactical sugar” ovvero offrono una sintassi più pulita ed elegante.
Poiché la stragrande maggioranza dei linguaggi di programmazione utilizzano le classi, la sintassi della classe in JavaScript rende più semplice per gli sviluppatori spostarsi tra i vari linguaggi.

class persona {
	constructor(nome, cognome, email, indirizzo) {
		this.nome = nome;
		this.cognome = cognome;
		this.email = email;
		this.indirizzo = indirizzo;
	}

Definizione tecnica

Una classe, nella programmazione orientata agli oggetti, è un costrutto di un linguaggio di programmazione usato come modello per creare oggetti. Il modello comprende attributi e metodi che saranno condivisi da tutti gli oggetti creati (istanze) a partire dalla classe. Un oggetto è, di fatto, l’istanza di una classe.

Una classe è identificabile come un tipo di dato astratto che può rappresentare una persona, un luogo, oppure una cosa, ed è quindi l’astrazione di un concetto, implementata in un software. Fondamentalmente, essa definisce al proprio interno lo stato, i cui dati sono memorizzati nelle cosiddette variabili membro o attributi, e il comportamento dell’entità di cui è rappresentazione, descritto da blocchi di codice riutilizzabili chiamati metodi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *