Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Originariamente inviato da skidx
    Mi riferivo al fatto di dover saltare dei costruttori nella gerarchia.
    o fai due extends distinti, con gli stessi metodi per entrambi ma solo costruttori diversi (tecnicamente ridondante, sarebbero due classi identiche se non per costruttore) , oppure erediti tutto dalla classe che ti interessa e ti "appropri" del suo super costruttore scavalcando il genitore diretto.

    E' una situazione indubbiamente particolare o contorta, ma non del tutto insensata, imho


    [edit]
    "voglio le caratteristiche di B, ma per essere C, devo iniziare come A" ... il primo esempio saltato in mente per spiegare il concetto
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #12
    Se prendiamo uno tra i metodi classici usati con l'ereditarietà (non certamente l'unico), cioè quello secondo cui le classi in alto sono quelle generiche e scendendo nella gerarchia troviamo le varie specializzazioni, probabilmente se erediti da una classe che è troppo specializzata (ovvero il suo costruttore fa cose di cui tu non hai bisogno) c'è bisogno di un livello intermedio più generale e di una ramificazione.

    Questo appunto sulla teoria. Poi ognuno cerca di coniugarla secondo le proprie idee e esigenze.

  3. #13
    immagina 2 classi identiche ma che tramite le operazioni del costruttore diventano diverse per risultati o altro ... tu le duplicheresti facendole ereditare entrambe da A e sarebbe un modo pulito ma ridondante, io estenderei la classe definita B ma sfrutterei (qualora dovesse servirmi, ovvio) il super costruttore, quello di A.

    In pratica se volessi avere B e C uguali se non per un metodo, faccio prima con un override del metodo in C sull' extend di B piuttosto che riscrivere da zero C in modo identico a B ... e se C volesse un costruttore identico ad A, potrei scegliere di copiare ed incollare quello di A su C, oppure in modo "fast & dirty" scavalcare B e beccarmi A.

    Essendo questo possibile, non vedo cosa ci sia di male nel farlo, è counque una situazione atipica, questo senza ombra di dubbio


    altro esempio

    insieme N+, son tutti i numeri, ci sono i pari ed i dispari, la costruzione del numero assegna se questo è pari o dispari ...

    classe 2, estende 1, identici come insieme di N+, ma 2 è pari, il costruttore è differente ed il suo valore è parent + 1 ... poi c'è il 3, gli fai estendere 1 e riscrivi tutto quello che c'è in 2 oppure estendi 2 e sfrutti il costruttore di 1 ?

    [ mobbasta, se continuo con sti esempi idioti rischio di non capirci più niente ]
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #14
    Originariamente inviato da andr3a
    immagina 2 classi identiche ma che tramite le operazioni del costruttore diventano diverse per risultati o altro ... tu le duplicheresti facendole ereditare entrambe da A e sarebbe un modo pulito ma ridondante, io estenderei la classe definita B ma sfrutterei (qualora dovesse servirmi, ovvio) il super costruttore, quello di A.

    In pratica se volessi avere B e C uguali se non per un metodo, faccio prima con un override del metodo in C sull' extend di B piuttosto che riscrivere da zero C in modo identico a B ... e se C volesse un costruttore identico ad A, potrei scegliere di copiare ed incollare quello di A su C, oppure in modo "fast & dirty" scavalcare B e beccarmi A.

    Essendo questo possibile, non vedo cosa ci sia di male nel farlo
    Non c'è nulla di male andrea, ho detto che "io" preferisco strutture più lineari e pulite.

    Se B e C sono uguali tranne che per un metodo, ma C non è logicamente un discendente di B, io non lo farei ereditare da B, farei una classe intermedia Y che avrebbe tutti i metodi in comune, e erediterebbero entrambe da Y.
    Poi B sarebbe identico a Y, quindi zero codice, e C avrebbe solo il metodo che lo distingue.

    Non sto dicendo che il mio metodo è migliore o peggiore, ne sto semplicemente dicendo un altro, così da ampliare le opzioni di scelta.

  5. #15
    io sto parlando dando per scontato che lui abbia già trovato le classi pronte ed abbia avuto solo la necessità di implementare una classe diversa ed abbia scelto la via più veloce, non riscrivere le altre classi ma sfruttare le esistenti ... altrimenti sono d'accordo con te e anche volendo è difficile pensare ad una situazione da creare da zero dove sia veramente utile scavalcare un costruttore
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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