Concetto di programmazione orientata agli oggetti in Python
Pubblicato: 2020-12-01Object-Oriented è un paradigma di programmazione che segue il concetto di classi e oggetti al posto di funzioni e logica. È anche noto come il modo elegante di codifica che organizza il codice in modo da aumentare la leggibilità e la manutenibilità del codice. Il concetto di OOP è un argomento importante nella programmazione e aiuta a creare moduli riutilizzabili per una varietà di attività in Data Science.
Questo è spesso un prerequisito durante la creazione di modelli di deep learning utilizzando varie librerie come Pytorch in cui il modello di base viene riutilizzato per aggiungere livelli personalizzati. Esploriamo cosa insegna questo concetto e come applicarlo in casi d'uso pratici.
Sommario
Qual è il concetto OOP?
Considera uno smartphone che può essere di qualsiasi marca, ma sono una varietà di cose comuni tra tutti loro. Tutti hanno schermi, altoparlanti, pulsanti e, a livello di software, quasi tutti sono alimentati da Android. Consideriamo ora un caso in cui ogni azienda sta realizzando il proprio software da zero, anche il kernel che controlla la maggior parte dei componenti hardware.
Questo diventerebbe un processo noioso e costoso, aumentando quindi il prezzo dei dispositivi. Cosa succede se esiste un modello astratto o generalizzato che può essere modificato nel tempo da qualsiasi produttore in base alle proprie esigenze? Questo concetto tenta di acquisire questo metodo basato su classi in cui il codice è strutturato in classi con metodi di accesso diversi.
Cosa sono le classi e gli oggetti?
Le classi sono i progetti di ciò che deve essere implementato. Se consideriamo il nostro esempio precedente, possiamo avere funzionalità per chiamare una persona, ricevere chiamate, messaggi, riprodurre musica o fare altre cose.
Tutte queste cose sono comuni per ogni smartphone, anche il loro funzionamento interno è simile e possono essere considerate come una classe di funzioni dello smartphone o una classe. Gli oggetti possono essere definiti come tutti i marchi di smartphone che utilizzeranno questa implementazione comune nei loro prodotti con modifiche.
Possono esserci più istanze di questa classe base e ogni istanza può contenere uno stato di valori diverso senza interferire con altri oggetti. In Python, una classe può essere dichiarata usando la parola chiave riservata class. Inoltre, il costruttore __init__ viene utilizzato per inizializzare le variabili di classe.
classe Azienda:
def __init__ (auto):
self.name = 'upGrad'
def display_name (auto):
print(f"Il nome dell'azienda è: {self.name}")
cm = azienda()
cm.nome_visualizzazione()
Leggi anche: Stipendio per sviluppatori Python in India
Diversi pilastri dell'OOP
Ora che abbiamo familiarità con gli elementi costitutivi di base di questo paradigma, diamo un'occhiata ad alcune delle caratteristiche/caratteristiche più importanti di questo concetto:
Incapsulamento
Questo afferma che i metodi (o funzioni) della classe e i dati ad essa associati sono incapsulati o protetti da accessi accidentali o esterni. Ciò significa che gli attributi definiti nell'ambito privato o protetto non sono accessibili all'esterno della classe.
C'è una preoccupazione per Python che non esiste il concetto di variabili private in questo linguaggio, quindi gli attributi sono accessibili al di fuori della classe.
C'è un modo per riconoscere gli attributi privati usando un doppio trattino basso all'inizio della dichiarazione e se provi ad accedervi al di fuori della classe tramite l'oggetto della stessa, ti verrà richiesto AttributeError perché Python applica la modifica dei nomi ogni volta che rileva una variabile privata. Questo non dà alcuna sicurezza ai tuoi attributi perché sono ancora accessibili.
Eredità
Come suggerisce la parola, sta prendendo una parte di una classe esistente chiamata classe genitore in una nuova classe chiamata classe figlia con poche o nessuna modifica. Possiamo collegare questo al nostro esempio in questo modo che tutti i marchi di smartphone ereditano una classe telefonica generica che li aiuterà a svolgere le funzioni di base, inoltre possono aggiungere i loro codici extra per migliorare l'esperienza dell'utente in base alle loro esigenze. In Python, l'ereditarietà di una classe viene eseguita da:
classe A:
alcuni contenuti
classe B(A):
contenuto della classe derivata
C'è un altro concetto relativo all'ereditarietà chiamato funzione di sovrascrittura. Supponiamo che la funzione della fotocamera dello smartphone generico non sia così buona e che il produttore abbia una soluzione migliore per questo. Possono sovrascrivere direttamente questa funzione definendola di nuovo nella classe figlia e applicare le modifiche lì.

