Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [oop] quando e perchè usare le interfaccie

    prediligendo la procedurale non riesco a capire a cosa serve creare un interfaccia e poi usare il comando implements..

    cioè che utlità ha specificare un interface andando a scrivere dentro dei metodi pubblici vuoti che poi dovrò scrivere nella mia classe..

    non capisco...


    l'esempio che fa il php.net:

    // Declare the interface 'iTemplate'
    interface iTemplate
    {
    public function setVariable($name, $var);
    public function getHtml($template);
    }

    // Implement the interface
    // This will work
    class Template implements iTemplate
    {
    private $vars = array();

    public function setVariable($name, $var)
    {
    $this->vars[$name] = $var;
    }

    public function getHtml($template)
    {
    foreach($this->vars as $name => $value) {
    $template = str_replace('{' . $name . '}', $value, $template);
    }

    return $template;
    }
    }

  2. #2
    beh tanti...

    i più banali:
    1) Una classe può estendere (anche per logica) una sola altra classe, mentre può implementare più interfacce. Se avessi necessità di avere funzioni di due "classi" diverse come faresti senza le interfacce?! (anche se detta così è da spararsi)

    2) Se una classe implementa una interfaccia sei sicuro che tutti i metodi di quella interfaccia devono essere implementati, altrimenti avrai un errore. Mentre per l'estensione di classi questo non è vero poichè puoi avere classi astratte, parziali, etc

    3) Può essere utile creare delle interfacce di "tag" solo per indicare che la classe che implementa quella particolare interfaccia ha determinate caratteristiche

    ma questi sono tre banali motivi, xò ce ne possono essere una marea...
    Administrator of NAMDesign.Net

  3. #3
    Originariamente inviato da LeaderGL
    beh tanti...

    i più banali:
    1) Una classe può estendere (anche per logica) una sola altra classe, mentre può implementare più interfacce. Se avessi necessità di avere funzioni di due "classi" diverse come faresti senza le interfacce?! (anche se detta così è da spararsi)
    comunque non lo puoi fare con le interfacce perchè come detto sopra le interfacce contengono solo il nome delle eventuali funzioni (il codice lo devi scrivere poi nella classe)

    2) Se una classe implementa una interfaccia sei sicuro che tutti i metodi di quella interfaccia devono essere implementati, altrimenti avrai un errore. Mentre per l'estensione di classi questo non è vero poichè puoi avere classi astratte, parziali, etc
    questo è l'unico motivo ma non mi sembra un motivo cosi valido


    ma questi sono tre banali motivi, xò ce ne possono essere una marea...
    l'unico motivo a me sembra essere il secondo che hai detto, come ho detto nel post iniziale, quindi alla fine sono quasi inutili queste interfacce...

    aspetto altri

  4. #4
    Un interfaccia è solo un
    modello di riferimento per
    le classi che la implementano.
    http://books.google.com/books?id=qVL...&hl=it#PPP1,M1

    pag 51



    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    in soldoni non serve a molto


    probabilmente sarà usata solo in progetti molto grandi per non rischiare di sbagliare



  6. #6
    Beh io credo che stimare l'utilità di un qualcosa solo in termini di quanto codice ti può far risparmiare è decisamente riduttivo.

    Il pregio delle interfaccie ovviamente non è questo, visto che non contengono codice. Ma sul lato sicurezza ed organizzazione del codice sono una gran cosa.

    Ti permettono di evitare parecchi grattacapi. Forse in php non se ne vedono neanche tutti i vantaggi però in altri linguaggi di programmazione (vedi java) ti risolvono parecchi potenziali errori in fase di runtime perchè ti vengono mostrati in compilazione, ad esempio.
    Administrator of NAMDesign.Net

  7. #7
    se non mi sbaglio, le interfacce hanno l'utilità dell'istruzione OPTION EXPLICIT che c'era in Visual Basic: se la attivavoi eri costretto a dichiarare tutte le variabili di ogni genere prima di usarle, altrimenti venivano create al primo utilizzo. La loro utilità stava nel fatto che se utilizzavi una variabile prima della dichiarazione con OPTION EXPLICIT attivato il porgramma non veniva neanche compilato.
    Parimenti, se si dichiarano le interfacce PHP e poi si usa una forms sballata (ad esmepio in una interface io dichiaro la function PIPPO ($val1, $val2) e io la chiamo con PIPPO($val1) la pagina non v iene neanche caricata e viene subito daqto l'errore, non quando si incontra la function senza averlka dichiarata con interface.

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.