Una definizione che può rendere l'iea del perchè scegliere la programmazione OO rispetto alla procedurale è che con gli oggetti tu modellizzi il mondo reale, mentre con le procedure no
Es.
Classe "Cliente". La classe Cliente è un modello che rappresenta il cliente. Questa classe, quando viene "inizializzata", ha una serie di caratteristiche che, tipicamente, sono proprietà (variabili e costanti), metodi o comportamenti (funzioni) e messaggi.
Esempio.
Cliente ha le seguenti proprietà: ID, Nome, Cognome, Codice fiscale, Partita IVA, Città di residenza, Indirizzo di residenza, Telefono.
Cliente ha i seguenti metodi: ricerca_da_idUnivoco, ricerca_da_codiceFiscale.
Cliente ha i seguenti messaggi: recupera_fatture, recupera_pagamenti
Cosa significa tutto questo? Significa che se nel tuo programma hai bisogno di gestire un Cliente, userai la tua Classe Cliente, inizializzandola e chiamando (mandando) i metodi (messaggi) appropriati.
(PRECISAZIONE: metodi e messaggi hanno delle piccole sfumature concettuali, nella programmazione OO pura, ma in php possiamo definirli equivalenti)
$cliente = new Cliente();
A questo punto hai un oggetto Cliente (una istanza della classe Cliente) inizializzato (per semplicità lo inizializziamo "vuoto": ID = "", Nome = "", Cognome = "", Codice fiscale = "", Partita IVA = "", Città di residenza = "", Indirizzo di residenza = "", Telefono = "").
Ora dobbiamo recuperare le informazioni.
$cliente->ricerca_da_idUnivoco(87);
Ora la nostra istanza di Cliente ha recuperato le info per il clietne 87 e ha valorizzato le sue proprie proprietà (ID = 87, Nome = "mario", Cognome = "rossi", Codice fiscale = "mrrss14e96l421d", Partita IVA = "123456789012", Città di residenza = "roma", Indirizzo di residenza = "piazza regio 7", Telefono = "06987654").
Ora vogliamo ricercare le sue fatture
$cliente->recupera_fatture();
Il messaggio recupera_fatture istanzia una classe Fatture e chiama un metodo (di Fatture!) che esegue tutte le funzioni necessarie.
Il vantaggio di questo approccio è che tutti i metodi di Cliente sono definiti nella classe Cliente, così come le sue proprietà eccetera. Tutti i metoi, messaggi ecc di Fatture sono definiti nella classe Fatture e così via, evitandoti quindi di doverti ricordare come diamine hai chiamato quella funzione per l'anagrafica e come quella per le fatture: semplicemente si chiameranno tutti ricerca_da_idUnivoco
Inoltre, se c'è un problema con le funzioni del Cliente (es: non recupera correttamente l'indirizzo), dovrai preoccuparti solo di quel metodo di quella classe, tralasciando tutto il resto del programma e soprattutto modificando SOLO in un punto (il metodo incriminato) e senza doverti riguardare tutto il programma.
Altro vantaggio è che puoi "specializzare" le classi.
Se nel programma esiste già una classe "MezzoDiTrasporto" che ha come proprietà i dati di posizione, velocità, destinazione e carico utile, e occorre una nuova classe "Aereo", è possibile crearla direttamente dall'oggetto "MezzoDiTrasporto" dichiarando una classe di tipo "Aereo" che eredita da "MezzoDiTrasporto" e aggiungendovi anche il dato "Quota di crociera", con il vantaggio che la nuova classe sarà sia un "Aereo" che un "MezzoDiTrasporto", permettendo di gestire in modo omogeneo tutti i mezzi con una semplice lista di "MezziDiTrasporto".
Questo ovviamente semplificando un (bel) po' le cose.
Per approfondimenti: http://it.wikipedia.org/wiki/Program...a_agli_oggetti