Astrazione
Definisce il progetto o un'interfaccia per le implementazioni delle sottoclassi. Significa che alcuni metodi sono definiti nella classe base che non è completamente implementata ed è definita solo una vista astratta. Può aiutare a tenere traccia delle varie caratteristiche del modulo e dei sottomoduli da creare.
Ad esempio, alcuni smartphone supportano NFC (near field connettività) e questa funzionalità può essere definita nella classe base e la sua implementazione può essere codificata nella classe figlio del telefono risultante. In questo modo, la classe base astratta può fornire la visione d'insieme del modulo e delle successive implementazioni. Ecco un esempio:
Classe Telefono:
def fotocamera (auto):
passaggio
def NFC(auto):
passaggio
classe Xyz(Telefono):
def NFC(auto):
restituisce Vero
Informazioni su: I migliori strumenti Python
Polimorfismo
Se andiamo per il significato principale, significa più forme della stessa cosa. Il polimorfismo definisce le funzioni in base al numero o ai tipi di argomenti passati. Ad esempio, la funzione di lunghezza in Python può accettare qualsiasi tipo di iterabile o oggetto e restituisce la lunghezza intera.
Questo può anche essere citato come sovraccarico di funzioni, ma qui c'è un problema nel linguaggio Python. Non possiamo definire funzioni con lo stesso nome con argomenti diversi e, se fatto, considera solo l'ultima voce.
Casi d'uso pratici di OOP
Abbiamo visto in cosa consiste questo concetto e quali caratteristiche offre. Dai un'occhiata ad alcuni esempi in cui puoi applicare questo concetto:
Jinja Templating: se hai una certa esperienza con il framework Flask di Python che gestisce i percorsi e il lato server, questo modello aiuta a gestire questi dati sul front-end. Generalmente, viene creato un file HTML di base che viene poi ereditato da tutte le pagine per avere lo stesso layout in tutto il sito web.
Applicazioni Kivy: questa è una libreria che ti consente di creare applicazioni Python basate su GUI multipiattaforma (Android e IOS) e qui la maggior parte della programmazione si basa sul concetto OOP.
ORM: Object-relational Mapper offre un modo per definire i database relazionali nel codice dell'applicazione utilizzando qualsiasi linguaggio. Ad esempio, in Django, puoi definire diversi tipi di modelli utilizzando classi per diversi tipi di utenti.
Conclusione
In questo articolo, abbiamo discusso cos'è il concetto OOP, i suoi blocchi costitutivi (classi e oggetti), diversi pilastri e evidenziato alcuni esempi in cui viene adottato questo paradigma. Esistono numerosi punti in cui questo metodo di programmazione è considerato grazie a una migliore gestione del codice, collaborazione e fornitura di funzionalità astratte ad altri programmi dipendenti da questo.
Se sei curioso di conoscere Python, la scienza dei dati, dai un'occhiata al Diploma PG in Data Science di IIIT-B e upGrad, creato per i professionisti che lavorano e offre oltre 10 casi di studio e progetti, workshop pratici pratici, tutoraggio con esperti del settore, 1 contro 1 con mentori del settore, oltre 400 ore di apprendimento e assistenza al lavoro con le migliori aziende.
Che cos'è OOP?
La programmazione orientata agli oggetti, abbreviata in OOP, è una tecnica di programmazione informatica che organizza i progetti software in base ai dati, invece di organizzarli in base a funzioni e logica. OOP si concentra sugli oggetti, cioè campi di dati con proprietà e comportamenti distinti che gli sviluppatori desiderano controllare piuttosto che sulla logica necessaria per gestirli. Questo metodo di programmazione è ideale per applicazioni complesse e di grandi dimensioni che vengono costantemente aggiornate o mantenute. OOP copre iniziative di produzione, progettazione e applicazioni mobili. Altri vantaggi di questo linguaggio sono la riutilizzabilità del codice, la scalabilità e l'efficienza.
Quali sono le diverse lingue in OOP?
I linguaggi di programmazione orientati agli oggetti costituiscono molti dei linguaggi di codifica più utilizzati nell'industria informatica odierna. Le lingue OOP si trovano ovunque. Questi linguaggi fanno uso di oggetti che contengono sia dati che codice. L'incapsulamento, l'astrazione, il polimorfismo e l'ereditarietà sono idee di programmazione orientata agli oggetti. I linguaggi di programmazione orientati agli oggetti più diffusi includono Java, Python, C++, Lisp e Perl. Aiutano con la programmazione utilizzando il paradigma delle classi e degli oggetti. Altri linguaggi che supportano i principi orientati agli oggetti sono Perl, Objective-C, Dart, Lisp, JavaScript e PHP.
Perché le OOP sono preferite?
Ci sono molte ragioni per cui le OOP sono preferite. Gli sviluppatori possono riutilizzare il codice orientato agli oggetti. È inoltre possibile utilizzare l'ereditarietà per duplicare informazioni e funzionalità create in precedenza. Ciò consente di risparmiare tempo, semplificare il codice, risparmiare spazio e semplificare la codifica delle nostre dita. Poiché la maggior parte del codice si trova in un'unica posizione e viene chiamato e riutilizzato, è notevolmente più semplice da mantenere. Mentre la maggior parte dei linguaggi offre un certo livello di sicurezza, i linguaggi orientati agli oggetti sono più convenienti poiché l'incapsulamento include la sicurezza. I linguaggi di programmazione orientati agli oggetti dividono un programma in oggetti e classi. Questo è vantaggioso poiché fornisce alla tua applicazione un framework più modulare.