Visualizzazione risultati 1 fino 10 di 10

Discussione: [PHP] Classi astratte

  1. #1
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito [PHP] Classi astratte

    Le classi astratte devono avere un costruttore? Altrimenti, è comunque buona norma creare il costruttore di una classe astratta?

  2. #2
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    Certo che deve avere un costruttore, è molto più simile ad una classe concreta che ad un'interfaccia

    Inoltre è sempre necessario un costruttore se sono presenti variabili d'istanza per una loro inizializzazione priva di ambiguità

  3. #3
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    e anche un distruttore? come deve essere fatto?

  4. #4
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    Il distruttore è già meno importante

    Sostanzialmente dovrebbe compiere le operazioni inverse del costruttore ma crearlo per dereferenziare delle variabili (in un linguaggio provvisto di garbage collector) è esagerato; invece ha un senso se la classe apre uno o più file (o stream) con il proprio costruttore, utilizzando il distruttore ci si può assicurare che i file siano stati effettivamente chiusi

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da AlexKidd Visualizza messaggio
    Certo che deve avere un costruttore...
    Ma una classe astratta non può essere istanziata, ma solo ereditata, quindi a cosa serve il costruttore?
    Una classe astratta lascia l'implementazione alle classi figlie, perciò non può essere istanziata. Non credo che il costruttore serva a qualcosa.

  6. #6
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Ma una classe astratta non può essere istanziata, ma solo ereditata, quindi a cosa serve il costruttore?
    Una classe astratta lascia l'implementazione alle classi figlie, perciò non può essere istanziata. Non credo che il costruttore serva a qualcosa.
    Esempio (non ricordo perfettamente la sintassi PHP)
    Codice PHP:
    abstract class utente
    {
    private
    $nick
    abstract function Carica();

    public function
    __construct($nick){
    $this->nick = $nick
    }

    public function
    GetNick(){
    return
    $this->nick
    }

    }


    class
    UtenteForum extends Utente
    {
    public function
    Carica(){
    //carico l'utente getnick()
    }

    public function
    GetNumeroPost(){

    }

    }

    pippo = new UtenteForum("tanuzzo");

    //ma non posso fare
    pippo = new Utente("concetta");
    Ultima modifica di binarysun : 12-08-2009 alle ore 11.55.54
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  7. #7
    tryhere non è connesso AlterVistiano
    Data registrazione
    19-09-2007
    Messaggi
    757

    Predefinito

    Quindi confermato che il costruttore non ci va?

  8. #8
    L'avatar di AlexKidd
    AlexKidd non è connesso Altervistiano Junior
    Data registrazione
    09-02-2007
    Messaggi
    516

    Predefinito

    Citazione Originalmente inviato da tryhere Visualizza messaggio
    Quindi confermato che il costruttore non ci va?
    veramente ha appena dimostrato il contrario

    gabryhacker: quella che intendi tu non è una classe astratta ma una interfaccia, che potrebbe essere vista come una classe astratta dove tutti i metodi sono astratti ma è utilizzata per scopi diversi

  9. #9
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Citazione Originalmente inviato da tryhere Visualizza messaggio
    Quindi confermato che il costruttore non ci va?
    La calsse astratta è Utente, la classe vera e propria è UtenteForum che eredita da Utente.

    Probabilmente ti confonde il nome "costruttore".
    In realtà è una funzione come le altre che ha la particolarità di essere chiamata quando fai la new, tutto qua.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  10. #10
    Guest

    Predefinito

    Non mi ricordavo che il costruttore viene ereditato. Grazie del chiarimento.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •