Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Programmazione Orientata agli Oggetti in WordPress : Ereditarietà I

by
Length:MediumLanguages:
This post is part of a series called Object-Oriented Programming in WordPress.
Object-Oriented Programming in WordPress: Document The Plugin II
Object-Oriented Programming in WordPress: Inheritance II

Italian (Italiano) translation by Piergiorgio Sansone (you can also view the original English article)

Una delle cose più difficili quando si scrive una serie per principianti, sulla programmazione ad oggetti è sapere quando fermarsi.

Ci sono cosi tanti argomenti da vedere, che in ultima analisi  possiamo lentamente iniziare a muoverci verso tecniche di programmazione avanzata, rinunciando a ciò che esattamente la nostra missione aveva previsto : di armare i principianti, con una serie di strumenti, strategie, e la comprensione dei concetti iniziali.

In primo luogo, si noti che nell'ultimo post della serie, abbiamo completato il nostro plugin utilizzando tecniche orientate agli oggetti. Per la maggior parte della serie, ha incapsulato tutto ciò che abbiamo trattato fino a  questo punto (tranne, ovviamente, ereditarietà).

A tal fine, assicuratevi di recuperare il ritardo sui seguenti articoli:

  1. L'introduzione
  2. Le Classi
  3. I Types
  4. Le Strutture di Controllo : Istruzioni Condizionali
  5. Le Strutture di Controllo : I Cicli
  6. Funzioni ed Attributi
  7. L'Ambito di applicazione (scopo)
  8. Costruire il Plugin I
  9. Costruire il Plugin II
  10. Documentare il Plugin I
  11. Documentare il Plugin II

E' molto, lo so, ma rammenta : l'obbiettivo della serie è preparare i principianti con tutto il necessario per poter lavorare con PHP e scrivere plugin WordPress utilizzando tecniche di programmazione ad oggetti.

A questo scopo, ho deciso di aggiungere a questa serie i seguenti due articoli (con un terzo finale riepilogativo) che offrono un seguito al prossimo argomento dello sviluppo per gli aspiranti programmatori PHP: L'ereditarietà

Ancora una volta, per coloro che sono programatori più esperti,l'ereditarietà non costituisce un obbiettivo finale; Tuttavia, se sei un principiante, l'ereditarietà è uno dei concetti che è facile da afferrare, un po' più difficile da implementare (che ci crediate o no), e che può causare ancora più confusione quando si tratta di argomenti come il polimorfismo (di cui parleremo più avanti)

Nei prossimi due articoli, il mio scopo sarà trattare quanto  suddetto insieme al codice di esempio a suo sostegno Ma prima di vedere le risalite del codice, penso che sia importante comprendere  l'importanza del concetto di guardare alcuni dei passaggi necessari per preparare il codice orientato agli oggetti per l'ereditarietà.

In questo articolo, definiremo l'ereditarietà , provando a formulare un modello concettuale di cosa effettivamente avviene, esamineremo le sfumature di ciò che conosciamo come classi base e sottoclassi, così come alcune delle parole chiave riservate del linguaggio che deve essere regolato in modo da supportare l'ereditarietà attraverso le classi.

Così con questo, impostata la nostra roadmap per l'articolo, andiamo avanti ad iniziare.

Definizione di Ereditarietà

A differenza di un numero di altri termini di programmazione, l'ereditarietà  in realtà  è una parola che descrive abbastanza bene il suo concetto. Direttamente da Wikipedia:

Nella programmazione orientata agli oggetti (OOP), l'ereditarietà è quando un oggetto o classe si basa su un altro oggetto o classe, utilizzando la stessa implementazione. È un meccanismo per il riutilizzo del codice. Le relazioni di oggetti o classi tramite ereditarietà danno luogo a una gerarchia.

Relativamente chiaro, non è vero? Ma penso che possiamo fare di meglio.

In precedenza in questa serie, abbiamo parlato di come molti dei più comuni linguaggi di programmazione utilizzasse esempi come animali e veicoli come un modo per dimostrare il concetto di programmazione object-oriented.

Dopo tutto, l'idea di base della programmazione orientata agli oggetti non è che noi dovremmo essere modellare gli oggetti del mondo reale? Beh, un po'. Ma quante volte avete visto un Blog_Post? reale.

Esattamente.

Come tale, mi piace sempre provare a mettere le cose nella prospettiva di qualcosa che sia molto più tangibile, più pratico, e  più strettamente correlata al contenuto che effettivamente creeremo.

Detto questo, qual è il modo adeguato con cui possiamo descrivere l'ereditarietà nel contesto della programmazione orientata agli oggetti che non faccia naufragare  il concetto attraverso l'uso di esempi banali?

Prova questo:

L'ereditarietà è quando una classe funge da classe padre per una classe figlio che fornisce un numero di attributi e metodi comuni per il padre e il figlio; Tuttavia, il figlio ha la capacità di introdurre anch'esso gli attributi.

Nella citazione sopra, stiamo usando un paio di termini come "classe padre" e "classe figlio", che ognuno dei quali ci potrà chiarire in un po ', ma il punto è che si può letteralmente creare una gerarchia di classi che ereditano informazioni dalle loro classi padre.

Forse anche più ordinato, ogni volta che si lavora con una classe figlio e si desidera sfruttare gli attributi e le funzioni definite nella classe padre o la classe di base, è possibile farlo facilmente con alcun codice aggiuntivo.

Ma stiamo andando troppo avanti da soli. Prima di farlo, facciamo in modo di ottenere un modello concettuale di come appare l'ereditarietà. Dopo tutto, anche se stiamo scrivendo codice, stiamo cercando di fornire un modello che non solo rappresenta un oggetto effettivo, ma crea anche una relazione tra gli oggetti.

Visualizzazione dell' ereditarietà

Prima di andare avanti, diamo un'occhiata ad un diagramma di classe molto semplice su come funziona l'ereditarietà.

Si noti che stiamo usando tre classi:
  • Content che fungerà da classe di base e che rappresenta un tipo generico di informazioni che contiene i dati per altri, più specifici tipi di contenuto.
  • Comment che rappresenta un commento su un post del blog. Questa classe contiene informazioni che eredita da Content e che definisce in sé.
  • Post eredita anche da Content che rappresenta una sigolo post del blog. Esso contiene informazioni generali sul Content, ma contiene anche le proprie informazioni specifiche per tale classe.

Ora, questo è chiaramente un esempio semplificato di ereditarietà, ma al suo interno si tratta di come funziona l'ereditarietà. In un prossimo articolo, daremo un'occhiata a come creare  istanze, all'accesso ai dati ed anche a come funzionano altre caratteristiche.

Ma in primo luogo, dobbiamo ancora chiarire alcuni termini e assicurarsi che abbiamo tutte le informazioni adeguate.

La Classe Jargon

Come abbiamo accennato all'inizio di questa serie, ci sono una serie di termini che abbiamo usato che sono chiave per comprendere come i vari pezzi dell' ereditarietà interagiscono tra loro.

A tal fine, è importante definire alcune definizioni comuni per le parole che stiamo usando non solo a causa di come le stiamo usando nell'articolo perché non solo le vedremo utilizzate qui, ma verranno utilizzate altrove indifferentemente in altri articoli in tutto il web:

  • Una classe padre, detta anche una classe di base, è la classe dalla quale altre classi  ereditano informazioni come dimostrato nella figura sopra. Mantiene un set di proprietà e funzioni.
  • Si noti che alcune delle funzioni che sono disponibili nella classe base lo sono per le terze classi, le classi figlio, o solo all'interno della base stessa classe.
  • La classe del figlio, in genere è chiamata la sottoclasse, ed è la classe che eredita la funzionalità, dati e informazioni dalla sua classe padre.
  • Guarderemo il codice su questo argomento nel prossimo post; Si noti tuttavia che l'accesso ai dati va solo in un modo. Cioè, sottoclassi possono accedere alle informazioni nella loro classe di base, ma le classi di base non sono consapevoli delle loro sottoclassi.

Questo dovrebbe chiarire un sacco di terminologia intorno a questo; Tuttavia, se non, pensate in termini di, diciamo, un albero genealogico dove avete genitori e figli. I bambini ereditano tratti dai loro genitori, ma i genitori non ereditano tratti dai loro figli.

Si noti inoltre che, nella programmazione, alcuni sviluppatori desiderano introdurre quello che ha chiamato "ereditarietà multipla", che sostanzialmente significa che una singola classe può ereditare la proprietà e i metodi da più classi.

Non solo è questo è un limite del PHP, ma è anche fuori della portata di questa particolare serie.

Una digressione per le classi astratte

Per coloro che hanno  più familiarità  con il concetto di ereditarietà, allora probabilmente ne hanno anche con il concetto di classi astratte.

Poi di nuovo, se hai familiarità con il concetto di classi astratte, deduco che non sei un principiante e non rientri nel target di pubblico che stiamo raggiungendo come destinatario per il contenuto con questo articolo.

Così in base ai  feedback su questo articolo e questa serie,   se gli altri sono interessati, forse potremmo fare un articolo di follow-up o un paio di articoli che coprano  questo argomento in modo puntuale.

Prossimi appuntamenti...

Nel prossimo articolo, continueremo la nostra discussione su ereditarietà come diamo uno sguardo a come implementarlo all'interno di PHP. Daremo anche un'occhiata a come le sottoclassi possono accedere ai dati dai loro genitori, e come classi padre possono proteggere informazioni all'interno di se stesse

Nel frattempo, assicuratevi di lasciare eventuali commenti, domande o commenti sull'ereditarietà nel commento feed e cercherò di affrontarle qui o nel prossimo post.

Fino ad allora!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.