Concetti ed esempi OOP che ogni programmatore dovrebbe conoscere

Pubblicato: 2021-02-26

In questo articolo, tratteremo i concetti di base sulla programmazione orientata agli oggetti e discuteremo i termini comunemente usati: astrazione, incapsulamento, ereditarietà e polimorfismo.

Per cominciare, OOP è una metodologia di programmazione che richiede ai programmatori di creare oggetti e utilizzarli in tutto il programma all'interno delle funzioni che richiedono tali oggetti per il loro funzionamento. Il motivo per cui il concetto di OOP è ampiamente utilizzato in Java è che consente il riutilizzo del codice mantenendo la sicurezza.

Prima di parlare dei quattro pilastri della programmazione orientata agli oggetti, familiarizziamo con i termini generici che sentiamo molto spesso quando utilizziamo uno qualsiasi dei linguaggi orientati agli oggetti: Java, python, c++.

Sommario

Classe

Una classe è una raccolta di oggetti che definisce un insieme di proprietà comuni a tutti gli oggetti di un particolare tipo. Può anche essere chiamato un progetto per la creazione di oggetti. Una classe comprende i seguenti componenti:

Nome classe: il nome assegnato a una classe che inizia con l'alfabeto maiuscolo.

Modificatori: in base alla funzionalità dei modificatori di classe possono essere pubblici, privati ​​o predefiniti.

Body : Il corpo della classe contiene tutti i codici sugli oggetti presenti nella classe. Ciò potrebbe variare dalla dichiarazione di variabili o dalla creazione di qualsiasi costruttore o metodo che contenga il funzionamento di un oggetto.

Oggetto

Un oggetto è definito come un'istanza di una classe e contiene entità della vita reale. Ad esempio, per una classe chiamata Animali, i suoi oggetti saranno un gatto, un cane, un elefante e altri. Ogni oggetto ha la propria identità, attributo e comportamento. Il codice seguente illustra l'uso di classi, oggetti e metodi durante la programmazione nel linguaggio java.

Metodi

I metodi sono definiti all'interno di una classe e vengono utilizzati per eseguire una funzione specifica. Il metodo può contenere o meno un parametro di input. Il codice seguente illustra l'uso di classi, oggetti e metodi durante la programmazione nel linguaggio java.

Nel codice sopra, Player è il nome dato alla nostra classe, mentre run è un parametro passato nel metodo Batsman che restituisce i punti segnati da lui quando viene chiamato tramite un oggetto chiamato myobj.

Modificatori di accesso

I modificatori di accesso in Java definiscono l'accessibilità o l'estensione di un metodo o di un costruttore o della classe. I quattro tipi di modificatori di accesso sono:

  1. Pubblico : il codice scritto all'interno di una classe è accessibile ad altre classi.
  2. Private : il codice scritto è accessibile solo all'interno di quella specifica classe.
  3. Predefinito : il codice scritto è accessibile all'interno dello stesso pacchetto.
  4. Protetto : il codice è accessibile all'interno di un pacchetto e anche tramite una sottoclasse. In assenza di una classe figlio, il codice non è accessibile.

Ora procediamo e parliamo del nocciolo della programmazione orientata agli oggetti.

Eredità

Il termine ereditarietà si riferisce all'ereditarietà delle proprietà di una classe in un'altra. Le proprietà si riferiscono agli attributi e ai metodi della classe padre. La classe genitore è quella classe le cui proprietà devono essere ereditate da altre classi. Le classi che ereditano le proprietà della classe genitore sono chiamate classe figlia o sottoclasse. Per ereditare le proprietà della classe genitore nella classe figlia, viene utilizzata una parola chiave chiamata extends .

Nell'esempio sopra, lo Sponsor è la classe genitore con il proprietario come suo attributo. Abbiamo creato una sottoclasse chiamata Team che eredita la classe genitore-Sponsor. Abbiamo creato un oggetto di Team che può accedere alle proprietà della classe genitore. L'output del codice sopra è:

Polimorfismo

Come suggerisce il nome, il polimorfismo è la capacità di una variabile o di una funzione di esistere in più forme. Il polimorfismo consente al programmatore di eseguire compiti diversi utilizzando la stessa variabile o funzione. Un esempio reale di polimorfismo potrebbe essere considerato un terreno aperto, ora questo terreno può essere utilizzato per praticare sport.

Inoltre, potrebbe essere utilizzato anche per organizzare matrimoni e concerti. Infine, lo stesso terreno può essere utilizzato per il parcheggio dei veicoli. Da ciò, possiamo dedurre che una singola variabile può avere più implementazioni a seconda del suo utilizzo.

Il polimorfismo in cui di solito ci imbattiamo in due termini, vale a dire : sovraccarico del metodo e sovrascrittura del metodo .

In Method Overloading , un singolo metodo può essere utilizzato in numerosi modi ed eseguire diverse funzioni. I metodi avranno lo stesso nome ma come input possono essere utilizzati parametri diversi.

