Sommario[Nascondere][Spettacolo]
Tra gli sviluppatori, la programmazione orientata agli oggetti ha attirato un seguito considerevole. Anche il popolare linguaggio informatico Python aderisce al paradigma orientato agli oggetti.
Si occupa della definizione di oggetti e classi in Python, che costituisce la base per i principi OOP. In questo tutorial sulla "programmazione orientata agli oggetti in Python", imparerai come dichiarare classi Python, creare oggetti da esse e utilizzare le quattro tecniche OOP.
Quindi, prima cosa.
Che cos'è la programmazione orientata agli oggetti?
L'obiettivo principale della programmazione orientata agli oggetti (OOP) è la creazione di "oggetti". Un insieme di variabili e funzioni interconnesse costituisce un oggetto.
Queste variabili sono spesso indicate come attributi dell'oggetto e i suoi comportamenti sono spesso indicati come sue funzioni. Questi elementi forniscono all'applicazione una struttura più efficace e comprensibile. Un'automobile è un esempio di un oggetto.
Se l'automobile fosse un oggetto, i suoi attributi includerebbero cose come colore, modello, prezzo, marca, ecc. Inoltre, accelererebbe, rallenterebbe e cambierebbe marcia.
Un'altra illustrazione: se pensiamo a un cane come a un oggetto, alcune delle sue caratteristiche potrebbero essere il colore, la razza, il nome, il peso, ecc. E si muoverebbe, abbaiava, giocava, ecc.
Poiché incorpora concetti del mondo reale come oggetti, nascondiglio, ereditarietà, ecc. Nella programmazione, la programmazione orientata agli oggetti è ben nota. Poiché è così simile alle circostanze del mondo reale, la visualizzazione è resa più semplice.
Concetti di programmazione orientata agli oggetti
Classi e oggetti in Python
Come tutti gli altri linguaggi orientati agli oggetti, Python ti consente di progettare classi per generare oggetti. I tipi di dati più popolari in Python, inclusi stringhe, elenchi, dizionari e altri oggetti, sono classi integrate.
Una classe è un gruppo di metodi collegati e variabili di istanza che definiscono un certo tipo di oggetto. Una classe può essere vista come il modello o il modello per un oggetto. Le variabili che compongono una classe sono note come attributi.
Un oggetto è un membro di una classe che ha un insieme definito di attributi. Per questo motivo, è possibile creare un numero qualsiasi di oggetti utilizzando la stessa classe.
Le classi Python sono definite usando la parola classe, seguita dal nome della classe e da due punti. Un'illustrazione di una classe di pappagalli potrebbe essere:
Qui dichiariamo la classe vuota Parrot usando la parola chiave class. Creiamo istanze dalle classi. Un'istanza è un oggetto particolare che è stato creato da una determinata classe. 'pass' è spesso usato come sostituto del codice la cui implementazione potremmo per il momento rinunciare. Possiamo eseguire il codice Python senza generare un errore utilizzando la parola chiave "pass".
Un'istanza di una classe risulta in un oggetto (istanza). Solo la descrizione dell'oggetto viene definita quando viene creata una classe. Di conseguenza, non viene allocata memoria o RAM.
Un esempio di oggetto di classe pappagallo è:
Obj è un oggetto di classe Parrot in questo caso.
Diciamo che conosciamo i dettagli sui pappagalli. Dimostreremo ora come creare la classe pappagallo e i suoi oggetti.
Metodo speciale ( __init__ )
Un metodo chiamato init definisce gli attributi che ogni oggetto Parrot deve avere (). Quando viene formato un nuovo oggetto Parrot, la funzione __init__ crea lo stato iniziale dell'oggetto assegnando i valori che forniamo all'interno delle proprietà dell'oggetto.
Quindi, ogni nuova istanza della classe viene inizializzata utilizzando __init__(). Sebbene __init__() possa accettare qualsiasi numero di parametri, self è sempre il primo parametro.
Un riferimento all'istanza della classe attiva è incluso nell'argomento self. Il parametro self, che si collega all'indirizzo dell'oggetto corrente di una classe e ci dà accesso ai dati delle sue variabili (dell'oggetto), lo indica.
esempio 1
Abbiamo stabilito una classe chiamata Parrot nel codice sopra. Successivamente, vengono definite le proprietà. Le caratteristiche di una cosa sono le sue proprietà. La funzione __init__ della classe è dove vengono specificate queste caratteristiche.
Quando viene formato un oggetto, il metodo di inizializzazione è quello che viene chiamato inizialmente. Quindi vengono create le istanze della classe Parrot. Blaze e Wonda in questo caso sono riferimenti (valori) ai nostri nuovi oggetti. __class .species ci consente di accedere all'attributo class.
Ogni istanza di una classe ha le stesse caratteristiche. È possibile accedere alle caratteristiche dell'istanza anche utilizzando blaze.name e blaze.age. Tuttavia, tutte le istanze di una classe hanno attributi di istanza univoci.
esempio 2
Metodi
Le funzioni definite all'interno del corpo di una classe sono chiamate metodi. Sono impiegati per specificare come si comporterà un articolo.
Due metodi, sing() e dance, sono definiti nella suddetta applicazione(). Poiché vengono invocati su un oggetto di istanza, ad esempio flame, vengono definiti metodi di istanza.
Fondamenti del concetto OOPS
Le quattro idee fondamentali della programmazione orientata agli oggetti sono:
- Eredità
- incapsulamento
- Polimorfismo
- Astrazione
Eredità
Le persone spesso dicono ai neonati che hanno caratteristiche del viso che assomigliano a quelle dei loro genitori o che hanno ereditato tratti particolari dai loro genitori.
È possibile che tu abbia anche notato che condividi alcune caratteristiche con i tuoi genitori. Anche la situazione del mondo reale è abbastanza simile all'ereditarietà.
Tuttavia, in questo caso, le caratteristiche delle "classi madri" vengono trasmesse alle "classi figlie". Questi aspetti sono indicati come “proprietà” e “metodi” in questo contesto.
Una classe può derivare i suoi metodi e attributi da un'altra classe utilizzando la tecnica nota come ereditarietà. L'ereditarietà è il processo di una classe figlia che riceve le proprietà di una classe genitore.
Esempio:
La classe genitore Human è ereditata dalla classe figlia Boy nell'esempio sopra. Poiché Boy sta ereditando da Human, possiamo accedere a tutti i suoi metodi e attributi quando creiamo un'istanza della classe Boy.
Nella classe Boy è stato definito anche un metodo chiamato schoolName. L'oggetto della classe padre non è in grado di accedere al metodo schoolName. Il metodo schoolName può, tuttavia, essere chiamato creando un oggetto classe figlio (Boy).
incapsulamento
Dare a ogni variabile nel programma l'accesso globale non è una mossa saggia quando si lavora con le classi e si gestiscono dati sensibili.
Senza concedere al programma l'accesso completo a nessuna di queste variabili, l'incapsulamento fornisce un meccanismo per ottenere le variabili necessarie.
I metodi definiti in modo esplicito allo scopo possono essere utilizzati per aggiornare, modificare o eliminare i dati dalle variabili. Questo metodo di programmazione presenta i vantaggi di una maggiore sicurezza e controllo sull'input dei dati.
Guarda quanto velocemente le variabili possono essere accessibili nella dimostrazione qui sotto:
Polimorfismo
Diciamo che stai usando il tuo telefono per sfogliare il Instagram alimenta. Quando hai sentito il bisogno di ascoltare della musica, hai effettuato l'accesso a Spotify e hai iniziato a riprodurre la tua canzone preferita.
Dopo un po', hai ricevuto una chiamata, quindi hai messo in pausa qualsiasi cosa stavi facendo in background per rispondere. Il tuo amico ha chiamato e ti ha chiesto di mandargli un messaggio di testo con il numero di telefono di una certa persona.
Quindi gli hai inviato il numero di telefono tramite SMS e hai continuato con i tuoi compiti. Hai captato qualcosa? Con un solo dispositivo, il tuo cellulare, puoi navigare tra i feed, ascoltare musica, rispondere ed effettuare telefonate e inviare messaggi.
Pertanto, il polimorfismo è paragonabile a quello. Poly significa numeroso e morph indica forme diverse. Pertanto, il polimorfismo nel suo insieme si riferisce a qualcosa con varie forme.
O “qualcosa” che, a seconda delle circostanze, può esibire una varietà di comportamenti. In OOPS, il polimorfismo descrive funzioni con gli stessi nomi ma comportamenti distinti. In alternativa, una firma di funzione diversa con lo stesso nome di funzione (parametri passati alla funzione).
Esempio:
Qui, possiamo usare la variabile animal per scorrere gli oggetti della Zebra e del Coniglio, usando i rispettivi metodi di istanza. Di conseguenza, il comportamento (color() & eats()) sia della Zebra che del Coniglio sono qui rappresentati da un'unica variabile chiamata animal. Aderisce quindi alle regole del polimorfismo.
Astrazione
Molto probabilmente utilizzi un laptop, un telefono o un tablet per leggere questo contenuto. Durante la lettura, presumibilmente stai anche prendendo appunti, sottolineando passaggi chiave e forse memorizzando alcune informazioni nei tuoi file personali.
Tutto ciò che puoi vedere quando leggi questo è uno "schermo" con i dati che ti vengono visualizzati. Puoi solo vedere i tasti della tastiera mentre digiti, quindi non devi preoccuparti di sottigliezze interne come il modo in cui la pressione di un tasto può far apparire quella parola sullo schermo.
In alternativa, come la pressione di un pulsante sullo schermo può avviare una nuova scheda.
Pertanto, tutto ciò che possiamo osservare in questa situazione è astratto. Possiamo solo vedere il risultato che sta creando e non le complessità interne (che in realtà contano per noi).
Simile a questo, l'astrazione rivela solo le funzioni che ogni cosa possiede nascondendo eventuali implementazioni o dettagli interni.
L'obiettivo principale di Abstraction è nascondere le informazioni di base e qualsiasi implementazione di dati estranei in modo che le persone vedano solo ciò che devono vedere. Aiuta a gestire la complessità del codice.
Esempio:
Una classe astratta relativa al veicolo è presente qui. Poiché eredita dalla classe astratta ABC, è astratto. Poiché i metodi astratti non sono definiti o rimangono vuoti, la classe Vehicle ha un metodo astratto chiamato no of wheels a cui manca una definizione.
Anticipano le classi che ereditano le classi astratte per fornire l'implementazione del metodo.
Vantaggi dei concetti OOPS
- Incapsulando, si ottengono un'elevata sicurezza e privacy dei dati.
- Flessibilità nell'avere molte versioni polimorfiche della stessa classe.
- L'alto livello di complessità del codice è stato ridotto dall'astrazione.
- Invece di passare al setaccio centinaia di righe di codice per individuare un singolo problema, la modularità della programmazione semplifica il debug.
- Il riutilizzo del codice è causato dall'eredità di una classe figlia delle proprietà della classe padre.
- Un'efficace risoluzione dei problemi è possibile perché creiamo classi che eseguono le azioni necessarie per ogni mini-problema. Il seguente problema può essere risolto ancora più rapidamente poiché possiamo riutilizzare quelle classi.
Conclusione
In conclusione, abbiamo appreso delle idee OOPS in Python, il paradigma di programmazione più in voga in questo momento.
Dopo aver letto questo, devi esserti reso conto che il paradigma OOPS si occupa interamente dell'idea di classi e oggetti. e concetti OOPS come incapsulamento, polimorfismo, ereditarietà e astrazione.
Lascia un Commento