Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente
Google Pixel Watch 5 ha affinato una formula già convincente con hardware più veloce, Gemini offline e nuovi strumenti per sport e benessere. Abbiamo provato la versione LTE da 41 mm, comoda anche di notte e ben proporzionata sui polsi piccoli. Il design resta un punto di forza, ma l'autonomia premia ancora il 45 mm e alcune funzioni AI non sono disponibili in Italia: ecco che cosa cambia rispetto a Watch 4 e quale formato conviene scegliere oggi
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo
Politica, accademia e industria a confronto su mercato unico, sicurezza e competitività. Nei laboratori di Vimercate, Nokia ha mostrato le nuove generazioni di chip ottici e i test che ogni prodotto deve superare prima di arrivare sul mercato
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi
Abbiamo assemblato e provato la Fiido Nomads Pro, evoluzione del modello da trekking già presente nella gamma, che migliora in tutto, soprattutto grazie al motore centrale, fluido e potente. Ottima app, costruzione solida e prezzo ok completano il quadro
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


Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
In sella alla Fiido Nomads Pro: e-bike con motore centrale da 100 Nm per il divertimento a 360 gradi In sella alla Fiido Nomads Pro: e-bike con motor...
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
Ray-Ban Meta Audio: arrivano gli occhial...
Apple TV 4K: chip A19, CPU più veloce de...
Il mercato console sprofonda: i rincari ...
Apple Home Collection: videocamere 2,5K,...
Apple presenta HomeView, il nuovo hub do...
Apple HomePod mini 2 arriva in Italia: a...
SFSCON 2026: la sovranità digital...
Cooler Master GPU Shield arriva in Europ...
Wolters Kluwer Tax & Accounting pote...
NVIDIA accelera il DLSS 5: il nuovo mode...
Character.ai in bancarotta, Disney pront...
realme passa a ColorOS 17 con Android 17...
OPPO presenta ColorOS 17: più flu...
Giochi PS2 su smartphone Android: ARMSX2...
Ecco il nuovo tool semplificato per alle...
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: 00:34.


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