Oppure

Loading
29/03/11 15:49
russoandrea96
Ciao a tutti,non riesco proprio a capire l'OOP il fatto è che non riesco a "pensare in OOP" potete darmi dei consigli o dei semplici esempi?
aaa
30/03/11 13:03
Il Totem
C'era una domanda molto simile nella sezione java. Prova a fare una ricerca.
aaa
11/05/11 12:49
per esempio:
tu hai la classe torta: è lo stampino possiamo dire, da li tu puoi o fare una torta con la forma al cioccolato o alla marmellata dello stampino o creare una classe crostata che è una torta, ma con qualcosa i più.
ora ti faccio l'esempio:
class Torta:                 nome della classe
    def __init__(slef,gusto=cioccolato):  se un parametro è eguagliato a una cosa
            self.gusto=gusto                    è il valore di default

    def getGusto(self):
            return self.gusto

questa è una banale torta:
cioc=Torta()
mar=Torta("marmellata alle prugne")

posso anche creare una crostata così:
class Crostata(Torta):
      def __init__(self,gusto=cioccolato,righe):
           self.gusto=gusto
           self.righe=righe

ora:
c1=Crostata("cigliegia",5)   ok
c2=Crostata()                  no, la variabile righe la devo dare
c1.getGusto()                  cigliegia                     

anche se la classe crostata non ha il metodo(funzione propria di una classe) getGusto, derivando da Torta eredita tutti i suoi metodi.

Crostata e Torta sono classi
c1 è un oggetto Crostata
getGusto è un metodo di Torta, quindi ance di Crostata.

il metodo __init__ è più particolare, è il costruttore(un metodo che parte in automatico appena crei l'oggetto.) infatti se io metto dei parametri alla chiamata
(c1=Crostata("cigliegia",5)),
questi sono dichiarati presso __init__,
(def __init__(self,gusto=cioccolato,righe):)
non all'inizio della classe, dova al limite metto la classe da cui eredita questa.
class Crostata(Torta):
quindi:
class Crostata(Torta):                     tra parentesi la classe genitore
      def __init__(self,gusto=cioccolato,righe):    argomenti da dare alla
           self.gusto=gusto                              alla costruzione dell'oggetto
           self.righe=righe


self invece è se stesso, riferito all'oggetto.
per farti capire, le persone dicono io, io ho due braccia.
l'oggetto persona dice self.braccia=2

class Persone:
      def __init__(self):
           self.braccia=2
           braccia=5

qual è la differenza?
class Persone:
      def __init__(self):
           self.braccia=2
           braccia=5

x=Persone()
print x.braccia            2
print braccia               5


self lo devi mettere come primo parametro di ogni metodo, e verrà inviato in automatico:
class ciao:
     def bla(self):
         pass
     def miao(self):
         self.bla()          per richiamare un metodo da dentro la classe si usa self
         self.bla("buongiorno")

la prima chiamata è giusta, la seconda ti darà un errore per il fatto che hai passato al metodo 2 parametri.

ora leggi il capitolo delle classi qui:
python.it/doc/Howtothink/…
così capirai bene l'uso degli oggetti e dei metodi.

spero di essere stato chiaro a spiegare!
ciao! :k: