Perché programmare a oggetti

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Ho deciso di aprire questa discussione dopo aver visto quest'altra, dove borgo esprimeva alcune sue perplessità riguardo la programmazione ad oggetti.
Dato che questo paradigma è oggettivamente migliore della programmazione procedurale, vi invito a fare ogni domanda riguardo l'utilità dell'OOP qui, e io tenterò di rispondere.

Iniziamo da borgo, dunque.

ad oggetti devi scrivere più codice
Questo non è sempre vero. Invece è sempre vero che i vantaggi della programmazione ad oggetti sono enormi rispetto all'eventuale svantaggio dato dalla maggiore mole di codice.

il codice è meno comprensibile (leggibile)
Per forza: se non sei abituato a leggere codice OOP risulta più difficile leggerlo.

e più difficile da "debuggare"
Potresti fare un esempio?

Metto la discussione in rilievo perché vorrei che diventasse una sorta di "FAQ della programmazione ad oggetti".
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Beh come non quotarti alessandro :)

Aggiungo una cosa:
ad oggetti devi scrivere più codice
Dipende, comunque una volta scritte diverse classi durante il lavoro ti ritroverai molto piu facilitato rispetto al procedurale ripetuto piu volte magari...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
cominciamo dalla prima: codice più lungo
1. la classe va inclusa come anche un file di function (require): una riga
2. la classe va dichiarata: una riga, il file incluso per l'utilizzo della function no: zero righe
3. anche se la classe fosse un semplicissimo echo
echo $pinco->funzione($a) prog. oo
echo funzione($a) prog. proc
4. per creare la la funzione non venite a dirmi che è più corto il sistema oo
class pinco{
public...
public funzione(){
1 riga
}
}
tot 6 righe
rispetto alla function
funzione{
1 riga
}
tot 3 righe
questo intanto per la lunghezza del codice
alla prossima il resto
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Tralasciamo il fatto che con l'autoloading non serve neanche più includere le classi. Il problema è che tu pensi che la programmazione ad oggetti sia solamente un altro modo per definire delle funzioni, mentre non è così: il paradigma ad oggetti implica che il programmatore veda l'applicazione in un modo completamente diverso, non più come una serie di istruzioni eseguita una dietro l'altra, ma come un insieme di entità che interagiscono tra loro per raggiungere uno scopo comune.

E, nuovamente, la lunghezza del codice è assolutamente trascurabile (direi che non può neanche essere considerato uno svantaggio) se la si paragona ai vantaggi dati dall'OOP.
 
Ultima modifica:

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
Eccomi..... parlo per esperienza personale.

Anzitutto voglio precisare che per una persona che da zero vuole programmare ad oggetti in Php il percorso non è facile. Comunque dalla mia esperienza dico che:

-Lasciate perdere chi consiglia di studiare direttamente un framework in Php, lascereste la programmazione dopo 5 minuti.

-La prima cosa da fare è studiarsi un po' di sintassi, vanno bene sia i tascabili (quelli da 7 euro) che le varie guide che si trovano sul web.

-Una volta capita la sintassi (un paio di settimane) studiatevi la teoria ad oggetti. Anche in questo caso chi affronta lo studio la prima volta gli sembrerà arabo, ma non mollate alla fine sono concetti semplici.

-Una volta capita abbastanza bene la teoria ad oggetti comprate un manuale sul Php ad oggetti. Fate molta attenzione perchè PHP non ha molti manuali che trattano della programmazione ad oggetti. Fondamentalmente in Italiano ci sono 2 manuali:

1) Php 6 Guida per lo sviluppatore

2) Php per professionisti

Il primo è molto avanzato, ma con tanta buona volontà e tenacia si dovrebbe riuscire a studiarlo.

