Lecture overview -- Keyboard shortcut: 'u'  Previous page: Polymorfi og dynamisk binding i Banken -- Keyboard shortcut: 'p'  Next page: Fordele ved dynamisk binding -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Play sound for this page -- Keyboard shortcut: 'y'  Page 32 : 41
Forelæsningsnoter i Objekt-orienteret Programmering
Nedarvning
Eksemplet uden dynamisk binding

Her viser vi eksemplet fra forrige side uden anvendelse af dynamisk binding

Alternativet til at anvende dynamisk binding er eksplicit diskrimination af objekter baseret på deres type

Det er generelt et sygdomstegn hvis man anvender instanceof operatoren i Java (for meget)

Diskrimination af objekter betyder at gøre forskel på objekter. Forskellen består i i hvilken operation der bliver kaldt når der sendes en bestemt besked.

class Bank4 {
 
   public static void main( String[] args ) {

     Konto[] konti = new Konto[5];

     konti[0] = new Konto("Peter");
     konti[1] = new CheckKonto("Jens");
     konti[2] = new CheckKonto("Børge");
     konti[3] = new CheckKonto("Carsten");
     konti[4] = new Konto("Kristen");

     konti[0].hæv(50);                      // Peter
     konti[1].indsæt(100.0);                // Jens
     konti[2].indsæt(200.0);                // Børge
     konti[3].indsæt(300.0);                // Carsten
     ((CheckKonto)konti[3]).hævCheck(500);  // Carsten
     konti[4].indsæt(400.0);                // Kristen

     for(int i = 0; i < 5; i = i + 1){
       if (konti[i] instanceof CheckKonto)
          ((CheckKonto)konti[i]).tilskrivRenteCheckKonto();
       else if (konti[i] instanceof Konto)
          konti[i].tilskrivRenteKonto();
     }

     for(int i = 0; i < 5; i = i + 1){
        System.out.println(konti[i]);
     }

   }
} // end Bank4

Bank programmet uden anvendelse af fordelene ved dynamisk binding.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Bank4.javaSuperklassen Konto med operationen tilskrivRenteKonto

Superklassen Konto med operationen tilskrivRenteKonto

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/Bank4.javaSubklassen CheckKonto med operationen tilskrivRenteCheckKonto

Subklassen CheckKonto med operationen tilskrivRenteCheckKonto