Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
differenza tra classe e oggetto....
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
freemind
Supervisor sezione Programmazione
Supervisor sezione Programmazione


Registrato: 04/04/07 20:28
Messaggi: 4643
Residenza: Internet

MessaggioInviato: 02 Apr 2011 15:19    Oggetto: Rispondi citando

In volata (poi risponderò anche a SverX)...
Dunque, la programmazione ad oggetti è nata per far fronte alla complessità sempre maggiore dei programmi.
Se non esistessero l'ereditarietà, l'override e altre cosine, la classe sarebbe di fatto solo una scatola che contiene metodi e proprietà. Invece con tutto quello che è stato costruito la classe e quindi poi gli oggetti istanziati, rappresentato entità complesse con un comportamento vero e proprio.
Devi immaginare la classe tutta insieme e non solo come involucro.

Ora, pigliando i tuoi esempi: da quello che vedo Clock secondo me è una classe statica che tu usi senza istanziare perchè l'orologio di sistema è uno solo e non possono essercene due.
Una classe statica è una classe che contiene almeno un metodo statico o una proprietà statica: statica significa che tutte le istanze della classe condividono quella proprietà o quel metodo.
Una classe che contiene tutti metodo e tutte proprietà statiche non potrà essere istanziata ma dovrà essere usata, permettimi il termine, direttamente.
Scrivere "Clock.Hour" vuol dire accedere alla proprietà statica Hour della classe Clock, quindi tu in questo momento stai usando la classe Clock (nessun oggetto!) e vuoi vedere il valore di quella proprietà.
Idem con Math.

Tu hai a disposizione queste classe perchè il framework che usi le mette a disposizioni, se non ci fossero sei tu che dovresti scriverle quando ti servono.
E' chiaro che la classe è per sua natura portabile quindi diventa semplice creare una libreria da usare nei vari programmi.
A differenza delle semplici funzioni che diventano più difficili da portare in giro man mano che la loro complessità cresce.
Per portabilità intendo che tu scrivi la tua classe e poi la usi secca nei programmi; se questa deve essere adattata non andrai a cambiare il suo codice ma dovrai estenderla.
Un buon programma è fatto in modo che le modifiche successive (a meno di cambi nel core) sia fatte solo estendendolo e non modificandolo.
Uno dei best practice dell'oop afferma che una volta che un metodo è scritto questo non dovrà più esser cambiato a meno che non cambi lui stesso il suo comportamento.
Deve essere però aperto alle estensioni.

Comunque senza star qui a divagare, per rispondere bene alla tua domanda:
Clock.Hour è un oggetto? No, Clock è una classe e Hour è una sua proprietà.
Se invece (e qui piglio php per far prima) scriviamo:
Codice:

class Pippo
{
public $nome;
public $cognome;
public function __construct($n,$c)
{
$this->nome=$n;
$this->cognome=$c;
}
}

...

$p=new Pippo('Ciccio','Pasticcio');

print $p->nome;


nel codice qui sopra $p è un oggetto e $p->nome una sua proprietà.

Pensa ad una classe come ad un qualcosa che ti permette di modellare qualunque concetto reale e non.
Top
Profilo Invia messaggio privato
franco.ab
Dio minore
Dio minore


Registrato: 17/11/08 11:52
Messaggi: 666

MessaggioInviato: 02 Apr 2011 17:31    Oggetto: Rispondi

ok...in effetti non c'era scritto che clock.hour è un oggetto,c'era solo scritto che clock è una classe con delle proprietà...io ho immaginato che clock.hour potesse essere un oggetto.
Grazie dei chiarimenti....ciao
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi