Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    L'oggetto è un elemento caratterizzato da attributi e funzioni.
    La classe è il contenitore di quelle caratteristiche (definite dal programmatore).

    Riprendendo l'esempio di Platone:
    - la classe è l'iperuranio (o almeno così mi pare si chiami)
    - l'oggetto è l'idea
    In terra (cioè nel programma principale) noi vediamo la rappresentazione reale dell'idea (oggetto) assegnando un determinato valore ad ogni caratteristica dell'idea (oggetto).

  2. #12
    Più o meno ci ho capito qualcosa.
    Ritorniamo all'esempio della bicicletta che forse è più semplice.

    Classe bicicletta [Funzioni]
    Avanti
    destra
    sinistra

    Classe bicicletta [variabili]
    num ruote
    colore
    marcie

    $x = new bicicletta();

    $x sarebbe la bicicletta di Marco (Quindi applico le regole generali srabilite da me nella classe bicicletta ad una bicicletta specifica)

    Ora che succede?

  3. #13
    Originariamente inviato da VaLvOnAuTa
    L'oggetto è un elemento caratterizzato da attributi e funzioni.
    La classe è il contenitore di quelle caratteristiche (definite dal programmatore).

    Riprendendo l'esempio di Platone:
    - la classe è l'iperuranio (o almeno così mi pare si chiami)
    - l'oggetto è l'idea
    In terra (cioè nel programma principale) noi vediamo la rappresentazione reale dell'idea (oggetto) assegnando un determinato valore ad ogni caratteristica dell'idea (oggetto).

    assolutamente no .. l'oggetto non è che la mera istanza della classe ... è la classe che possiede i metodi, mentre le proprietà appartengono all'oggetto.

    è possibile invocare un metodo di classe anche senza creare un oggetto ( classname::method() ), purche questo metodo non faccia uso di proprietà, perchè queste non sono definite se non al momento della istanziazione

    secondo me questo paragone al mondo platonico porterà a sola confusione, una cosa è una analogia altra una forzatura.. occhio
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  4. #14
    Me ne sono accorto e per questo ho ripreso l'esempio della bicicletta! Se poi hai un esempio migliore fallo perchè credo proprio che serva!
    Cmq grazie a tutti e due! Un po' con il vostro aiuto un po' applicandomi molto di più sull'articolo sto cominciando a capirci qualcosa! Grazie!

  5. #15
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da drAlberT
    assolutamente no .. l'oggetto non è che la mera istanza della classe ... è la classe che possiede i metodi, mentre le proprietà appartengono all'oggetto.

    è possibile invocare un metodo di classe anche senza creare un oggetto ( classname::method() ), purche questo metodo non faccia uso di proprietà, perchè queste non sono definite se non al momento della istanziazione

    secondo me questo paragone al mondo platonico porterà a sola confusione, una cosa è una analogia altra una forzatura.. occhio
    Hai ragione effettivamente l'esempio dell'idea platonica era un pò una forzatura.
    E' che le idee non ce l'ho chiarissime e quindi non mi risulta facile spiegare

  6. #16
    Io trovo molto valido l'esempio che tu stesso hai introdotto su questo 3d, quello dell'uomo.

    classe uomo{

    //costruttore, nella vita reale sarà "nascita()" ma nella programmazione ha lo stesso nome della classe

    function uomo(){
    }
    //cosa fa il costruttore nella vita reale? Non si limita a "partorire un bambino", ma anche a dargli qualcosa che gli consenta di vivere (un neonato non saprà parlare ma sa respirare, sa mangiare il latte ecc.)
    cosi il costruttore in informatica. Ci sono volte in cui non è necessario usarlo (si richiama quello vuoto di default), altre in cui è indispensabile. Pensa se ti crei una classe che gestisce un database.. come fai a chiamare i vari metodi se prima non ti connetti a questo db? Ecco allora una cosa che potrebbe fare il costruttore: connettersi al db -prendi questo esempio moooooooolto alla larga, nella realtà la connessione viene spesso fatta prima ancora di creare un oggetto ma intanto ti rende l'idea

    function scrivi(){
    }
    //una persona fa mlte cose: parla, mangia, legge, corre, muove.. cosi la tua classe

    var occhi;
    //ci sono variabili che sono fondamentali per la vita dell'oggetto, un pò come il costruttore, e difatti il costruttore alla fine non fa altro che inizializzare queste variabili.
    Le variabili di classe sono le sue caratteristiche. Nella vita reale, un neonato ha già delle proprietà: occhi, peso, capelli ecc. che nella vita cambieranno o magari, come gli occhi, rimarranno costanti.
    Stessa cosa per l'informatica.

    ora sulla base di queste infarinature che stai ricevendo, prenditi una classe di uno script abbastanza semplice che trovi online e comincia a guardarla in quest'ottica

  7. #17
    riproviamo colla bici :-)
    (php4)

    Codice PHP:
    class bici
    {
      var 
    $owner '';
      var 
    $color '';

      
    //costruttore
      
    function bici($o='')
      {
        if (!empty(
    $o))
          
    $this->owner $o;
      }

      function 
    setColor($c)
      {
         
    $colors = array('red''green');
         if (!
    in_array($c$colors)) {
           
    trigger_error('colore non valido'E_USER_ERROR);
           return 
    FALSE;
         }
         
    $this->color $c;
      }
      
      function 
    pedala()
      {
         return 
    eseguelapedalata();
      }

    la classe bici ha delle proprietà: proprietario e colore e
    2 metodi + il costruttore (metodo che viene invocato automaticamnete all'atto della creazione di una istanza, oggetto ... il costruttore è un metodo che abbia lo stesso nome della classe in cui è dichirato) un metodo e un metodo di classe (che non usa proprietà)
    Codice PHP:
    // faccio una pedalata "generica"
    bici::pedala();

    $mia = new bici('AlberT');
    $tua = new bici('pippo');

    $mia->setColor('red')
    $tua->setColor('green');

    //la tua bici verde pedala
    $tua->pedala();

    //creo una copia dell'oggetto
    $mia2 = &$mia;
    //la copia $mia non esiste +
    unset($mia);
    // il reference count dell'oggetto $mia è 0 quindi il
    // garbage collector di PHP lo distrugge; 
    // la classe esiste comunque
    unset($mia2); 
    la cosa carina è che puoi usare l'ereditarietà per creare oggeti derivati e specializzati, una bici ammortizzata è sempre una bici, quindi perchè non prendere la bici e dargli un ammortizzatore?

    Codice PHP:
    class fs_bici extends bici
    {
       var 
    has_full_suspension=TRUE;
    }

    $mia = new fs_bici('AlberT');
    $mia->color='red'// ora ho una bici biammortizzata rossa!
    $mia->pedala(); 
    mi sono stufato di dire sempre che la bici è mia?

    Codice PHP:
    class albert_bici extends fs_bici
    {
      function 
    albert_bici()
      {
        
    $this->setColor('red');
        
    $this->owner 'AlberT';
      }
    }

    $bici = new albert_bici();
    // ora ho una bici biammortizzata rossa e di AlberT!
    $mia->pedala(); 
    spero sia utile e non crei confusione ulteriore
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

  8. #18
    Infatti, è quello che sto facendo. Grazie per la spiegazione. Avevo già capito abbastanza ma ora credo di aver capito del tutto il procedimento. O meglio, ho imparato a leggere una classe ma sono lontano dal saperla progettare. Credo che a questo punto debba ricominciare da capo!
    Quando ho imparato il php sapevo come funzionava, conoscevo il codice ma non avevo la minima idea di come si progettasse uno script. Adesso lo so. Con la OOP però cambia tutto e devo cominciare da zero!
    Ma non fa niente! Ci sono riuscito una volta egregiamente, ci riusciro anche una seconda volta meglio di prima!
    Grazie ancora a tutti! Ciao!

  9. #19
    hai ragione tu. le classi sono una roba abbastanza "platonica"... applicarle a dei progetti reali è tuttaltro che facile. o meglio: se hai intenzione di gestire tramite classi un qualcosa che già di per se si può considerare un oggetto allora è facile, altrimenti affatto! rispiego: se vuoi progettare una libreria, una classe da usare come "utility" in uno script (astrazione database, gestione template, email) allora è facile. ma se vuoi basare un intero progetto sulle classi almeno per me è difficile non poco.

    scaricati qualche classe dal web per studiarle.

  10. #20
    Allora non sono solo io! Almeno questo! E' una consolazione, credimi! Mi hai rincuorato moltissimo!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.