Il secondo mentre è recentissimo (l'ho scoperto pochi giorni fa) e benchè anch'esso avanzato sembra sia molto più fattibile del primo.

Oltre a questo la programmazione richiede tanto tanto tanto impegno e tanti tanti esercizi. Si avanza poco alla volta e tra mille difficoltà, ma se si tiene dura è fatta!

Ps: Da quello che sto vedendo la programmazione ad oggetti produce un codice molto più pulito rispetto a quello procedurale.
 

marco_rx

Utente Attivo
19 Dic 2010
129
0
0
Ciao, ma Php 6 Guida per lo sviluppatore tratta la versione 6 del linguaggio oppure gli argomenti si possono applicare anche alla 5? Perchè avevo intenzione di prenderlo però dato che lo sviluppo di php6 si è fermato non sapevo cosa fare.
 

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
Ciao, ma Php 6 Guida per lo sviluppatore tratta la versione 6 del linguaggio oppure gli argomenti si possono applicare anche alla 5? Perchè avevo intenzione di prenderlo però dato che lo sviluppo di php6 si è fermato non sapevo cosa fare.


Tranquillo si tratta sempre della versione 5. E' un titolo markettaro più pubblicitario che altro. Comunque il manuele tratta argomenti abbastanza avanazati. Tu a che livello sei?
 

marco_rx

Utente Attivo
19 Dic 2010
129
0
0
Sono in grado di sviluppare piccole applicazioni non troppo complesse, ma mi interessa approfondire il paradigma OO, TDD, gestione degli errori e simili.
Cercavo qualcosa che avesse anche degli esercizi, dici che quel libro può fare al caso mio?
Leggendo qualche recensione ho visto che molti lo sconsigliano.
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Eccomi..... parlo per esperienza personale.

Anzitutto voglio precisare che per una persona che da zero vuole programmare ad oggetti in Php il percorso non è facile. Comunque dalla mia esperienza dico che:

-Lasciate perdere chi consiglia di studiare direttamente un framework in Php, lascereste la programmazione dopo 5 minuti.

-La prima cosa da fare è studiarsi un po' di sintassi, vanno bene sia i tascabili (quelli da 7 euro) che le varie guide che si trovano sul web.

-Una volta capita la sintassi (un paio di settimane) studiatevi la teoria ad oggetti. Anche in questo caso chi affronta lo studio la prima volta gli sembrerà arabo, ma non mollate alla fine sono concetti semplici.

-Una volta capita abbastanza bene la teoria ad oggetti comprate un manuale sul Php ad oggetti. Fate molta attenzione perchè PHP non ha molti manuali che trattano della programmazione ad oggetti. Fondamentalmente in Italiano ci sono 2 manuali:

1) Php 6 Guida per lo sviluppatore

2) Php per professionisti

Il primo è molto avanzato, ma con tanta buona volontà e tenacia si dovrebbe riuscire a studiarlo.

Il secondo mentre è recentissimo (l'ho scoperto pochi giorni fa) e benchè anch'esso avanzato sembra sia molto più fattibile del primo.

Oltre a questo la programmazione richiede tanto tanto tanto impegno e tanti tanti esercizi. Si avanza poco alla volta e tra mille difficoltà, ma se si tiene dura è fatta!

Ps: Da quello che sto vedendo la programmazione ad oggetti produce un codice molto più pulito rispetto a quello procedurale.
Aggiungo che quando hai capito il concetto se in futuro uno avrà in mente di studiare altri linguaggio con lo stesso paradigma tipo il C# o il Java
si troverà subito bene, in quanto una volta adattatosi alla sintassi potrà tranquillamente sviluppare seguendo questo paradigma
 

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
Sono in grado di sviluppare piccole applicazioni non troppo complesse, ma mi interessa approfondire il paradigma OO, TDD, gestione degli errori e simili.
Cercavo qualcosa che avesse anche degli esercizi, dici che quel libro può fare al caso mio?
Leggendo qualche recensione ho visto che molti lo sconsigliano.

Ma hai sviluppato sempre con il procedurale? Io il libro l'ho comprato. Lo sconsigliano per 2 motivi fondamentali:

1)Tratta di postgresql. In verità questo db è forse il migliore in campo open ma se uno guarda alla diffusione allora è ovvio che quello che va è mysql. Comunque non c'è problema, nel manuale viene trattato anche pdo e orm che permettono l'astrazione dei db, così puoi usare il db che vuoi.

2)Tratta del framework ulisses, un framework sconosciuto e sprovvisto di documentazione (è disponibile solo a pagamento). Ma puoi benissimo saltare quel capitolo e studiare symfony.

Il manuale è fondamentalmente per lo sviluppo professionale, tratta di agomenti abbastanza complessi che non si fanno dall'oggi al domani. Però se uno con calma lo studia riesce ad arrivare ad un buon livello.

Ps: Dai uno sguardo anche a PHP Per professionisti. E' anch'esso ottimo ma non avanzato come il primo.
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Salve, volevo esprimere una mia opinione:

Sono pro alla O.O.P. poiché mi ha portato indubbiamente dei vantaggi anche nella realizzazione di piccole applicazioni sia in tempo che in "inutili ripassi";
Immaginando di dover racchiudere tutte le proprie conoscenze per sviluppare uno o più siti web, tramite la O.O.P. si potrebbe realizzare una classe dove poter inserire le nostre funzioni; una volta sviluppate queste funzioni, si potrebbe ereditare tale classe ed eventualmente sviluppare ed implementare le funzioni (a sua volta ereditate) con le nostre nuove conoscenze.

Ovviamente tutto si potrebbe fare anche sfruttando solamente le funzioni, ma la o.o.p. penso che sia solo un modo per manipolare meglio le funzioni; tutto questo quindi si traduce per logica in un notevole risparmio di tempo che ho potuto notare anche di persona.
 

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
Concordo! Però devo dire che imparare la programmazione ad oggetti è una bella faticaccia. Quando vai ad affrontare argomenti come UML, PDO, ORM,MVC,Framework ecc. le prime volte è una bella "botta". Ma bisogna tener duro ed andare avanti con tanta volontà ed impegno
 

chris83

Nuovo Utente
12 Giu 2013
3
0
0
Personalmente sono favorevole alla oop.
Nella programmazione procedurale se serve una funzione più volte in punti diversi del programma bisogna riscriverla ogni volta, mentre con la oop si scrive una classe una volta per tutte con i suoi metodi (le funzioni) e bastano 3 righe di codice per richiamare la classe e instanziarla con un oggetto...il risparmio di righe di codice è evidente...

Sul fatto che sia ostico da apprendere, è relativo...per quella che è la mia esperienza, non ho mai fatto studi "accademici" di programmazione, tutto quello che so l'ho imparato "smanettando" sui codici e chiedendo sui forum...per imparare la oop ho comprato un manuale e me lo sono studiato...credo di aver capito come funziona, adesso riesco riesco a programmare a oop, almeno in modo semplice.
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Sinceramente non ho ancora capito che problema c'è a dichiarare tutte le funzione in "function.php" ed includerlo ad inizio di tutte le pagine... Mi pare una soluzione rapida ed indolore per avere sempre a disposizione tutte le funzioni dichiarate.
 

bismark2005

Utente Attivo
8 Mar 2011
70
0
0
Io sono passato a Java.Imparare Php ad oggetti è impossibile, c'è sempre quel maledetto procedurale dentro
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Non mi pare esattamente un'alternativa Java, è come dire che hai deciso di imparare a guidare una barca a vela perché snowboard era troppo difficile..
 

Fez Vrasta

Utente Attivo
11 Mag 2013
409
0
0
Intendo che sono due linguaggi pensati per lavorare in ambiti diversi nella maggior parte dei casi.

java è per batching server mentre PHP è prevalentemente per generazione contenuti web
 

Nefyt

Utente Attivo
17 Apr 2012
1.102
0
0
Intendo che sono due linguaggi pensati per lavorare in ambiti diversi nella maggior parte dei casi.

java è per batching server mentre PHP è prevalentemente per generazione contenuti web
Con java puoi fare un po di tutto cioè puoi svilupparci applicazioni mobile, per il web, desktop e anche giochi 3d(es. minecraft) è un mondo a parte al php che è mirato esclusivamente allo sviluppo web.
 

f107

Utente Attivo
7 Ago 2012
203
6
18
Roma
Sinceramente non ho ancora capito che problema c'è a dichiarare tutte le funzione in "function.php" ed includerlo ad inizio di tutte le pagine... Mi pare una soluzione rapida ed indolore per avere sempre a disposizione tutte le funzioni dichiarate.

Tralasciando il fatto che alcune volte rimane comoda la programmazione procedurale, immagina di dover fare un programma che deve lavorare con delle entità con degli attributi, metodi ecc...
Se devi lavorare con solo due oggetti te la puoi anche cavare, ma se iniziano ad essere 10, 100, 1000? Salvare tutti gli attributi in variabili array o comunque si voglia risolvere inizia ad essere macchinoso.

Inoltre lavorare con gli oggetti ti permette di "manipolare" l'oggetto stesso, praticamente il programma non è più solo una banale lista in cascata di quello che deve accadere, ma diventa una vera e propria interazione fra oggetti.

Secondo me nel momento in cui inizi ad usarlo per tua necessità, inizierai a capire e sicuramente lo saprai apprezzare :)

Buona notte ragazzi
 
Discussioni simili
Autore Titolo Forum Risposte Data
V [PHP] Perché non funziona ? PHP 1
M Perché Javascript non mi valida questo form? Javascript 0
J Ciao ho bisogno di capire, perché questo form non funziona più sul sito ASP.NET 0
S Non mi funziona la connessione/query mysqli. Ma perché? PHP 1
P Secondo voi Joomla! è meglio di Drupal? Perché? Joomla 9
F Perché usate ASP.net? ASP.NET 21
P Perché devo riavviare il pc per connettermi a internet? Adsl e Connettività 1
A Perché secondo voi questo streaming si blocca? PHP 2
K Perché "session_start" mi cambia l'impaginazione su explorer? PHP 14
S Perché mi restituisce tutti gli users PHP 6
L perché questo programma non funziona? Programmazione 0
G Con Dreamweaver, perché cerca non trova la selezione? Webdesign e Grafica 4
GENZIANA Perché non vedo le mie pagine in locale? PHP 4
L perché cambiano le icone????? Discussioni Varie 8
L programmare senza saper programmare Sviluppo app per Android 7
ken_korn Come vi esercitate a programmare? Programmazione 0
tecniconapoletano [PHP] Open Source o programmare da zero PHP 3
S Programmare iOS Sviluppo app per iOS 0
webmachine Come programmare l'invio di una mail in PHP? PHP 1
JohnnyIbiza021a Programmare area personale per singolo utente PHP 12
filippino Imparare a programmare da zero Programmazione 2
voldemort Per programmare Android bisogna conoscere Java? Sviluppo app per Android 1
M Programmare in php su android Smartphone e tablet 2
R [PAGATO] Cerco programmatore php, java, in grado di programmare dal principio. NO CMS Offerte e Richieste di Lavoro e/o Collaborazione 1
novello88 Iniziare a programmare per Android Sviluppo app per Android 0
A programmare crontab DA uno script php PHP 1
E continuare a programmare in ASP? Discussioni Varie 4
Z Programmare CONTABILITA' PHP 1
N Iniziare a programmare Programmazione 4
LaKanka Meglio programmare artigianalmente o con CRM? PHP 6
B Programmare per Iphone e Mac OsX Programmazione 1
H Quale S.O. migliore per programmare in php ? PHP 0
B Programmare per apple Programmazione 1
O Programmare in C Altri Annunci 0
enzonero programmare in asp Classic ASP 45
P Ciclare tra array di oggetti PHP 1
L creare oggetti da una classe tramite un form Javascript 0
L come visualizzare array di oggetti php PHP 9
W [Javascript] Puntatori Oggetti Javascript 0
M Ottenere i valori di una proprietà su un array di oggetti (es. DIV) in JavaScript Javascript 7
A Contare n° totale oggetti da mysql PHP 5
ggt90 Esercizio javascript sugli array di oggetti Javascript 0
N Problema nel fissare gli oggetti alla pagina in Adobe Muse Mac e Software 5
A Spostare Degli Oggetti in Più PictureBox in VB 6 Presentati al Forum 0
G Siti per affittare oggetti per riprese cinematografiche e/o pubblicità Guadagnare col Sito 0
F Contare le righe con php ad oggetti MySQL 0
Marco_88 Come sostituire valori in un campo per più oggetti. MySQL 2
Marco_88 Aiuto Oggetti da Classe PHP 0
C Dubbio creazione oggetti Javascript 1
G Come analizzare passo a passo un codice PHP ad oggetti mediante un software? PHP 6

Discussioni simili