OOPs in Java: Incapsulamento, Ereditarietà, polimorfismo, Astrazione

postato in: Articles | 0

Nell’ultimo articolo abbiamo discusso i concetti di OOPs. Se non l’hai ancora controllato, ti consiglio vivamente di leggerlo in modo da avere una panoramica di base di tutti i concetti di programmazione orientata agli oggetti. In questa guida, discuteremo quattro caratteristiche importanti di OOPs con l’aiuto di esempi di vita reale.

Approccio orientato agli oggetti : Un’introduzione

Java è un linguaggio orientato agli oggetti perché fornisce le funzionalità per implementare un modello orientato agli oggetti., Queste caratteristiche includono astrazione, incapsulamento, ereditarietà e polimorfismo.

OOPS riguarda lo sviluppo di un’applicazione attorno ai suoi dati, cioè oggetti che forniscono l’accesso alle loro proprietà e alle possibili operazioni a modo loro.

Astrazione

Uno dei concetti fondamentali di OOPs è l’astrazione. L’astrazione è un processo in cui si mostrano solo dati “rilevanti” e “nascondono” dettagli non necessari di un oggetto dall’utente., Ad esempio, quando accedi al tuo account Amazon online, inserisci user_id e password e premi login, cosa succede quando premi login, come i dati di input inviati al server Amazon, come vengono verificati sono tutti astratti da te.

Un altro esempio di astrazione: Una macchina in sé è un oggetto ben definito, che è composto da diversi altri oggetti più piccoli come un sistema di ingranaggi, meccanismo di sterzo, motore, che sono di nuovo hanno i loro sottosistemi., Ma per gli esseri umani auto è un unico oggetto, che può essere gestito con l’aiuto dei suoi sottosistemi, anche se i loro dettagli interni sono sconosciuti.

Incapsulamento

Questo post fornisce la spiegazione teorica dell’incapsulamento con esempi reali. Per una spiegazione dettagliata su questo argomento con i programmi java fare riferimento incapsulamento in java con esempio.

L’incapsulamento è:

  • Che lega i dati con il codice che li manipola.
  • Mantiene i dati e il codice al sicuro da interferenze esterne

Guardando l’esempio di un meccanismo di servosterzo di un’auto., Il servosterzo di un’auto è un sistema complesso, che internamente ha molti componenti strettamente accoppiati, lavorano in modo sincrono per girare l’auto nella direzione desiderata. Controlla anche la potenza erogata dal motore al volante. Ma per il mondo esterno c’è solo un’interfaccia disponibile e il resto della complessità è nascosto. Inoltre, il gruppo sterzo di per sé è completo e indipendente. Non influisce sul funzionamento di nessun altro meccanismo.

Allo stesso modo, lo stesso concetto di incapsulamento può essere applicato al codice., Il codice incapsulato dovrebbe avere le seguenti caratteristiche:

  • Tutti sanno come accedervi.
  • Può essere facilmente utilizzato indipendentemente dai dettagli di implementazione.
  • Non dovrebbero esserci effetti collaterali del codice, al resto dell’applicazione.

L’idea di incapsulamento è di mantenere le classi separate e impedire loro di essere strettamente accoppiate tra loro.

Un esempio di incapsulamento è la classe di java.util.Hashtable. L’utente sa solo che può memorizzare i dati sotto forma di coppia chiave/valore in una Hashtable e che può recuperare quei dati nei vari modi., Ma l’implementazione effettiva come, come e dove questi dati sono effettivamente memorizzati, è nascosta all’utente. L’utente può semplicemente usare Hashtable ovunque desideri memorizzare coppie Chiave / valore senza preoccuparsi della sua implementazione.

Ereditarietà

Questo post fornisce la spiegazione teorica dell’ereditarietà con esempi reali. Per una spiegazione dettagliata su questo argomento con i programmi java fare riferimento ereditarietà con esempi e tipi di ereditarietà in java.

  • L’ereditarietà è il meccanismo mediante il quale un oggetto acquisisce alcune / tutte le proprietà di un altro oggetto.,
  • Supporta il concetto di classificazione gerarchica.

Ad esempio: Car è un veicolo a quattro ruote, quindi supponiamo di avere una classe FourWheeler e una sottoclasse di essa denominataCar. Qui Car acquisisce le proprietà di una classe FourWheeler. Altre classificazioni potrebbero essere una jeep,tempo, furgone ecc. FourWheeler definisce una classe di veicoli che hanno quattro ruote e una gamma specifica di potenza del motore, capacità di carico ecc., L’automobile (definita come sottoclasse) acquisisce queste proprietà da FourWheeler e ha alcune proprietà specifiche, che sono diverse da altre classificazioni di FourWheeler, come lusso, comfort, forma, dimensioni, utilizzo ecc.

Un’auto può avere un’ulteriore classificazione come un’auto aperta, un’auto piccola, un’auto grande ecc., che acquisirà le proprietà sia da Quattro ruote che da un’auto, ma avrà ancora alcune proprietà specifiche. In questo modo il livello di gerarchia può essere esteso a qualsiasi livello.

Le classi Java Swing e Awt rappresentano i migliori esempi di ereditarietà.,

Polimorfismo

Questo post fornisce la spiegazione teorica del polimorfismo con esempi reali. Per una spiegazione dettagliata su questo argomento con i programmi java fare riferimento polimorfismo in java e runtime & polimorfismo in fase di compilazione.

  • Polimorfismo significa elaborare gli oggetti in modo diverso in base al loro tipo di dati.
  • In altre parole significa, un metodo con implementazione multipla, per una certa classe di azione. E quale implementazione da utilizzare viene decisa in fase di esecuzione a seconda della situazione (cioè,, tipo di dati dell’oggetto)
  • Questo può essere implementato progettando un’interfaccia generica, che fornisce metodi generici per una certa classe di azione e ci possono essere più classi, che fornisce l’implementazione di questi metodi generici.

Ci permette di guardare lo stesso esempio di una macchina. Una macchina ha un sistema di trasmissione ad ingranaggi. Ha quattro marce anteriori e una marcia indietro. Quando il motore è accelerato poi a seconda di quale marcia è impegnata quantità diversa potenza e movimento viene consegnato alla macchina., L’azione è la stessa che applica l’ingranaggio ma in base al tipo di ingranaggio l’azione si comporta in modo diverso o si può dire che mostra molte forme (polimorfismo significa molte forme)

Il polimorfismo potrebbe essere statico e dinamico entrambi. L’overloading del metodo è polimorfismo statico mentre l’override del metodo è polimorfismo dinamico.

  • Sovraccarico in parole semplici significa più di un metodo con lo stesso nome di metodo che si comporta in modo diverso in base agli argomenti passati durante la chiamata del metodo., Questo chiamato statico perché, quale metodo da invocare è deciso al momento della compilazione
  • Sovrascrivendo significa che una classe derivata sta implementando un metodo della sua super classe. La chiamata al metodo sovrascritto viene risolta in fase di runtime, quindi chiamato polimorfismo di runtime

Lascia un commento

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