In Method Override , il metodo della classe padre può essere sovrascritto dalla classe figlio. Con questo, lo stesso metodo può funzionare in modo diverso quando invocato dalla classe genitore e dalla classe figlia.

Un esempio del polimorfismo è mostrato di seguito:

In questo esempio, utilizzando lo stesso metodo possiamo eseguire più attività. Lo stesso metodo Voice quando utilizzato in Bird emetterebbe "Turr Turr" e se utilizzato con Duck emetterà "Quack Quack". L'istantanea dell'output è mostrata di seguito-

Astrazione

L'astrazione è il processo per nascondere determinati dati agli utenti e mostrare loro solo le informazioni richieste. Ad esempio, mentre guidiamo un'auto, non ci preoccupiamo delle funzioni o dei meccanismi interni. Quello che ci viene mostrato sono la velocità di guida dell'auto ei litri di benzina disponibili. Tutti gli altri dati emarginati non vengono visualizzati al conducente.

La parola chiave abstract viene utilizzata per metodi e classi durante l'esecuzione dell'astrazione. Per una classe astratta, non possiamo creare un oggetto mentre il metodo astratto non dovrebbe includere un corpo. Se una qualsiasi delle due regole viene violata, l'output genererà un errore.

Qui abbiamo creato un oggetto della sottoclasse - Duck che è ereditato dalla classe principale - Bird. L'output è mostrato di seguito:

Incapsulamento

L'incapsulamento è il processo di unione del codice e dei dati in un'unica unità. Qui, le variabili di una classe sono nascoste alle altre classi (usando la parola chiave private ) ma sono accessibili solo tramite una funzione membro. Le funzioni setter e getter vengono utilizzate per accedere alle variabili private di una classe astratta.

Fino ad ora, abbiamo trattato tutto ciò che è relativo alla programmazione orientata agli oggetti utilizzando Java. Prima di concludere, esaminiamo alcuni dei vantaggi del concetto OOP.

  1. Il codice può essere facilmente riutilizzato e quindi consente di risparmiare molto tempo e denaro per lo sviluppo dei codici.
  2. Aiuta a progettare il codice in modo ben strutturato in modo che qualsiasi nuovo programmatore non debba dedicare lunghe ore a comprendere il codice.
  3. Oltre ad aiutare gli utenti a scrivere codice in modo efficiente, assicura che la sicurezza non sia compromessa.

Checkout: Domande e risposte per l'intervista OOPs

Impara i corsi di software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

Per concludere, in questo blog abbiamo trattato i concetti base degli OOP. Questi concetti sono ampiamente utilizzati nell'industria e in altre applicazioni. Per diventare un programmatore esperto, si dovrebbe avere una solida conoscenza di questi concetti. Nei prossimi blog, scopriremo molti altri concetti di programmazione essenziali che ti aiuteranno a sviluppare competenze in questo dominio.

Se sei interessato a saperne di più sullo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, status di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.]

Cos'è un fattoriale?

Un fattoriale è un'operazione matematica che conta il prodotto di un dato numero e tutti i numeri sottostanti. Un fattoriale è un prodotto che indica quante volte un numero viene moltiplicato per uno. Ad esempio, il fattoriale di 5 è 5x4x3x2x1, che è uguale a 120. Il fattoriale di 1 è 1 e anche il fattoriale di 0 è 1. Il programma per trovare un fattoriale di un numero è la domanda più frequente dell'intervista ed è qualcosa dovrebbe essere sulla punta della tua mano.

Come scrivere un programma di ricorsione fattoriale?

Il fattoriale di un numero n è definito come n! = 1 × 2 × 3 × 4 × … × n. Fattoriale di 5 è 120. La funzione fattoriale è definita come fattoriale(5) = 120. Una funzione ricorsiva è una funzione che chiama se stessa. Questo è un esempio di una funzione fattoriale in stile ricorsivo fattoriale(n) = n * fattoriale(n - 1). Scrivere un programma di ricorsione fattoriale è molto semplice e il codice è molto simile alla versione iterativa. Per scrivere la versione iterativa utilizziamo una variabile chiamata n, la incrementiamo di uno e la moltiplichiamo per la variabile chiamata prod, che tiene traccia dei successivi valori di n. Il valore di output è anche memorizzato nella variabile denominata prod. Nella versione ricorsiva, usi ancora una variabile chiamata n. Tuttavia, non hai bisogno di una variabile per memorizzare il valore di prod e puoi restituire direttamente prod dalla funzione.

Che cos'è la ricorsione nella programmazione?

La parola ricorsione deriva dal vocabolo latino recurrere, che significa ritornare. Nella maggior parte dei linguaggi di programmazione, una funzione che chiama se stessa è chiamata ricorsione. Questo processo di loop continua fino al raggiungimento del caso base, che non è definito in nessuna funzione ricorsiva. La ricorsione è una tecnica efficace per risolvere un problema in modo strutturato e organizzato. È una buona strategia di programmazione. Ad esempio, il problema della serie di Fibonacci, il problema fattoriale, ecc. possono essere risolti sia in modo iterativo che ricorsivo.