Koordinatengrafik mit Java
HomeAufgabenDruckenJava-Online

Serie 7: Vererbung und Polymorhie


1.

Hamburger mit Vererbung

Die Superklasse Hamburger zeichnet einen Standard-Hamburger mit einer Fleischfüllung.
Von der Klasse Hamburger können weitere Hamburger-Typen abgeleitet werden:
- Cheesburger
- Veggieburger
- Chickenburger
- BigMac usw.

 

 

 

 

   


 

Die Klasse Hamburger hat Instanzvariablen GPanel p und double price die als protected deklariert werden, damit alle Unterklassen auf sie zugreifen können. Die Methoden createBurger(), drawBead(), drawFilling() und getPreis sind so zu deklarieren, dass im GPanel eine einfache Hamburgerzeichnung entsteht.
Von der Klasse Hamburger können weitere Klassen abgeleitet werden:
Cheeseburger hat zusätzlich die Methode addCheese() und überschreibt die Methode drawFilling() der Superklasse, indem sie die bestehende Füllung mit der Methode addChesse() ergänzt.
Veggieburger überschreibt die Methode drawFilling() der Superklasse und zeichnet eine grüne Füllung.
Es können noch weitere Hamburgertypen (BigMac, BaconBurger usw.) entwickelt werden.
In jeder Unterklasse wird der Preis des Hamburgers entsprechend neu gesetzt.

Die Applikationsklasse HamburgerApp wird verwendet, um eine Hamburgerinstanz zu erstellen und im GPanel zu zeichen.

Der unten stehende Programmcode ist eine mögliche (unvollständige) Vorlage für die Klasse Hamburger und für die Applikationsklasse HamburgerApp.

 

// Hamburger.java

import ch.aplu.util.GPanel;
import java.awt.Color;

public class Hamburger
{
  protected GPanel p = new GPanel();
  protected double price = 5.0
 
  
  public Hamburger()
  {
    p.title("BurgerKing");
    p.window(-1010-1010);
  }
  
  public void createBurger() 
  {
    drawBread();
    drawFilling();
  }

  private void drawBread() 
  {

  }

  protected void drawFilling() 
  {

  }
    
  public void displayPrice() 
  {

  }
}


// HamburgerApp.java

public class HamburgerApp 
{
  public HamburgerApp()
  {
    Hamburger burger = new Hamburger();
    // Cheeseburger burger = new Cheeseburger();
    // Veggieburger burger = new Veggieburger();
    // BigMac burger = new BigMac();
    burger.createBurger();
    burger.getPrice();
  }
   
  public static void main(String[] args)
  {
    new HamburgerApp();
  }
}

 

 

2.

Hamburger mit Vererbung und Polymorphie

Übernehmen Sie alle Klassen aus der Aufgabe 3. Schreiben Sie eine neue Applikationsklasse TakeAway unter der Verwendung der Polymorphie:

Man deklariert eine Instanzvariable Burger vom Typ Hamburger. Mit einem InputDialog wird abgefragt, welchen Hamburgertyp man bestellen möchte. Je nach Wahl wird zur Laufzeit die Zuweisung

burger = new Hamburger()
oder
burger = new Cheeseburger()
oder
burger = new Veggieburger()

vorgenommen und dadurch der passende Hamburger zusammengestellt und der richtige Preis angezeigt..

 

 

 

 

. Ein Klassendesign unter Verwendung von abstrakten Klassen und Methoden, finden Sie unter www.aplu.ch/forum.