Newsgroup: it.comp.os.linux.development
Titolo: Classi

Qualche luminare mi sa spiegare una volta per tutte cosa sono e soprattutto
cosa servono ste benedette classi?
Cercando in rete, non si ottengono altro che astrazioni astruse che non
fanno altro che aumentare la confusione in testa.
Possibile che il concetto non si possa chiarire con una spiegazione del
tipo: ho questa cosa che si chiama così e fà così e serve per questo?
Magari un esempio di programma  python (per favore non tradotto
dall'americano come
quelle fetenzie dei manuali) servirebbe più di tante parole, a patto che sia
didatticamente significativo ...
Scusate lo sfogo ...
Alberto

Mi dispiace...avevo fatto un papiello di documentazione per spiegartele, ma
era caduta internet e quando ho inviato ho perso tutti i dati! :-((
I'm sorry
--------------------------------
Inviato via 
http://usenet.libero.it

Acc.! ma non è rimasta nessuna traccia del prezioso manoscritto?
Alberto


No perchè poi è scaduta la sessione e mi ha anche richiesto
l'autenticazione!!!
Mi dispiace


 ha scritto nel messaggio
news:cjfbq-...@adhara.e4a.it...

Non sono un luminare, quindi se vuoi ignora il resto. Ti posso dire pero'
come la vedo io.
Senza esempi in python che non lo conosco, sorry,
Le classi si usano nei linguaggi orientati agli oggetti.
In tali linguaggi si usano gli oggetti; gli oggetti sono entita' ben
distinte l'una dall'altro, un po' come le persone.
Le classi sono un modo per descrivere le caratteristiche comuni a un insieme
di oggetti omogenei.
Facendo il parallelo col mondo reale:
- te, io e tutti i partecipanti al newsgroup potremmo essere considerati
oggetti
- la classe "persone" potrebbe descrivere i caratteri principali comuni a
tutti gli oggetti (le persone, appunto)
- gli oggett sono istanze particolari di una classe, cosi' come tu sei una
istanza ben definita di persona, distinta da tutte le altre.
- tramite la classe si descrivono le caratteristiche comuni a tutti gli
oggetti che ne fanno parte; questo tramite
  * attributi
  * metodi
In pseudo codice:
class persone {
    string nome;
    integer età;
    costruttore(string n, integer e) {
        nome = n;
        età = e;
    }
    method presentati() {
        stampa("Il mio nome è " + nome + " e ho " + età + " anni.");
    }
}
Cosi' diciamo che tutte le persone hanno un nome e un'età.
In piu' diamo alle persone la possibilita' di presentarsi.
Il costruttore serve al momento della creazione di un oggetto
Istanziando la classe "persone" otteniamo gli oggetti:
io = new(persone,"Ema",27);
tu = new(persone,"Alby",23);
A questo putno possiamo anche farli presentare:
io.presentati();
E' vero che tutte le persone hanno un nome e n'età, ma è anche vero che il
mio nome è Ema, il tuo Alby, ecc...
Gli oggetti quindi diventano entità distinte.
Le classi hanno tante cose utili, ad esempio il fatto dell'ereditarietà.
Se a questo punto voglio definire una nuova classe "programmatore", siccome
so che un programmatore e' una persona posso definire una sottoclasse di
persone, per cui non devo ripetere il fatto che anche i programmatori hanno
un nome e un'età.
class programmatore subclass of persone {
    string linguaggio;
}
Cosi' dico che, oltre alle altre cose, tutti i programmatori conoscono un
linguaggio.
potrei ancora fare
io = new(programmatore,"Ema",27)
e usare il metodo
io.presentati().
Il discorso e' lungo, ci sarebbero tante cose da dire. Ma per un discorso
esaustivo (e soprattutto ordinato, coerente e corretto) e' meglio consultare
un libro.
Io ho lanciato un sassolino nello stagno.
Ciao,
Ema

Ok chiaro, ma queste funzioni le posso ottenere anche con un package: dove
sta la convenienza delle classi?
Alberto


 sta la convenienza delle classi?
Un package è solo un contenitore logico. Una classe è un contenitore
sintattico, oltre che logico.
+++
Il mio consiglio spassionato è leggersi un libro sulla programmazione
orientata agli oggetti. Thinking in Java, di Eckel, è un buon inizio.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)           [ 
http://digilander.libero.it/ebassi/
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 snip >
 
Non hai capito la spiegazione di 'Pensare da scienziato' ?
Lo trovi su www.python.it... non credo di poter fare di meglio...
Ciao,
	Nicholas
 

Alberto
una classe ha metodi d'istanza, cioč metodi che vewngono richiamati
sugli oggetti stessi.
Pensa ad un sistema che stampa a schermo qualcosa:
approccio C-like:
stampa_int(i)
stampa_double(d)
stampa_stringa(s)
e uno stampa_* per ogni tipo di struct che hai definito.
approccio OO:
i.stampa()
d.stampa()
s.stampa()
struct.stampa()
non stai solamenta nascondendo all'utente i dettagli implementativi:
stai anche mostrandogli un metodo chiaro e coerente per fare cose
simili in maniera simile.

 ha scritto nel messaggio
news:fv8cq-...@adhara.e4a.it...

Non so cosa sia un package... ma ti permette anche l'ereditarieta'?
Boh.
L'idea delle classi e dei linguaggi a oggetti e' una filosofia di
programmazione.
Una filosofia ad alto livello (dico io), che forse e' di piu' facile
comprensione e apprendimento rispetto al paradigma imperativo (tipico del c)
o ancora peggio al paradigma funzionale (tipico di ml e lisp).
Ciao,
Ema

 soprattutto cosa servono ste benedette classi?
www.bruceeckel.com
. Scaricati "Thinking in Java" e leggi. Nei primi
capitoli tratta la programmazione ad oggetti. Ciao!
-- 
Andrea Bergia - studente              Linux Registered User #281550