Python orientato agli oggetti - Introduzione
I linguaggi di programmazione stanno emergendo costantemente, così come diverse metodologie. La programmazione orientata agli oggetti è una di queste metodologie che è diventata piuttosto popolare negli ultimi anni.
Questo capitolo parla delle caratteristiche del linguaggio di programmazione Python che lo rende un linguaggio di programmazione orientato agli oggetti.
Schema di classificazione della programmazione del linguaggio
Python può essere caratterizzato con metodologie di programmazione orientate agli oggetti. L'immagine seguente mostra le caratteristiche di vari linguaggi di programmazione. Osserva le caratteristiche di Python che lo rendono orientato agli oggetti.
Corsi di lingua | Categorie | Langauages |
---|---|---|
Paradigma di programmazione | Procedurale | C, C ++, C #, Objective-C, java, Go |
Scripting | CoffeeScript, JavaScript, Python, Perl, Php, Ruby | |
Funzionale | Clojure, Eralang, Haskell, Scala | |
Classe di compilazione | Statico | C, C ++, C #, Objective-C, java, Go, Haskell, Scala |
Dinamico | CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, Erlang | |
Tipo Classe | Forte | C #, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala |
Debole | C, C ++, C #, Objective-C, CoffeeScript, JavaScript, Perl, Php | |
Classe di memoria | Gestito | Altri |
Non gestito | C, C ++, C #, Objective-C |
Che cos'è la programmazione orientata agli oggetti?
Object Orientedmezzi diretti verso gli oggetti. In altre parole, significa funzionalmente diretto verso oggetti di modellazione. Questa è una delle tante tecniche utilizzate per modellare sistemi complessi descrivendo una raccolta di oggetti interagenti tramite i loro dati e comportamento.
Python, una programmazione orientata agli oggetti (OOP), è un modo di programmare che si concentra sull'utilizzo di oggetti e classi per progettare e costruire applicazioni .. I pilastri principali della programmazione orientata agli oggetti (OOP) sono Inheritance, Polymorphism, Abstraction, anno Domini Encapsulation.
L'analisi orientata agli oggetti (OOA) è il processo di esame di un problema, sistema o attività e di identificazione degli oggetti e delle interazioni tra di essi.
Perché scegliere la programmazione orientata agli oggetti?
Python è stato progettato con un approccio orientato agli oggetti. OOP offre i seguenti vantaggi:
Fornisce una chiara struttura del programma, che semplifica la mappatura dei problemi del mondo reale e delle relative soluzioni.
Facilita la facile manutenzione e modifica del codice esistente.
Migliora la modularità del programma perché ogni oggetto esiste in modo indipendente e le nuove funzionalità possono essere aggiunte facilmente senza disturbare quelle esistenti.
Presenta una buona struttura per le librerie di codici in cui i componenti forniti possono essere facilmente adattati e modificati dal programmatore.
Fornisce la riusabilità del codice
Programmazione procedurale e orientata agli oggetti
La programmazione basata su procedure deriva dalla programmazione strutturale basata sui concetti di functions/procedure/routines. È facile accedere e modificare i dati nella programmazione orientata alla procedura. D'altra parte, la programmazione orientata agli oggetti (OOP) consente la scomposizione di un problema in un numero di unità chiamateobjectse quindi creare i dati e le funzioni attorno a questi oggetti. Sottolinea più i dati che la procedura o le funzioni. Anche in OOP, i dati sono nascosti e non è possibile accedervi da una procedura esterna.
La tabella nell'immagine seguente mostra le principali differenze tra l'approccio POP e OOP.
Differenza tra POP (Procedural Oriented Programming) vs. Programmazione orientata agli oggetti (OOP).
Programmazione procedurale orientata | Programmazione orientata agli oggetti | |
---|---|---|
Basato su | In Pop, tutta l'attenzione è rivolta ai dati e alle funzioni | Oops si basa su uno scenario del mondo reale. L'intero programma è diviso in piccole parti chiamate oggetto |
Riusabilità | Riutilizzo del codice limitato | Riutilizzo del codice |
Approccio | Approccio dall 'alto verso il basso | Design incentrato sugli oggetti |
Identificatori di accesso | Nemmeno uno | Pubblico, privato e protetto |
Spostamento dei dati | I dati possono spostarsi liberamente dalle funzioni alle funzioni nel sistema | In Oops, i dati possono spostarsi e comunicare tra loro tramite le funzioni membro |
Accesso ai dati | In pop, la maggior parte delle funzioni utilizza dati globali per la condivisione a cui è possibile accedere liberamente da una funzione all'altra nel sistema | In Oops, i dati non possono spostarsi liberamente da un metodo all'altro, possono essere mantenuti in pubblico o privato in modo da poter controllare l'accesso ai dati |
Dati nascosti | In pop, modo così specifico per nascondere i dati, quindi un po 'meno sicuro | Fornisce l'occultamento dei dati, molto più sicuro |
Sovraccarico | Non possibile | Funzioni e sovraccarico dell'operatore |
Linguaggi di esempio | C, VB, Fortran, Pascal | C ++, Python, Java, C # |
Astrazione | Utilizza l'astrazione a livello di procedura | Utilizza l'astrazione a livello di classe e oggetto |
Principi di programmazione orientata agli oggetti
La programmazione orientata agli oggetti (OOP) si basa sul concetto di objects piuttosto che azioni, e datapiuttosto che logica. Affinché un linguaggio di programmazione sia orientato agli oggetti, dovrebbe avere un meccanismo che consenta di lavorare con classi e oggetti, nonché l'implementazione e l'uso dei principi e dei concetti fondamentali orientati agli oggetti, ovvero ereditarietà, astrazione, incapsulamento e polimorfismo.
Comprendiamo in breve ciascuno dei pilastri della programmazione orientata agli oggetti:
Incapsulamento
Questa proprietà nasconde dettagli non necessari e semplifica la gestione della struttura del programma. L'implementazione e lo stato di ogni oggetto sono nascosti dietro confini ben definiti e ciò fornisce un'interfaccia pulita e semplice per lavorare con essi. Un modo per ottenere ciò è rendere privati i dati.
Eredità
L'ereditarietà, chiamata anche generalizzazione, ci consente di catturare una relazione gerarchica tra classi e oggetti. Ad esempio, un "frutto" è una generalizzazione di "arancia". L'ereditarietà è molto utile dal punto di vista del riutilizzo del codice.
Astrazione
Questa proprietà ci permette di nascondere i dettagli ed esporre solo le caratteristiche essenziali di un concetto o di un oggetto. Ad esempio, una persona alla guida di uno scooter sa che premendo un clacson viene emesso un suono, ma non ha idea di come il suono sia effettivamente generato premendo il clacson.
Polimorfismo
Poly-morfismo significa molte forme. Cioè, una cosa o un'azione è presente in diverse forme o modi. Un buon esempio di polimorfismo è il sovraccarico del costruttore nelle classi.
Python orientato agli oggetti
Il cuore della programmazione Python è object e OOP, tuttavia non è necessario limitarsi a utilizzare l'OOP organizzando il codice in classi. L'OOP si aggiunge all'intera filosofia di progettazione di Python e incoraggia un modo pulito e pragmatico di programmazione. OOP consente anche di scrivere programmi più grandi e complessi.
Moduli vs classi e oggetti
I moduli sono come i "dizionari"
Quando si lavora sui moduli, tenere presente i seguenti punti:
Un modulo Python è un pacchetto per incapsulare codice riutilizzabile.
I moduli risiedono in una cartella con estensione __init__.py file su di esso.
I moduli contengono funzioni e classi.
I moduli vengono importati utilizzando il file import parola chiave.
Ricorda che un dizionario è un file key-valuepaio. Ciò significa che se hai un dizionario con una chiaveEmployeID e vuoi recuperarlo, dovrai usare le seguenti righe di codice:
employee = {“EmployeID”: “Employee Unique Identity!”}
print (employee [‘EmployeID])
Dovrai lavorare sui moduli con il seguente processo:
Un modulo è un file Python con alcune funzioni o variabili al suo interno.
Importa il file che ti serve.
Ora puoi accedere alle funzioni o alle variabili in quel modulo con "." (dot) Operatore.
Considera un modulo denominato employee.py con una funzione in esso chiamata employee. Il codice della funzione è riportato di seguito:
# this goes in employee.py
def EmployeID():
print (“Employee Unique Identity!”)
Ora importa il modulo e quindi accedi alla funzione EmployeID -
import employee
employee. EmployeID()
Puoi inserire una variabile in essa denominata Age, come mostrato -
def EmployeID():
print (“Employee Unique Identity!”)
# just a variable
Age = “Employee age is **”
Ora accedi a quella variabile nel modo seguente:
import employee
employee.EmployeID()
print(employee.Age)
Ora confrontiamo questo con il dizionario -
Employee[‘EmployeID’] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable
Si noti che esiste un modello comune in Python -
Prendi un key = value contenitore di stile
Prendi qualcosa dal nome della chiave
Quando si confronta il modulo con un dizionario, entrambi sono simili, tranne per quanto segue:
Nel caso di dictionary, la chiave è una stringa e la sintassi è [chiave].
Nel caso di module, la chiave è un identificatore e la sintassi è .key.
Le classi sono come i moduli
Il modulo è un dizionario specializzato che può memorizzare codice Python in modo che tu possa accedervi con "." Operatore. Una classe è un modo per prendere un raggruppamento di funzioni e dati e inserirli in un contenitore in modo da potervi accedere con l'operatore ".".
Se devi creare una classe simile al modulo dipendente, puoi farlo utilizzando il seguente codice:
class employee(object):
def __init__(self):
self. Age = “Employee Age is ##”
def EmployeID(self):
print (“This is just employee unique identity”)
Note- Le classi sono preferite ai moduli perché puoi riutilizzarle così come sono e senza troppe interferenze. Mentre con i moduli, ne hai solo uno con l'intero programma.
Gli oggetti sono come le mini-importazioni
Una classe è come un file mini-module e puoi importare in modo simile a come fai per le classi, usando il concetto chiamato instantiate. Tieni presente che quando crei un'istanza di una classe, ottieni un fileobject.
Puoi istanziare un oggetto, in modo simile alla chiamata di una classe come una funzione, come mostrato -
this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age
Puoi farlo in uno dei seguenti tre modi:
# dictionary style
Employee[‘EmployeID’]
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)