Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - OOP?
Forum - Python - OOP?

Avatar
russoandrea96 (Normal User)
Newbie


Messaggi: 19
Iscritto: 20/08/2010

Segnala al moderatore
Postato alle 17:49
Martedì, 29/03/2011
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?

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
2
Down
V
Segnala al moderatore
Postato alle 15:03
Mercoledì, 30/03/2011
C'era una domanda molto simile nella sezione java. Prova a fare una ricerca.

PM
Avatar
()
Newbie


Messaggi:
Iscritto:

Up
1
Down
V
Segnala al moderatore
Postato alle 14:49
Mercoledì, 11/05/2011
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:
Codice sorgente - presumibilmente Python

  1. class Torta:                 nome della classe
  2.     def __init__(slef,gusto=cioccolato):  se un parametro è eguagliato a una cosa
  3.             self.gusto=gusto                    è il valore di default
  4.  
  5.     def getGusto(self):
  6.             return self.gusto


questa è una banale torta:
Codice sorgente - presumibilmente Plain Text

  1. cioc=Torta()
  2. mar=Torta("marmellata alle prugne")


posso anche creare una crostata così:
Codice sorgente - presumibilmente Python

  1. class Crostata(Torta):
  2.       def __init__(self,gusto=cioccolato,righe):
  3.            self.gusto=gusto
  4.            self.righe=righe


ora:
Codice sorgente - presumibilmente Plain Text

  1. c1=Crostata("cigliegia",5)   ok
  2. c2=Crostata()                  no, la variabile righe la devo dare
  3. 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:
Codice sorgente - presumibilmente Python

  1. class Crostata(Torta):                     tra parentesi la classe genitore
  2.       def __init__(self,gusto=cioccolato,righe):    argomenti da dare alla
  3.            self.gusto=gusto                              alla costruzione dell'oggetto
  4.           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

Codice sorgente - presumibilmente Python

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


qual è la differenza?
Codice sorgente - presumibilmente Python

  1. class Persone:
  2.       def __init__(self):
  3.            self.braccia=2
  4.            braccia=5
  5.  
  6. x=Persone()
  7. print x.braccia            2
  8. print braccia               5



self lo devi mettere come primo parametro di ogni metodo, e verrà inviato in automatico:
Codice sorgente - presumibilmente Python

  1. class ciao:
  2.      def bla(self):
  3.          pass
  4.      def miao(self):
  5.          self.bla()          per richiamare un metodo da dentro la classe si usa self
  6.          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:
http://www.python.it/doc/Howtothink/HowToThink_ITA.pdf
così capirai bene l'uso degli oggetti e dei metodi.

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

PM