Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta
Xiaomi Pad 8 Pro adotta il potente Snapdragon 8 Elite all'interno di un corpo con spessore di soli 5,75 mm e pannello LCD a 144Hz flicker-free, per un tablet che può essere utilizzato con accessori dedicati di altissima qualità. Fra le caratteristiche esclusive, soprattutto per chi intende usarlo con la tastiera ufficiale, c'è la modalità Workstation di HyperOS 3, che trasforma Android in un sistema operativo con interfaccia a finestre
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-09-2008, 16:21   #1
lore_83
Member
 
Iscritto dal: Jul 2006
Messaggi: 242
[Php] Quali sono i vantaggi dell'OOP?

Ciao.
Sto programmando con PHP5, quindi object oriented, un'applicazione web.
Volevo capire: quali vantaggi comporta l'utilizzo delle classi e quindi degli oggetti?
Sono un novello del campo e non riesco acomprendere i vantaggi di questo tipo di gestione delle funzioni (o metodi per meglio dire negli oggetti) rispetto a funzioni classiche. Ossia per tutti gli esempi che leggo mi viene da dire: servivano le classi per farlo?

Ad esempio ho letto da una parte: "Il metodo normalmente agisce sugli attributi della classe", quindi vuol dire che ogni volta che istanzio un oggetto devo "per forza" definire degli attributi oppure sono un pir*a perché utilizzo inutilmente le classi (ossia per me gli attributi sono inutili visto che richiamo il metdo all'esterno e passo i valori dalle variabili del codice esterno)?

Io le uso così generalmente:

Codice PHP:
class NomeClasse {
 function 
pippo($parametri) {
  
//istruzioni...
 
}
 
}
$ciccio 3;
$var = new NomeClasse;
$pluto $var->pippo($ciccio); 
Forse è il caso di usare il costruttore ogni volta che si istanzia un oggetto, fare agire quindi automaticamente i metodi per dare dei valori agli attributi di quello specifico oggetto così poi tramite un'istanza si utilizzano direttamente gli attributi senza più richiamare i metodi all'esterno???

Boh, fatemici capire qualcosa...magari facendo il confronto con le classiche funzioni.

Si accettano anche link per spiegazioni più approfondite.

Grazie.

Ultima modifica di lore_83 : 13-09-2008 alle 16:36.
lore_83 è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2008, 19:21   #2
avastreg
Senior Member
 
L'Avatar di avastreg
 
Iscritto dal: Sep 2007
Messaggi: 316
sarò breve ed inesatto, ma cerco di definirti il concetto generale: avendo le classi puoi creare oggetti complessi modellati come vuoi tu (cosa che con gli array non puoi fare, anche se associativi). La chiave secondo me sta nelle funzioni che hanno gli oggetti e che ti permettono maggiore flessibilità in quanto a serializzazione, ricorsività, etc...
avastreg è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 14:43   #3
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da lore_83 Guarda i messaggi
Ciao.
Sto programmando con PHP5, quindi object oriented, un'applicazione web.
Volevo capire: quali vantaggi comporta l'utilizzo delle classi e quindi degli oggetti?
Per rispondere a questa domanda sono state scritte milioni di pagine in altrettanti libri riguardanti la OOP.

Nello specifico visto che PHP è un linguaggio web, puoi organizzare i siti secondo il pattern N-tier (dove N=3 nella maggior parte dei casi), ovvero un layer che legge i dati da db, un layer che vi applica sopra le regole di business tipo validazione, oppure che scompone una macro funzionalità in azioni più piccole, che applica il caching ecc e il layer di presentazione ovvero quello che crea l'html.

Inoltre personalmente, in PHP mi sono scritto delle classi che implementano i vari layout più comuni (3 colonne, 2 colonne) per cui tutte le volte invece di riscrivere il css e il codice della pagina semplicemente specializzo quelle che ho già scritto.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 15:02   #4
lore_83
Member
 
Iscritto dal: Jul 2006
Messaggi: 242
Intanto grazie ad entrambi per le risposte.
Però rimango ancora perplesso sul fatto che non comprendo dove gli oggetti abbiano dei vantaggi rispetto allo sviluppo con funzioni.

Faccio l'esempio del mio sito:
ho creato delle classi per aree di funzionalità, ad esempio la classe A si occupa dell'utente (iscrizione nel db, prelevamento dati...), la classe B si occupa di un sistema di votazione ecc...
Ora ogni volta che serve una funzione per l'utente, istanzio un oggetto sulla classe A e prendo su i metodi di cui ho bisogno (utilizzo oggetti singleton in generale per istanziare un oggetto), cosa che potrei fare tranquillamente con delle funzioni e non con metodi di una classe.
Quindi, perché usare gli oggetti? E soprattutto come usarli per sfruttare al meglio le sue potenzialità (anche per un utente medio come me)?

Grazie.
lore_83 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 15:12   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
partiamo dal presupposto che per imparare l'OOP hai decisamente scelto il linguaggio sbagliato

capisco le necessità, l'enorme comunità di PHP, nonché il fatto che qualunque host web gratuito ormai ti da' sempre le solite cagate di PHP e MySQL, ma sto linguaggio fa schifo; per ulteriori informazioni vedi YourLanguageSucks

ma a parte PHP, i vantaggi della OOP sono innegabili: chiaramente tutto si può fare anche senza, tutto si può fare anche in C e anche in assembly, ma un linguaggio orientato agli oggetti rende la vita estremamente più semplice offrendoti un gran numero di meccanismi sintattici che ti permettono di ridurre molto il codice che scrivi. in sostanza vedila in questo modo: il compilatore ti offre altri meccanismi sintattici che puoi sfruttare e che i linguaggi non orientati agli oggetti non offrono.

l'esempio che cito sempre quando faccio questo discorso è quello delle funzioni virtuali, che costituiscono un sistema di puntatori a funzioni.
in un linguaggio OO puoi realizzare complesse gerarchie di classi, ciascuna con molti metodi virtuali e molti override, mentre per realizzare la stessa cosa in C dovresti o riempire il codice di selection statements (grossi switch, catene di if, e porcate a non finire) o reimplementarti da solo il tuo sistema di puntatori a funzioni (ti perderesti in mezzo agli asterischi ); in entrambi i casi il codice diventa molto più grosso.

l'esempio dell'incapsulazione invece (ovvero il fatto che certi campi siano incorporati in un oggetto passato come parametro implicito a tutte le funzioni che lavorano su quei campi) è un meccanismo che ti permette praticamente di eliminare un parametro ad ogni funzione che scrivi; sembra una sciocchezza, di certo è un esempio molto meno eclatante del precedente, ma quando lavori su progetti grossi e arrivi a ritrovarti funzioni con 10 (dieci) parametri t'assicuro che conta anche quello

Ultima modifica di 71104 : 14-09-2008 alle 15:14.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 15:39   #6
lore_83
Member
 
Iscritto dal: Jul 2006
Messaggi: 242
Grazie molte, tutto abbastanza chiaro.

Quindi l'utilizzo dell'OOP in un linguaggio come PHP per applicazioni web non è una svolta epocale nel mondo del web come molti lasciano intendere, o sbaglio?

Io non capisco dove accidenti dovrei inserire attributi e costanti nelle mie classi per fare 4 cose abbastanza semplici (interazione col database fondamentalmente per inserimenti, prelevamenti). In una programmazione web non ci sono calcoli complicati, ricorsivi o che so io!

Se sto dicendo follie i consigli sono ben accetti, anzi gli esempi sono mooolto graditi!!!!
lore_83 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 15:47   #7
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da 71104 Guarda i messaggi
partiamo dal presupposto che per imparare l'OOP hai decisamente scelto il linguaggio sbagliato

capisco le necessità, l'enorme comunità di PHP, nonché il fatto che qualunque host web gratuito ormai ti da' sempre le solite cagate di PHP e MySQL, ma sto linguaggio fa schifo; per ulteriori informazioni vedi YourLanguageSucks
Beh dal punto di vista sintattico può essere però prendiamo in esame le alternative:
ASP.NET ovvero l'opposto di quello che dovrebbe essere la programmazione web. Troppo astratto dal livello su cui deve lavorare, se poi ci sono problemi ci metti un crocione su e via: tipo può capitare che firewall, proxy o antivirus corrompano il ViewState di una pagina e che tu lato server non possa gestire questa situazione, consiglio della microsoft: disabilitare tutto!
Certo te fai un sito destinato a migliaia di persone e avvisi: "Questo sito è usabile solo disabilitando Firewall Proxy e Antivirus!"
Ah giusto si può anche disabilitare il ViewState, prova a programmare in ASP.NET senza ViewState e rimpiangerai i capricci sintattici del PHP.
JSP: ci ho rimesso le mani su dopo parecchio tempo secondo me UCAS all'ennesima potenza, avevo 23 pagine chiamate login.jsp ognuna richiamata tramite il rewrite scritto da qualche parte nel progetto. Rimane lo spaghetti code del PHP con in più l'incomprensibilità alla massima potenza.

Le altre alternative sono praticamente impraticabili.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 17:50   #8
nico159
Senior Member
 
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
Quote:
Le altre alternative sono praticamente impraticabili.
Python? Ruby?
__________________
In a world without fences, who needs Gates?
Power by: Fedora 8 - Mac OS X 10.4.11
nico159 è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2008, 17:55   #9
lore_83
Member
 
Iscritto dal: Jul 2006
Messaggi: 242
Python e Ruby vanno bene quanto volete, ma io sto parlando di altro

La questione per quanto mi riguarda rimane aperta:

la filosofia degli oggetti è quella di creare delle classi per area di funzionalità nelle quali inserire proprietà (attributi) ed operazioni (metodi) i quali dovrebbero operare sugli attributi stessi della classe (e quindi inizializzandoli/modificandoli), oppure i metodi vanno usati per generare dei 'return' al codice chiamante (quindi come semplici funzioni e allora le classi sarebbero inutili...)?

Ossia, le classi servono solo per una buona organizzazione del codice?

Faccio un confronto:

Ipotizziamo che $pluto sia una caratteristica importante di NomeClasse (ad esempio NomeClasse = Casa, $pluto = estensione)

CASO 1
Codice PHP:
class NomeClasse {
function 
pippo($parametri) {
 
$pluto 5*$parametri;
 return 
$pluto;
}

}
$ciccio 3;
$var = new NomeClasse;
$pluto $var->pippo($ciccio); 
oppure

CASO 2
Codice PHP:
class NomeClasse {
var 
$pluto;
function 
setPluto($parametri) {
 
$this->pluto 5*$parametri //esempio idiota...
}

}
$ciccio 3;
$var = new NomeClasse;
$var->setPluto($ciccio); 
Avete qualche esempio da mostrare (ad esempio relativo alla gestione utente), tanto per farsi un'idea?

Ultima modifica di lore_83 : 15-09-2008 alle 08:30.
lore_83 è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2009, 20:53   #10
The Incredible
Senior Member
 
Iscritto dal: Nov 2001
Messaggi: 6139
diciamo che le stesse cose che fai con oop puoi farle con i procedurali..
sta tutto nel capire e utilizzare al meglio le due "campane"
The Incredible è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2009, 21:02   #11
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Quote:
Originariamente inviato da The Incredible Guarda i messaggi
diciamo che le stesse cose che fai con oop puoi farle con i procedurali..
sta tutto nel capire e utilizzare al meglio le due "campane"
C'è roba che farla coi procedurali è pura pazzia però, il che la taglia fuori da molti gradi di bravura.

Voglio vedere io a fare un gioco da milioni di righe di codice, senza nemmeno l'ereditarietà per dire che un soldato "rosso" si comporta come uno "blu"

IMHO l'OOP è semplicemente fondamentale, non c'è nessun motivo, e nessun ambito, che la rende inutile.... so che ci sono ambiti che non la supportano, ma è solo per carenza di performance IMHO.
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2009, 21:53   #12
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Why OO Sucks
shinya è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
ASUS ROG Swift OLED PG34WCDN recensione: il primo QD-OLED RGB da 360 Hz ASUS ROG Swift OLED PG34WCDN recensione: il prim...
L'IA ha fatto incetta anche di processor...
Affidabilità delle GPU NVIDIA cro...
Maxi incendio in un parcheggio BYD: fiam...
Apple potrebbe diventare il terzo produt...
L'IA aiuta i computer quantistici con i ...
Nutanix Database Platform è ora i...
iliad lancia il 5G Standalone in Italia:...
Alexa+ da oggi disponibile anche in Ital...
SpaceX Starship: Ship 39 ha eseguito il ...
Auto usate: Peugeot 3008 tra le peggiori...
YMTC, il produttore di memorie 100% cine...
I gamer rinunciano alla RAM ma non agli ...
Oltre 100 estensioni Chrome malevole rub...
Multi Frame Generation 5x e 6x anche su ...
Kraken sotto ricatto dopo due accessi in...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v