Visualizzazione dei risultati da 1 a 6 su 6

Discussione: polimorfismo

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555

    polimorfismo

    Il codice che segue l'ho preso da un manuale e logicamente funge. Il mio dubbio è: c'è una classe padre e le altre che la estendono e poi una funzione che serve a richiamare il tutto.

    Se invece di fare una classe padre si facessero due classi lasciando poi sempre la stessa funzione per richiamarle non si risparmierebbe codice?

    E' giusto un dubbio per districarmi nella OOP.

    codice:
    class animale{
      function prova(){
    
      }
    
    }
    
    class gatto extends animale{
      function prova(){
      print "miao" ;
      }
    
    }
    
    class cane extends animale{
      function prova(){
      print "bau" ;
      }
    
    }
    
    
    function visualizza($obj){
    $obj->visualizza() ;
    }
    
    
    // richiamo dal programma con 
    
    visualizza(new gatto()) ;

  2. #2
    Secondo me l'esempio è troppo semplice e giustamente ti fa nascere dei dubbi...
    prova a vedere il codice in questo modo:

    Codice PHP:
    class animale{
      var 
    $verso;

      function 
    setVerso($v){
        
    $this->verso $v;
      }

      function 
    getVerso() {
        return 
    $this->verso;
      }

    }

    class 
    gatto extends animale{

      function 
    __construct() {
        
    parent::setVerso('miao');
        echo 
    parent::getVerso();
      }

    }

    class 
    cane extends animale{
      function 
    __construct() {
        
    parent::setVerso('bau');
        echo 
    parent::getVerso();
      }


    La classe Animale contiene dei metodi e delle proprieta (campi) che sono globali (il verso dell'animale). Le classi figlie ereditano questi metodi e vi possono accedere.

    spero di aver spiegato bene.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Si grazie è chiaro in entrambi i casi, unica cosa come dici tu i dubbi sono parecchi.

    A me verrebbe da creare due classi con metodi che poi richiamo tramite una funzione, forse l'estensione delle classi la si vede bene in progetti grandi, dico l'utilità.

    grazie mille

  4. #4
    Sicuramente un'applicazione sviluppata tramite la OOP contiene più codice.
    Il vantaggio sono la scalabilità delle soluzioni e il riuso di classi e metodi.

    A parte il fatto che non capisco perchè usi quella funzione visualizza...
    Stabilite le classi, ti basta un semplice:

    $oggetto = new NomeClasse();

    e puoi accedere a tutti i metodi... con:

    $oggetto->metodo();

  5. #5
    in progetti medio/grandi (ma neanche tanto medi), la OOP è fondamentale perchè, se ben realizzata, ti permette tutto quello che ti ha detto devil... in sostanza, se c'è un problema o una correzione, le modifiche apportate dovrebbero, con buona oop, incidere poco sul programma e causare 0 o tendenzialmente 0 nuovi bug portati dalla modifica.

    detto questo, l'esempio del manuale serve solo a spiegarti il concetto del polimorfismo. L'oop non è solo polimorfismo, ereditarietà, e classi, è molto di piu ci sono innumerevoli pattern che si possono applicare per risolvere problematiche e mille scuole di pensiero su come/quando/cosa/dove applicare questi pattern... ti servirà l'esperienza

    quindi se ti interessa la oop usala anche in progetti piccoli/piccolissimi, almeno ti impratichisci
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    555
    Ok grazie, gentilissimi. Qualcosa mi è + chiaro, certo passare dalla procedurale all'OOP è un pò un dramma.

    Quella funzione visualizza l'ho provata perchè c'era nel manuale ma come dite voi effettivamente una volta istanziata la classe poi accedo a tutti i metodi che voglio.

    grazie

    ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.