Concludiamo qui questa serie di post sulla programmazione OOP in PHP. Quelli trattati sono argomenti base dai quali non si può prescindere. Rivediamo però di cosa abbiamo parlato e cosa è rimasto fuori e merita una parolina.
Visualizzazione post con etichetta Concetti OOP. Mostra tutti i post
Visualizzazione post con etichetta Concetti OOP. Mostra tutti i post
martedì 14 gennaio 2014
venerdì 27 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 17 - Side Effect da Serializzazione di un Oggetto (deep clone alternativa)
Abbiamo visto che per mezzo della funzione serialize() si ha la possibilità di trasformare un oggetto in una stringa di testo. Tale stringa è utilizzabile con la funzione unserialize() per ottenere nuovamente l'oggetto.
Tale operazione però può avere degli effetti di cui tenere conto.
Tale operazione però può avere degli effetti di cui tenere conto.
In fase di serializzazione lo stato dell'oggetto e i nomi delle classi necessarie sono trasformate in una stringa. In fase di ricostruzione è allocata della memoria per contenere l'oggetto deserializzato e, se delle sue proprietà sono degli oggetti, ulteriore memoria è allocata per contenere gli oggetti delle proprietà.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
martedì 24 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 16 - Preservare gli oggetti per la durata della sessione
Il PHP è di norma utilizzato come linguaggio per applicazioni web. Ciò significa che il client (un browser) tenta di accedere ad un pagina, il server web riconosce che la pagina è uno script php e lo da in pasto al motore php, quindi l'output prodotto dallo script è trasmesso dal server web al client.
Cosa succede agli oggetti generati dalla nostra applicazione tra una chiamata e l'altra?
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP
lunedì 23 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 15 - Side Effect da Clonazione e Funzione Speciale __clone() (deep clone)
Approfondiamo un momento la clonazione. Con tale operazione ci si aspetta di ottenere due oggetti identici nello stato ma disgiunti l'uno dall'altro. In alcuni casi potrebbe non essere proprio così.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
giovedì 19 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 14 - La Clonazione (shallow clone)
Ora che abbiamo coscienza del side effect delle nostre classi possiamo pensare di risolvere il problema generando ogni volta un nuovo oggetto.
Meglio ancora, visto che abbiamo già scritto tutto il codice, sarebbe bello avere la possibilità di creare un nuovo oggetto partendo da uno esistente. Questa possibilità l'abbiamo grazie all'istruzione clone.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
mercoledì 18 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 13 - Side effect
Negli ultimi posta abbiamo un po' divagato scostandoci da quelli che sono gli argomenti che fondano il nucleo della OOP. E' arrivato il momento di prendere in esame un fattore fino ad ora ignorato. In molte classi, chiediamo degli oggetti come argomenti e memorizziamo tali oggetti all'interno della classe. Tale pratica però può essere controproducente ossia dar luogo a dei side effect, perchè il client (colui che utilizza un oggetto) potrebbe utilizzare lo stesso oggetto come argomento per altre classi o invocarne i metodi modificandone lo stato. In tale circostanza anche l'oggetto memorizzato dalla classe cambia.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP
martedì 17 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 12 - Classi statiche pure
Dal post precedente possiamo osservare una cosa. La classe cCoordinateTrasformabili è una classe strana. Perché? Riguardando il suo codice possiamo notare come non abbia variabili oggetto, se non quelle definite dalla sua genitrice ossia è priva di uno stato proprio. La sua definizione si compone di soli metodi. Tali metodi fanno uso delle variabili oggetto, ma ne sono comunque disgiunti tramite i metodi d'accesso set/get.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
venerdì 13 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 11 - Osservazioni su Interfacce e Classi Astratte o quasi
Nel caso trattato nella parte 10, aggiungendo dei metodi all'interfaccia iFigura abbiamo imposto che una figura debba poter essere rappresentata in un'area di disegno (metodo disegna(\iAreaDiDisegno $oAreaDiDisegno)) e debba poter essere trasformata tramite i metodi trasla, ruota e scala. In tale circostanza abbiamo, delegando tutto alla interfaccia, ossia abbiamo vincolato una figura (classe che implementa iFigura) a dover saper gestire delle trasformazioni. In più le stesse dichiarazioni di metodi di trasformazioni sono presenti uguali nell'interfaccia iCoordinate nono, nonostante la programmazione a oggetti ci dica di raggruppare comportamenti simili tramite ereditarietà.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
mercoledì 11 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 10 - Ampliamo le Funzionalità
Prima di procedere oltre, realizziamo un ampliamento delle funzionalità di alcune classi. in particolare faremo definiremo delle operazioni di trasformazione per l'interfaccia iCoordinate e iFigura. Tali operazioni sono traslazione, scala e rotazione.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
lunedì 9 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 9 - Le Classi Nuovamente al Lavoro
Caso 3 - Delegare una fabbrica di metodi statici alla produzione di Poligoni
La fabbrica in questione non sarà altro che un generatore di oggetti. La sua interfaccia, per adesso dedicata alla produzione di un poligono che sia un rettangolo, potrà essere ampliata con metodi per la produzione di altri poligoni. Questa classe generatrice di oggetti cPoligono sarà come segue:
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
venerdì 6 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 8
Caso 2 - Creazione di un oggetto cRettangolo che non estenda cPoligono
Il secondo caso prevede la creazione di un oggetto cRettangolo che si ponga sullo stesso piano di cPoligono. La classe cRettangolo definisce, come nel caso precedente, un punto d'origine, base, altezza e colore. A questi si aggiunge la richiesta di un oggetto la cui classe implementi l'interfaccia iPoligono. Iniziamo quindi con il definire l'interfaccia iPoligono. Partendo dal codice di cPoligono si tolga tutto ciò che non è un metodo pubblico, e dai metodi pubblici tutto ciò che è implementazione di altre interfacce. Ciò che resta è:
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
giovedì 5 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 7 - Ereditarietà e Costrutto parent::
Riprendendo il codice di test, non si fa altro che disegnare un quadrato. Per farlo però sono state necessarie ben 6 istruzioni. Mentre ne sarebbero dovute occorrere al più due:
- Creazione di oggetto poligono rettangolare per il quale definire un punto d'origine (angolo superiore sinistro), altezza, larghezza e colore
- invocare il metodo di disegno dell'oggetto
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
martedì 3 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 6 - I Trait
Visto che siamo arrivati ad ottenere un risultato funzionante, prima di procedere oltre è il caso di migliorare il nostro codice.Si osservi che esistono due metodi (getColore e setColore) che si ripetono identici in oggetti che hanno la proprietà di possedere un colore. Ciò suggerisce la creazione di una interfaccia implementata dagli oggetti colorabili:
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
lunedì 2 dicembre 2013
La OOP in PHP spiegata in un esempio - Parte 5 - Le Classi al Lavoro
Non resta che implementare una classe concreta per aAreaDiDisegno che chiameremo cAreaDiDisegnoHTML. Tale classe non deve fare altro che implementare il metodo output lasciato astratto dalla genitrice.
A tal fine, volendo implementare il sistema che faccia uso di un * per rappresentare un punto e il tag PRE per popolare l'area di disegno, potremo scrivere:
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
venerdì 29 novembre 2013
La OOP in PHP spiegata in un esempio - Parte 4 - Classi Astratte, Metodi Statici e Costrutto self::
A questo punto occorre definire la classe per l'area di disegno. Nel post precedente abbiamo accennato l'interfaccia per l'area di disegno con i metodi per tracciare i punti e i segmenti. Ma questi non completano l'interfaccia, infatti in fase di descrizione del problema è scritto "avremo bisogno di definire un'area di disegno all'interno della quale inserire le nostre figure, capace di operazioni base quali definire le proprie dimensioni, rappresentare un punto ed al più un segmento. Quindi produrre l'output html per la pagina web". Occorre procedere all'aggiunta dei metodi di accesso alle informazioni di dimensione dell'area di disegno (altezza e larghezza), e un metodo per la produzione dell'output finale.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
giovedì 28 novembre 2013
La OOP in PHP spiegata in un esempio - Parte 3 - Interfacce predefinite e costrutto $this
Affrontate le classi più semplici, passiamo a quelle un po' meno banali. Nel primo post della seria abbiamo parlato di figure. Una figura deve essere rappresentata in un'area di disegno laddove un'area di disegno è in grado di rappresentare un punto e un segmento. Abbiamo quindi due oggetti in cui uno ha bisogno di un'altro per poter funzionare
Iniziamo con il dichiarare le interfacce di questi due elementi:
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
mercoledì 27 novembre 2013
La OOP in PHP spiegata in un esempio - Parte 2 - Le Interfacce
La classe cCoordinate
Ora che è stata realizzata la classe cColore procederemo con la classe cCoordinate. Questa classe è molto simile alla precedente e permette di memorizzare le coordinate sotto forma di coppia di valori x,y.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
lunedì 25 novembre 2013
La OOP in PHP spiegata in un esempio - Parte 1 - Classi e Modificatori d'Accesso (private, protected e public)
Chi inizia a studiare la programmazione a oggetti si sente dire: la programmazione a oggetti consente di modellare elementi del mondo reale come oggetti software. Seguono immediatamente esempi di biciclette, cani, gatti e canarini.
Chi vuole imparare, non desidera favoleggiare su improbabili utilizzi di un paradigma ma piuttosto vedere calato in esempi, quanto più reali possibile, il paradigma oggetto di studio. Se poi all'esempio si affianca una spiegazione sulla programmazione a oggetti, forse otteniamo due risultati in un colpo solo. Per prima cosa è quindi bene effettuare un ripasso sui paradigmi di programmazione. E' un testo breve ma fornisce l'idea di cosa si vuole ottenere con l'introduzione di un nuovo paradigma di programmazione. Può quindi fornire informazioni base su quale strada percorrere, per non incappare nella tentazione di utilizzare un nuovo paradigma come se fosse quello da cui deriva.
Etichette:
Concetti OOP,
Introduzione al PHP,
Lezione PHP,
PHP,
Programmazione
giovedì 2 agosto 2012
PHP 5.4: I Traits
I Traits (tratto in italiano), sono implementati a partire da PHP 5.4, e sono realizzati quale metodo per il riuso del codice.
Il sistema dell'ereditarietà della classi di PHP permette ad un classe genitrice, o superclass, di avere zero, una o più classi figlie, o subclass. Al contrario ogni classe può essere figlia di al più una classe genitrice. Alcune delle limitazioni dovute a questo tipo di gestione dell'ereditarietà, per altro molto diffusa in diversi linguaggi di programmazione, possono essere ridotte grazie ai Trait, che permettono il libero riutilizzo di insiemi di metodi in classi diverse appartenenti a diverse gerarchie.
Un Trait è per certi versi simile ad una classe, ma andrebbe utilizzato solo per raggruppare funzionalità di granularità fine e in modo consistente. Un Trait diversamente da una classe non può essere istanziato, ma è un'aggiunta all'ereditarietà tradizionale che permette una composizione orizzontale di comportamenti; ossia l'applicazione di membri della classe senza necessitare dell'ereditarietà.
Il sistema dell'ereditarietà della classi di PHP permette ad un classe genitrice, o superclass, di avere zero, una o più classi figlie, o subclass. Al contrario ogni classe può essere figlia di al più una classe genitrice. Alcune delle limitazioni dovute a questo tipo di gestione dell'ereditarietà, per altro molto diffusa in diversi linguaggi di programmazione, possono essere ridotte grazie ai Trait, che permettono il libero riutilizzo di insiemi di metodi in classi diverse appartenenti a diverse gerarchie.
Un Trait è per certi versi simile ad una classe, ma andrebbe utilizzato solo per raggruppare funzionalità di granularità fine e in modo consistente. Un Trait diversamente da una classe non può essere istanziato, ma è un'aggiunta all'ereditarietà tradizionale che permette una composizione orizzontale di comportamenti; ossia l'applicazione di membri della classe senza necessitare dell'ereditarietà.
Etichette:
Concetti OOP,
Guida,
Introduzione al PHP,
Lezione PHP
giovedì 19 luglio 2012
Appunti OOP: Paradigmi di programmazione
In questi appunti si analizza il supporto minimo richiesto ai linguaggi di programmazione per i vari paradigmi di programmazione
- Procedurale
- Modulare
- Tipo di Dato Astratto
- Orientata agli oggetti
evidenziando come ognuno sia naturale evoluzione dell'altro.
Iscriviti a:
Post (Atom)


