Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Dydnamic Dispatch

  1. #1
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76

    Dydnamic Dispatch

    date 2 gerarchie di classi:
    Ant extends Creature, Troll Extends Creature
    e
    AntPotion extends Potion,TrollPotion extends Potion
    rappresentare il fatto che diversi tipi di pozioni hanno diversi e etti sui diversi tipi
    di creature
    codice:
    class Potion {
          public void spray( Creature aCreature ) { . . . }
    . . . }
    e realizzando l'implementazione in modo che il metodo si comporti diversamente a seconda
    del tipo di pozione e della creatura.
    Completate l'implementazione della classe Potion e di tutte le classi della gerarchia in modo
    da ottenere l'eff etto desiderato, senza utilizzare il predicato instanceof (nessun testcase sui tipi di oggetto)

    esempio:
    codice:
    Potion container = null; 
    Creature aCreature = null; 
    // test Potion on different creatures 
    container = new Potion(); 
    aCreature = new Creature(); 
    container.spray( aCreature ); 
    aCreature = new Troll(); 
    container.spray( aCreature ); 
    aCreature = new Ant(); 
    container.spray( aCreature ); 
    // test TrollPotion on different creatures 
    container = new TrollPotion(); 
    aCreature = new Creature(); 
    container.spray( aCreature );
     aCreature = new Troll();
     container.spray( aCreature ); 
    aCreature = new Ant(); 
    container.spray( aCreature ); 
    // test AntPotion on different creatures 
    container = new AntPotion(); 
    aCreature = new Creature(); 
    container.spray( aCreature ); 
    aCreature = new Troll(); 
    container.spray( aCreature ); 
    aCreature = new Ant(); 
    container.spray( aCreature );
    produce l'output:

    Potion sprayed on Creature
    Potion sprayed on Troll
    Potion sprayed on Creature
    TrollPotion sprayed on Creature
    TrollPotion sprayed on Troll
    TrollPotion sprayed on Creature
    AntPotion sprayed on Creature
    AntPotion sprayed on Troll
    AntPotion sprayed on Creature

    ho definito
    codice:
    class Ant extends Creature {}
    class Troll extends Creature {}
    class AntPotion extends Potion{
           
            public void spray(Creature c){
                 //print AntPotion on Creature
            }
            public void spray(Ant a){
                 //print AntPotion on Ant
            }
    }
    class TrollPotion extends Potion{
            
            public void spray(Creature c){
                 //print TrollPotion on Creature
            }
            public void spray(Troll a){
                 //print TrollPotion on Troll
            }
    
    }
    ma l'output dato è:
    POZIONE on CREATURA
    POZIONE on CREATURA
    POZIONE on CREATURA
    TROLL POTION on CREATURA
    TROLL POTION on CREATURA
    TROLL POTION on CREATURA
    ANT POTION on CREATURA
    ANT POTION on CREATURA
    ANT POTION on CREATURA

    sembra che il tipo dinamico di Potion sia rilevato e quindi richiamato l'opportuno metodo della sotto classe,ma il Best Match di sparay con parametro Creature,Troll,Ant è comunque quello con Creature.
    Qualcuno è in grado di aiutarmi? Grazie

  2. #2
    Utente di HTML.it L'avatar di Tallid
    Registrato dal
    Jan 2009
    Messaggi
    76
    scusate ho postato nel posto sbagliato mi sono confuso, ho già ripostato nella sezione java

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Originariamente inviato da Tallid
    scusate ho postato nel posto sbagliato mi sono confuso, ho già ripostato nella sezione java
    In futuro, segnala la discussione al moderatore per lo spostamento, senza aprirne un duplicato. Chiudo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.